Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1008 → Rev 1085

/branches/v1.5-cisaille/src/org/tela_botanica/client/image/ImageMediateur.java
1,9 → 1,5
package org.tela_botanica.client.image;
 
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.IdVue;
import org.tela_botanica.client.interfaces.ListePaginable;
11,8 → 7,7
import org.tela_botanica.client.interfaces.VueListable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.ListeObservation;
import org.tela_botanica.client.observation.ObservationMediateur;
import org.tela_botanica.client.vues.ArbreMotsClesVue;
import org.tela_botanica.client.vues.FenetreGestionMotsCles;
import org.tela_botanica.client.vues.image.BarreOutilsVue;
import org.tela_botanica.client.vues.image.GalerieImageVue;
import org.tela_botanica.client.vues.image.ListeImageVue;
29,7 → 24,6
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
41,21 → 35,15
import com.gwtext.client.dd.DragSource;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Container;
import com.gwtext.client.widgets.DataView;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.TabPanel;
import com.gwtext.client.widgets.MessageBox.AlertCallback;
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
import com.gwtext.client.widgets.event.ContainerListener;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.event.PanelListener;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.event.TabPanelListenerAdapter;
import com.gwtext.client.widgets.event.WindowListenerAdapter;
import com.gwtext.client.widgets.grid.GridDragData;
import com.gwtext.client.widgets.layout.BorderLayout;
import com.gwtext.client.widgets.layout.BorderLayoutData;
import com.gwtext.client.widgets.layout.FitLayout;
import com.gwtext.client.widgets.menu.BaseItem;
import com.gwtext.client.widgets.menu.Item;
import com.gwtext.client.widgets.menu.Menu;
169,6 → 157,11
private BarreRechercheFiltreVue filtreCommentaires = null;
/**
* Fenetre modale de gestion des mots clés
*/
private FenetreGestionMotsCles fnMc = null;
/**
* Boolean indiquand si le médiateur a seulement été crée ou bien si tous
* les composants ont été crées
*/
343,6 → 336,8
}
});
creerPanneauGestionMotsCles();
// filtres.setCollapsed(false) ;
thisMediateur = this ;
633,8 → 628,14
public void obtenirMotsClesId(Rafraichissable r, String id) {
getIModele().obtenirMotsClesId(r, id);
}
 
public void obtenirMotsClesTexte(Rafraichissable r, String id) {
String[] texteMotsCles = getTexteMotsCles(getIModele().getMotsClesId(id));
r.rafraichir(texteMotsCles, false);
}
public String[] obtenirTexteMotsCles(String idsMotsCles[]) {
//TODO: devrait être dans le modèle
public String[] getTexteMotsCles(String idsMotsCles[]) {
String[] tableauMotsClesTexte = new String[idsMotsCles.length];
681,6 → 682,9
public void rafraichirArbreMotsCles(Tree arbreMC) {
metadonneesIptcExif.getPanneauMotsCles().rafraichir(arbreMC, false);
filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
if(fnMc != null) {
fnMc.rafraichir(arbreMC, false);
}
}
 
/**
724,7 → 728,8
obtenirObservationsAssociees() ;
}
obtenirMetadonnees(metadonneesIptcExif, imgNum);
obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), imgNum);
obtenirMotsClesId(fnMc, imgNum);
obtenirMotsClesTexte(metadonneesIptcExif.getPanneauMotsCles(), imgNum);
obtenirNote(metadonneesIptcExif.getNoteVue(), imgNum);
}
 
1049,12 → 1054,11
public void onItemClick(BaseItem item, EventObject e) {
if (item.equals(suppN)) {
if(Window.confirm("Êtes vous sur de vouloir supprimer ce mot clé ?")) {
getMetadonneesIptcExif().getPanneauMotsCles()
.supprimerNoeud(n);
fnMc.supprimerNoeud(n);
}
}
if (item.equals(ajoutN)) {
getMetadonneesIptcExif().getPanneauMotsCles().ajouterNoeud(
fnMc.ajouterNoeud(
n);
}
}
1092,7 → 1096,10
public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
 
String[] ids = getGalerieImage().getIdSelectionnees();
getIModele().mettreAjourMotsCles(ids, motsClesEnCours, arbreMC);
if(ids.length > 0) {
getIModele().mettreAjourMotsCles(ids, motsClesEnCours, arbreMC);
obtenirMotsClesTexte(metadonneesIptcExif.getPanneauMotsCles(), ids[ids.length - 1]);
}
 
}
 
1107,8 → 1114,8
*/
public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
getIModele().ajouterMotCleDansArbre(n, arbreMC);
filtres.getMotsClesFiltre().rafraichir(n, false);
 
filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
mettreAJourListeMotsClesAffiches();
}
 
/**
1121,10 → 1128,9
* le nouvel arbre de mots clés à mettre à jour
*/
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
 
getIModele().supprimerMotCleDansArbre(n, arbreMC);
filtres.getMotsClesFiltre().rafraichir(n.getId(), false);
 
filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
mettreAJourListeMotsClesAffiches();
}
 
/**
1137,10 → 1143,10
* le nouvel arbre de mots clés à mettre à jour
*/
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
 
getIModele().modifierMotCleDansArbre(n, arbreMC);
filtres.getMotsClesFiltre().rafraichir(n, false);
 
getIModele().mettreAjourMotsClesId(n.getText(), n.getId());
filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
mettreAJourListeMotsClesAffiches();
}
 
/**
1153,18 → 1159,23
* le nouvel arbre de mots clés à mettre à jour
*/
public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
 
