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); |
178,21 → 178,6 |
// 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,10 → 190,43 |
* 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(); |
} |
} |
|
/** |
* Méthode héritée de l'interface rafraichissable |
*/ |
public void rafraichir(Object nouvelleDonnees, |
245,52 → 263,8 |
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(); |
} |
|
} |
|
} |
|
/** |
* Accesseur pour le médiateur |
* |
328,19 → 302,29 |
*/ |
public String[] renvoyerValeursAFiltrer() { |
|
valider(); |
String[] valeursFiltrees = new String[2] ; |
valeursFiltrees[1] = motsClesEncours; |
String val = ""; |
|
if(iMediateur != null) { |
valeursFiltrees[0] = "ci_meta_mots_cles"; |
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]; |
} |
else |
{ |
valeursFiltrees[0] = "mots_cles"; |
|
val += ";"+idMotCle; |
} |
} |
|
return valeursFiltrees; |
val = val.replaceFirst(";", ""); |
|
String[] valeursFiltres = {"ci_meta_mots_cles", val}; |
|
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(); |
} |
|
} |