6,6 → 6,7 |
|
import com.google.gwt.core.client.GWT; |
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.i18n.client.NumberFormat; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.KeyboardListener; |
import com.gwtext.client.core.EventObject; |
30,6 → 31,10 |
import com.gwtext.client.widgets.grid.GridDragData; |
import com.gwtext.client.widgets.grid.GridView; |
import com.gwtext.client.widgets.layout.VerticalLayout; |
import com.gwtext.client.widgets.menu.BaseItem; |
import com.gwtext.client.widgets.menu.Item; |
import com.gwtext.client.widgets.menu.Menu; |
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter; |
import com.gwtext.client.widgets.tree.DropNodeCallback; |
import com.gwtext.client.widgets.tree.MultiSelectionModel; |
import com.gwtext.client.widgets.tree.TreeDragData; |
122,7 → 127,7 |
*/ |
public ArbreMotsClesObservationVue(ObservationMediateur om) { |
// on crée le panel |
super("Mots clés"); |
super("Projets"); |
|
this.setLayout(new VerticalLayout()); |
oMediateur = om; |
160,9 → 165,9 |
arbreMotsCles.setSelectionModel(msModel); |
|
// on crée une racine pour l'arbre |
TreeNode root = new TreeNode("Tags"); |
TreeNode root = new TreeNode("Projets"); |
root.setId("racine_obs"); |
String[] usObject = { "Mots clés", "racine_obs" }; |
String[] usObject = { "Projets", "racine_obs" }; |
root.setUserObject(usObject); |
root.setExpandable(true); |
|
171,7 → 176,7 |
// on crée l'éditeur pour l'arbre |
tfEdit = new TextField(); |
te = new TreeEditor(arbreMotsCles, tfEdit); |
ajouterMotCle = new Button("Nouveau mot clé"); |
ajouterMotCle = new Button("Ajouter un projet"); |
arbreMotsCles.add(te); |
|
arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() { |
268,7 → 273,7 |
public void onContextMenu(TreeNode node, EventObject e) { |
|
e.stopEvent(); |
getOMediateur().montrerContextMenuArbre(node, e, getTe()); |
montrerContextMenuArbre(node, e, getTe()); |
|
} |
|
328,24 → 333,19 |
TreeNode dropNode, |
DropNodeCallback dropNodeCallback) { |
|
if(dragData instanceof GridDragData) { |
|
Record[] obsALier = ((GridDragData)dragData).getSelections(); |
if(dragData instanceof TreeDragData) { |
return true; |
} |
|
String idObsALier[] = new String[obsALier.length]; |
String idMotCle = ((String[])target.getUserObject())[1]; |
String idObsALierString = ""; |
String idMotCle = ((String[])target.getUserObject())[1]; |
|
if(oMediateur.gererDDObsSurMotCle(target, dragData)) { |
|
for(int i = 0; i < obsALier.length; i++) { |
idObsALierString += obsALier[i].getAsString("ordre_observation")+", "; |
idObsALier[i] = obsALier[i].getAsString("ordre_observation"); |
} |
|
if(Window.confirm("lier les observations "+idObsALierString+" au mot clé "+target.getText()+" ?")) { |
oMediateur.mettreAjourMotsCles(idMotCle, idObsALier); |
} |
} |
return true; |
cocherMotCle(idMotCle); |
return true; |
} |
|
return false; |
} |
|
|
352,6 → 352,7 |
public void onNodeDrop(TreePanel treePanel, |
TreeNode target, DragData dragData, |
String point, DragDrop source, TreeNode dropNode) { |
|
|
} |
|
363,7 → 364,15 |
// lors du clic |
public void onClick(Button button, EventObject e) { |
|
ajouterNoeud(arbreMotsCles.getRootNode()); |
TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes(); |
TreeNode noeudAjout; |
if(noeuds.length > 0) { |
noeudAjout = noeuds[noeuds.length - 1]; |
} else { |
noeudAjout = arbreMotsCles.getRootNode(); |
} |
|
ajouterNoeud(noeudAjout); |
|
} |
}); |
376,7 → 385,6 |
*/ |
private void configDragAndDrop() |
{ |
|
// on fabrique la nouvelle configuration |
// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup |
arbreMotsCles.setDdGroup("ObsMotsClesGroup"); |
385,19 → 393,6 |
arbreMotsCles.setEnableDrop(true); |
DropTargetConfig dtc = new DropTargetConfig(); |
dtc.setdDdGroup("ObsMotsClesGroup"); |
|
DropTarget tg = new DropTarget(livue, dtc) { |
public boolean notifyDrop(DragSource source, EventObject e, |
DragData data) { |
|
return true; |
} |
|
public String notifyOver(DragSource source, EventObject e, |
DragData data) { |
return "x-dd-drop-ok"; |
} |
}; |
} |
|
/** |
418,13 → 413,16 |
public void supprimerNoeud(TreeNode n) { |
// si ça n'est pas la racine (qu'on ne peut pas supprimer) |
if (!n.getId().equals(getArbreMotsCles().getRootNode().getId())) { |
// on détache le noeud et on le détruit |
n.getParentNode().removeChild(n); |
n.destroy(); |
// puis on en notifie le médiateur en lui passant le noeud supprimé |
// et l'arbre |
getOMediateur() |
.supprimerMotCleDansArbre(n, arbreMotsCles.getTree()); |
|
if(Window.confirm("Etes vous sur de vouloir supprimer ce projet ?")) { |
// on détache le noeud et on le détruit |
n.getParentNode().removeChild(n); |
n.destroy(); |
// puis on en notifie le médiateur en lui passant le noeud supprimé |
// et l'arbre |
getOMediateur() |
.supprimerMotCleDansArbre(n, arbreMotsCles.getTree()); |
} |
} else { |
// si l'utilisateur tente de supprimer la racine, on l'avertit de |
// son erreur |
471,9 → 469,14 |
*/ |
public void gererClicNoeud(TreeNode node, boolean multi) { |
|
//((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi); |
motsClesEnCours = node.getId(); |
oMediateur.obtenirNombreObservation(); |
if(!arbreCharge) { |
obtenirArbreMotsCles(); |
} else { |
if(multi) { |
} |
((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi); |
oMediateur.obtenirNombreObservation(); |
} |
} |
|
/** |
492,9 → 495,6 |
|
// pour chaque noeud |
public boolean execute(Node node) { |
|
//getArbreMotsCles().getNodeById(node.getId()) |
//.getUI().toggleCheck(false); |
|
// on parcourt le tableau des mots clés |
for (int i = 0; i < motsClesIds.length; i++) { |
505,12 → 505,20 |
String nodeId = usObject[1]; |
|
if (nodeId.equals(motsClesIds[i])) { |
//getArbreMotsCles().getNodeById(nodeId+"_obs") |
// .getUI().toggleCheck(true); |
|
getArbreMotsCles().getNodeById(nodeId) |
.getUI().getTextEl().addClassName("x-tree-node-text-kw"); |
|
return true; |
} |
} |
|
if((getArbreMotsCles().getNodeById(node.getId()).getUI().getTextEl()) != null) { |
getArbreMotsCles().getNodeById(node.getId()) |
.getUI().getTextEl().removeClassName("x-tree-node-text-kw"); |
} |
|
|
// et on passe au suivant |
return true; |
} |
521,6 → 529,36 |
motsClesEnAttente = motsClesIds ; |
} |
} |
|
public void cocherMotCle(String motCleId) { |
getArbreMotsCles().getNodeById(motCleId) |
.getUI().getTextEl().addClassName("x-tree-node-text-kw"); |
} |
|
public void initialiser() { |
|
arbreCharge = false ; |
motsClesEnCours = ""; |
arbreMotsCles.collapseAll(); |
// on vide l'ancien arbre |
Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes(); |
for (int i = 0; i < rootChild.length; i++) { |
|
rootChild[i].remove(); |
} |
|
arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() { |
|
public void onExpand(Node node) { |
if(!arbreCharge) |
{ |
obtenirArbreMotsCles() ; |
arbreCharge = true ; |
} |
} |
|
}) ; |
} |
|
/** |
* Méthode héritée de l'interface rafraichissable |
552,28 → 590,31 |
arbreCharge = true; |
} |
|
/* |
|
// s'il y a des mots clés en attente (lors du premier rendering) |
if (motsCleInitialises == false && motsClesEnAttente != null) { |
// on les coche |
// cocherMotsCles(motsClesEnAttente) ; |
cocherMotsCles(motsClesEnAttente) ; |
motsCleInitialises = true; |
} |
|
if(motsClesEnAttente.length > 0) { |
cocherMotsCles(motsClesEnAttente); |
}*/ |
cocherMotsCles(motsClesEnAttente); |
} |
} |
|
// Si on reçoit un tableau de String (cas ou l'on séléectionne une |
// nouvelle obs) |
if (nouvelleDonnees instanceof String[]) { |
if (nouvelleDonnees instanceof String) { |
|
String chaineMc = (String)nouvelleDonnees; |
String[] motsClesIds = chaineMc.split(";"); |
|
// et que l'arbre est instancié |
if (arbreCharge) { |
// le tableau de String contient les id des mots clés associés à |
// l'image |
// on coche les mots clés contenu dans le tableau |
String[] motsClesIds = (String[]) nouvelleDonnees; |
cocherMotsCles(motsClesIds); |
|
} |
580,13 → 621,15 |
// si l'arbre n'est pas encore instancié on met les mots clés en |
// attente |
else { |
motsClesEnAttente = (String[]) nouvelleDonnees; |
motsClesEnAttente = (String[]) motsClesIds; |
} |
} |
} |
|
private String genererIdMotCle(TreeNode nd) { |
return "" + (nd.hashCode() + (Math.random() * 10000)); |
|
double IdMC = (nd.hashCode() + (Math.random() * 10000)); |
return ""+IdMC; |
} |
|
/** |
620,6 → 663,32 |
|
public void raz() { |
|
arbreCharge = false ; |
arbreMotsCles.collapseAll(); |
arbreMotsCles.clear() ; |
|
// on crée une racine pour l'arbre |
TreeNode root = new TreeNode("Projets"); |
root.setId("racine_obs"); |
String[] usObject = { "Projets", "racine_obs" }; |
root.setUserObject(usObject); |
root.setExpandable(true); |
|
arbreMotsCles.setRootNode(root); |
|
arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() { |
|
public void onExpand(Node node) { |
if(!arbreCharge) |
{ |
obtenirArbreMotsCles() ; |
arbreCharge = true ; |
} |
} |
|
}) ; |
|
motsClesEnCours = ""; |
} |
|
public boolean renvoyerEtatFiltre() { |
634,12 → 703,20 |
|
public String[] renvoyerValeursAFiltrer() { |
|
String val = motsClesEnCours; |
String val = ""; |
|
TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes(); |
|
for(int i = 0; i< noeuds.length ; i++) { |
if(noeuds[i].getDepth() > 0) { |
val += ";"+noeuds[i].getId(); |
} |
} |
|
val = val.replaceFirst(";", ""); |
|
String[] valeursFiltres = {"mots_cles", val}; |
|
GWT.log(val); |
|
return valeursFiltres; |
} |
|
647,4 → 724,31 |
// TODO Auto-generated method stub |
|
} |
|
|
public void montrerContextMenuArbre(final TreeNode n, EventObject e, |
TreeEditor te) { |
Menu mn = new Menu(); |
final com.gwtext.client.widgets.menu.Item ajoutN = new Item( |
"Ajouter un projet"); |
final com.gwtext.client.widgets.menu.Item suppN = new Item( |
"Supprimer projet"); |
|
mn.addItem(ajoutN); |
mn.addItem(suppN); |
|
mn.addListener(new MenuListenerAdapter() { |
|
public void onItemClick(BaseItem item, EventObject e) { |
if (item.equals(suppN)) { |
supprimerNoeud(n); |
} |
if (item.equals(ajoutN)) { |
ajouterNoeud(n); |
} |
} |
}); |
|
mn.showAt(e.getXY()); |
} |
} |