getIModele().deplacerMotCleDansArbre(n, arbreMC);
filtres.getMotsClesFiltre().rafraichir(n, false);
filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
mettreAJourListeMotsClesAffiches();
}
public void mettreAJourListeMotsClesAffiches() {
String[] ids = getGalerieImage().getIdSelectionnees();
if(ids.length > 0) {
obtenirMotsClesTexte(metadonneesIptcExif.getPanneauMotsCles(), ids[ids.length - 1]);
}
}
 
/**
* initialise les mots clés cochés par rapport aux images sélectionnées
*/
public void initialiserMotsCleCoches() {
 
obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(),
getGalerieImage().getIdSelectionnees()[0]);
obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(),getGalerieImage().getIdSelectionnees()[0]);
}
 
/**
1647,8 → 1658,7
filtres.getArbreDateRecherche().initialiser();
obtenirPhotoGalerie(getGalerieImage());
panneauPrincipalImage.purgeListeners() ;
}
}
}) ;
}
}
1741,5 → 1751,63
public void obtenirDatesImages(Rafraichissable r) {
iModele.obtenirDatesImages(r);
}
public void creerPanneauGestionMotsCles() {
fnMc = new FenetreGestionMotsCles() {
@Override
protected void surSuppressionMotCle(TreeNode node, Tree arbre) {
supprimerMotCleDansArbre(node, arbre);
}
@Override
protected void surDeplacementMotCle(TreeNode node, Tree arbre) {
deplacerMotCleDansArbre(node, arbre);
}
@Override
protected void surClicValider(String chaineMotsCles, Tree arbre) {
mettreAjourMotsCles(chaineMotsCles, arbre);
}
@Override
protected void surChangementTexte(TreeNode node, Tree arbre) {
modifierMotCleDansArbre(node, arbre);
}
@Override
protected void surAjoutMotCle(TreeNode node, Tree arbre) {
ajouterMotCleDansArbre(node, arbre);
}
@Override
protected void surAffichageMenuContextuel(TreeNode node, EventObject e,
TreeEditor te) {
montrerContextMenuArbre(node, e, te);
}
@Override
protected void demanderArbreMotsCles(Rafraichissable r) {
ImageMediateur.this.obtenirArbreMotsCles(r);
}
};
fnMc.setModal(true);
fnMc.setHeight(400);
fnMc.setWidth(200);
fnMc.addListener(new WindowListenerAdapter() {
 
public void onClose(Panel panel) {
}
 
});
//fnMc.activerBoutonValider(selection);
}
 
public void afficherFenetreGestionMotsCles() {
fnMc.show();
}
 
}
/branches/v1.5-cisaille/src/org/tela_botanica/client/image/ImageModele.java
1,7 → 1,9
package org.tela_botanica.client.image;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
19,9 → 21,11
import org.tela_botanica.client.modeles.NombreImageAsynchroneDAO;
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
 
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.Window;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.IntegerFieldDef;
276,13 → 280,19
* l'identifiant de l'image
*/
public void obtenirMotsClesId(Rafraichissable r, String id) {
ImageCarnet im = cacheImage.get(id);
String motsClesId = im.getMotsCles();
String[] motsClesIdTab = motsClesId.split(",");
 
String[] motsClesIdTab = getMotsClesId(id);
r.rafraichir(motsClesIdTab, false);
}
public String[] getMotsClesId(String idImage) {
ImageCarnet im = cacheImage.get(idImage);
String motsClesId = im.getMotsCles();
String[] motsClesIdTab = motsClesId.split(",");
return motsClesIdTab;
}
/**
* Va chercher le nom du mot clé associé à un id dans le cache local
*
595,15 → 605,44
*/
public void mettreAjourMotsCles(String[] ids, String motsClesEnCours,
com.gwtext.client.data.Tree arbreMC) {
final List<String> erreurs = new ArrayList<String>();
for (int i = 0; i < ids.length; i++) {
final int l = i;
if (cacheImage.containsKey(ids[i])) {
ImageCarnet ic = (ImageCarnet) cacheImage.get(ids[i]);
final ImageCarnet ic = (ImageCarnet) cacheImage.get(ids[i]);
ic.mettreAjourMotsCles(motsClesEnCours);
 
ImageAsynchroneDAO imgDao = new ImageAsynchroneDAO(this);
imgDao.SynchroniserMotsClesImageBaseDeDonnees(ic);
imgDao.synchroniserMotsClesImageBaseDeDonnees(ic, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
// TODO: les messages ne devraient pas être affichés ici
// mais l'architecture par très malléable complique les choses
if (response.getText().equals("OK")) {
 
} else {
erreurs.add(response.getText());
}
}
@Override
public void onError(Request request, Throwable exception) {
}
});
}
}
if(erreurs.isEmpty() && ids.length > 0) {
final ImageCarnet ic = (ImageCarnet) cacheImage.get(ids[0]);
com.google.gwt.user.client.Window
.alert("Les mots clés suivants ont bien été appliqués : "+renvoyerChaineMotClesTexte(ic));
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données, le serveur a répondu les erreurs suivantes "+erreurs.get(0));
}
 
rafraichirArbreMotsCles(arbreMC);
}
654,7 → 693,8
parentId = "racine";
}
 
rafraichirArbreMotsCles(arbreMC);
rafraichirArbreMotsCles(arbreMC);
mettreAjourMotsClesId(motCle, id);
 
String nouveauMotCle = "&identifiant=" + getIdentifiant() + "&motcle="
+ motCle + "&id=" + id + "&parent=" + parentId;