New file |
0,0 → 1,256 |
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.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.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.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 = "" ; |
|
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("OK") ; |
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) { |
|
gererClicNoeud(node); |
} |
|
|
public void onContextMenu(TreeNode node, EventObject e) { |
|
e.stopEvent() ; |
GetIMediateur().montrerContextMenuArbre(node, e , getTe()) ; |
|
} |
|
public void onDblClick(TreeNode node, EventObject e) { |
|
te.startEdit(node); |
} |
|
public void onTextChange(TreeNode node, String text, String oldText) { |
|
String[] usObject = new String[2] ; |
usObject[0] = text ; |
usObject[1] = ((String[])node.getUserObject())[1] ; |
node.setUserObject(usObject) ; |
|
} |
|
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) ; |
} |
}) ; |
|
} |
|
public void supprimerNoeud(TreeNode n) |
{ |
n.getParentNode().removeChild(n); |
n.destroy() ; |
} |
|
public void ajouterNoeud(TreeNode parent) |
{ |
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.setChecked(false) ; |
} |
else |
{ |
node.setChecked(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 repandreRaffraichissement) { |
|
if(nouvelleDonnees instanceof Tree) |
{ |
Tree nouvelArbre = (Tree)nouvelleDonnees ; |
getArbreMotsCles().setRootNode(nouvelArbre.getRootNode()) ; |
} |
|
if(nouvelleDonnees instanceof String[]) |
{ |
String[] motsClesIds = (String[])nouvelleDonnees ; |
cocherMotsCles(motsClesIds) ; |
} |
|
} |
|
} |