Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 677 → Rev 678

/trunk/src/org/tela_botanica/client/vues/ArbreMotsClesFiltreVue.java
5,21 → 5,20
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.observation.ObservationMediateur;
 
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.data.Node;
import com.gwtext.client.data.NodeTraversalCallback;
import com.gwtext.client.data.Tree;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.layout.RowLayout;
import com.gwtext.client.widgets.layout.RowLayoutData;
import com.gwtext.client.widgets.tree.MultiSelectionModel;
import com.gwtext.client.widgets.tree.TreeNode;
import com.gwtext.client.widgets.tree.TreePanel;
import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
 
/**
* fenêtre de recherche affichant l'arbre des mots clés en lecture et un bouton
92,8 → 91,6
super();
iMediateur = im;
this.prefixe += prefixeImg;
Label labelRecherche = new Label("Par mots clés :");
add(labelRecherche);
initialiserPanel();
}
120,6 → 117,9
arbreMotsCles = new TreePanel();
arbreMotsCles.setId("x-view-tree-filter"+prefixe);
 
MultiSelectionModel msModel = new MultiSelectionModel();
arbreMotsCles.setSelectionModel(msModel);
// on crée une racine pour l'arbre
TreeNode root = new TreeNode("Tags");
root.setId("racine"+prefixe);
177,22 → 177,7
 
// on met en forme le layout
((Panel) component).add(arbreMotsCles,new RowLayoutData("80%"));
if(iMediateur == null) {
Panel p = new Panel();
p.setBorder(false);
Button valider = new Button("Rechercher") ;
valider.addListener(new ButtonListenerAdapter() {
 
public void onClick(Button button, EventObject e) {
getOMediateur().obtenirNombreObservation();
}
});
p.add(valider,new RowLayoutData());
add(p);
}
 
// on ajoute les listeners d'évenements
ajouterListeners();
//obtenirArbreMotsCles();
205,7 → 190,40
* ajoute les listeners pour les boutons et le cochage des mots clés
*/
private void ajouterListeners() {
arbreMotsCles.addListener(new TreePanelListenerAdapter() {
// gestion du clic sur un noeud
public void onClick(TreeNode node, EventObject e) {
 
e.stopEvent();
boolean multi = false;
if(e.hasModifier()) {
multi = true;
}
gererClicNoeud(node,multi);
}
});
}
/**
* Fonction de gestion sur le clic sur le noeud
*
* @param node
*/
public void gererClicNoeud(TreeNode node, boolean multi) {
if(!arbreInitialise) {
obtenirArbreMotsCles();
} else {
if(node.equals(arbreMotsCles.getRootNode())) {
arbreMotsCles.getSelectionModel().clearSelections();
} else {
((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi);
}
filtreModifie = true;
iMediateur.obtenirPhotoGalerie();
}
}
 
/**
245,50 → 263,6
filtreModifie = false;
doLayout() ;
}
 
if (nouvelleDonnees instanceof TreeNode) {
TreeNode nd = (TreeNode) nouvelleDonnees;
 
// si le noeud n'existe pas déjà c'est un ajout
if (arbreMotsCles.getTree().getNodeById(nd.getId() +prefixe) == null) {
// donc on ne fait rien de spécial
}
// si le noeud existe déjà c'est un déplacement
else {
// alors on supprime d'abord le noeud concerné
arbreMotsCles.getTree().getNodeById(nd.getId() +prefixe)
.remove();
}
 
// on chercher le père du nouveau noeud
Node ndPereOriginal = nd.getParentNode();
 
String idPereFiltre = ndPereOriginal.getId() +prefixe;
 
String[] usObj = (String[]) nd.getUserObject();
TreeNode child = new TreeNode(usObj[0]);
child.setId(usObj[1] +prefixe);
child.setChecked(false);
child.setUserObject(usObj);
arbreMotsCles.getNodeById(idPereFiltre).appendChild(child);
 
// et on ajoute le nouveau noeud à son père
copierFilsNoeud(nd, child);
this.doLayout();
}
 
// si on reçoit une string
if (nouvelleDonnees instanceof String) {
String idSupp = (String) nouvelleDonnees +prefixe;
// c'est une suppression et si le noeud existe bien
if (arbreMotsCles.getTree().getNodeById(idSupp) != null) {
// on le supprime
arbreMotsCles.getTree().getNodeById(idSupp).remove();
}
}
 
}
 
/**
327,20 → 301,30
* @return un tableau contenant le nom du champ à filtrer et sa valeur
*/
public String[] renvoyerValeursAFiltrer() {
 
valider();
String[] valeursFiltrees = new String[2] ;
valeursFiltrees[1] = motsClesEncours;
if(iMediateur != null) {
valeursFiltrees[0] = "ci_meta_mots_cles";
String val = "";
TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes();
for(int i = 0; i< noeuds.length ; i++) {
if(noeuds[i].getDepth() > 0) {
String[] userObj = (String[])noeuds[i].getUserObject();
String idMotCle = noeuds[i].getId();
if(userObj != null && userObj[1] != null) {
idMotCle = userObj[1];
}
val += ";"+idMotCle;
}
}
else
{
valeursFiltrees[0] = "mots_cles";
}
val = val.replaceFirst(";", "");
String[] valeursFiltres = {"ci_meta_mots_cles", val};
 
return valeursFiltrees;
return valeursFiltres;
}
 
/**
361,7 → 345,6
String[] usObj = (String[]) ndNodeFils[i].getUserObject();
TreeNode child = new TreeNode(usObj[0]);
child.setId(usObj[1] +prefixe);
child.setChecked(false);
child.setUserObject(usObj);
ndPereCopie.appendChild(child);
 
406,32 → 389,9
if (estInstancie) {
// on vide les mots clés en cours
motsClesEncours = "";
// pour chaque noeud à partir de la racine
getArbreMotsCles().getRootNode().cascade(
new NodeTraversalCallback() {
 
// on éxécute une fonction
public boolean execute(Node node) {
 
// on récupère le mot clé associé au noeud et ses
// infos
TreeNode tn = getArbreMotsCles().getNodeById(
node.getId());
 
String[] usObject = (String[]) tn.getUserObject();
mettreAJourMotsCles(usObject[0], usObject[1]);
 
if (tn.getUI().isChecked()) {
// et les concatène à la string des mots clés en
// cours
motsClesEncours += usObject[1] + ",";
}
 
return true;
}
 
});
 
// on suppose que le filtre a change
filtreModifie = true;
}
477,4 → 437,9
}
}
 
public void viderFiltre() {
motsClesEncours = "";
arbreMotsCles.getSelectionModel().clearSelections();
}
 
}