Rev 27 | Rev 30 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;import java.util.HashMap;import org.tela_botanica.client.image.ImageMediateur;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;import com.google.gwt.core.client.JavaScriptObject;import com.google.gwt.user.client.Window;import com.gwtext.client.core.EventObject;import com.gwtext.client.core.ExtElement;import com.gwtext.client.data.Node;import com.gwtext.client.data.NodeTraversalCallback;import com.gwtext.client.data.Tree;import com.gwtext.client.dd.DD;import com.gwtext.client.dd.DragData;import com.gwtext.client.dd.DragDrop;import com.gwtext.client.widgets.BoxComponent;import com.gwtext.client.widgets.Button;import com.gwtext.client.widgets.Component;import com.gwtext.client.widgets.Container;import com.gwtext.client.widgets.Editor;import com.gwtext.client.widgets.Panel;import com.gwtext.client.widgets.event.ButtonListener;import com.gwtext.client.widgets.event.ButtonListenerAdapter;import com.gwtext.client.widgets.event.EditorListener;import com.gwtext.client.widgets.event.EditorListenerAdapter;import com.gwtext.client.widgets.form.Field;import com.gwtext.client.widgets.form.TextField;import com.gwtext.client.widgets.layout.RowLayout;import com.gwtext.client.widgets.layout.RowLayoutData;import com.gwtext.client.widgets.menu.Menu;import com.gwtext.client.widgets.tree.DropNodeCallback;import com.gwtext.client.widgets.tree.TreeEditor;import com.gwtext.client.widgets.tree.TreeNode;import com.gwtext.client.widgets.tree.TreePanel;import com.gwtext.client.widgets.tree.event.TreePanelListener;import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;public class ArbreMotsClesVue extends Panel implements Rafraichissable {private ImageMediateur iMediateur = null ;private TreePanel arbreMotsCles = null ;private TreeEditor te = null ;private TextField tfEdit = null ;private Button valider = null ;private String motsClesEnCours = "" ;private boolean ajoutNoeud = false ;private boolean modifNoeud = false ;public ArbreMotsClesVue(ImageMediateur im){super("Mots clés") ;this.setLayout(new RowLayout());iMediateur = im ;arbreMotsCles = new TreePanel() ;arbreMotsCles.setEnableDD(true) ;TreeNode root = new TreeNode("Mots clés") ;root.setId("racine") ;String[] usObject = {"Mots clés" , "racine" } ;root.setUserObject(usObject) ;arbreMotsCles.setRootNode(root) ;arbreMotsCles.setRootVisible(true) ;arbreMotsCles.getRootNode().setIcon("tela.png") ;tfEdit = new TextField() ;te = new TreeEditor(arbreMotsCles,tfEdit) ;valider = new Button("Appliquer") ;arbreMotsCles.add(te) ;this.add(arbreMotsCles,new RowLayoutData("90%")) ;this.add(valider,new RowLayoutData("10%")) ;ajouterListeners() ;}private ImageMediateur GetIMediateur() {return iMediateur ;}/*** @return the arbreMotsCles*/public TreePanel getArbreMotsCles() {return arbreMotsCles;}/*** @return the te*/public TreeEditor getTe() {return te;}/*** @return the tfEdit*/public TextField getTfEdit() {return tfEdit;}public void ajouterListeners(){arbreMotsCles.addListener(new TreePanelListenerAdapter() {public void onClick(TreeNode node, EventObject e) {e.stopEvent() ;gererClicNoeud(node);}public void onContextMenu(TreeNode node, EventObject e) {e.stopEvent() ;GetIMediateur().montrerContextMenuArbre(node, e , getTe()) ;}public void onDblClick(TreeNode node, EventObject e) {modifNoeud = true ;te.startEdit(node);}public void onTextChange(TreeNode node, String text, String oldText) {TreeNode nd = node ;String[] usObject = new String[2] ;usObject[0] = text ;usObject[1] = ((String[])nd.getUserObject())[1] ;nd.setUserObject(usObject) ;if(ajoutNoeud){GetIMediateur().ajouterMotCleDansArbre(nd,getArbreMotsCles().getTree()) ;ajoutNoeud = false ;}else{modifNoeud = false ;GetIMediateur().modifierMotCleDansArbre(nd,getArbreMotsCles().getTree()) ;}}public void onMoveNode(Tree tree, TreeNode node, TreeNode oldParent, TreeNode newParent,int index){GetIMediateur().deplacerMotCleDansArbre(node, getArbreMotsCles().getTree()) ;}public void onCheckChange(TreeNode node, boolean checked) {if(checked){node.bubble(new NodeTraversalCallback() {public boolean execute(Node node){TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;tn.getUI().toggleCheck(true) ;return true ;}}) ;}}}) ;valider.addListener(new ButtonListenerAdapter() {public void onClick(Button button, EventObject e) {motsClesEnCours = "" ;getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {public boolean execute(Node node) {TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;String[] usObject = (String[])tn.getUserObject() ;GetIMediateur().mettreAjourMotsClesId(usObject[0],usObject[1]) ;if(tn.getUI().isChecked()){motsClesEnCours += usObject[1]+"," ;}return true ;}});GetIMediateur().mettreAjourMotsCles(motsClesEnCours,arbreMotsCles.getTree()) ;}}) ;}public void supprimerNoeud(TreeNode n){n.getParentNode().removeChild(n);n.destroy() ;GetIMediateur().supprimerMotCleDansArbre(n, arbreMotsCles.getTree()) ;}public void ajouterNoeud(TreeNode parent){ajoutNoeud = true ;TreeNode nd = new TreeNode("");nd.setIcon("tela.png") ;nd.setChecked(true);String[] usObject = new String[2] ;usObject[0] = "" ;usObject[1] = Integer.toString(nd.hashCode()) ;nd.setId(usObject[1]) ;nd.setUserObject(usObject) ;parent.appendChild(nd);parent.expand();te.startEdit(nd);}public void gererClicNoeud(TreeNode node){if(node.getUI().isChecked()){node.getUI().toggleCheck(false) ;}else{node.getUI().toggleCheck(true) ;}}public void cocherMotsCles(final String[] motsClesIds){getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {public boolean execute(Node node) {for(int i = 0 ; i < motsClesIds.length ; i++){String usObject[] = (String[])node.getUserObject() ;String nodeId = usObject[1] ;getArbreMotsCles().getNodeById(node.getId()).getUI().toggleCheck(false) ;if(nodeId.equals(motsClesIds[i])){getArbreMotsCles().getNodeById(nodeId).getUI().toggleCheck(true) ;return true ;}}return true;}}) ;}public void rafraichir(Object nouvelleDonnees,boolean repandreRafraichissement) {if(nouvelleDonnees instanceof Tree){Tree nouvelArbre = (Tree)nouvelleDonnees ;getArbreMotsCles().setRootNode(nouvelArbre.getRootNode()) ;}if(nouvelleDonnees instanceof String[]){String[] motsClesIds = (String[])nouvelleDonnees ;cocherMotsCles(motsClesIds) ;}}}