1,6 → 1,7 |
package org.tela_botanica.client.vues.image; |
|
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.MotsClesUtilitaire; |
|
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.user.client.Window; |
120,6 → 121,7 |
* panneau intermédiaire contenant l'arbre |
*/ |
private Panel panelIntermediaire; |
private String cheminTemporaireAjout; |
|
/** |
* Constructeur avec paramètre |
310,6 → 312,12 |
// gestion de la modification du texte d'un noeud |
@Override |
public void onTextChange(TreeNode node, String text, String oldText) { |
|
if(!MotsClesUtilitaire.estUnMotCleAutorise(text)) { |
te.startEdit(node); |
Window.alert("Un mot clé ne peut pas être vide ou contenir les caractères suivants : "+MotsClesUtilitaire.getChaineCaracteresInterdits()); |
return; |
} |
|
if(node.equals(arbreMotsCles.getRootNode())) { |
return; |
341,7 → 349,7 |
surChangementTexte(nd, getArbreMotsCles().getTree()); |
} |
} |
|
arbreMotsCles.disable(); |
} |
|
// gestion du déplacement d'un noeud |
485,30 → 493,13 |
* le futur parent du noeud à ajouter |
*/ |
public void ajouterNoeud(TreeNode parent) { |
|
// on met l'ajout du noeud à vrai |
ajoutNoeud = true; |
// on crée un nouveau noeud vide |
TreeNode nd = new TreeNode(""); |
nd.setCls("x-view-treenode-keyword"); |
nd.setChecked(true); |
// on associe un objet au noeud qui contient des infos |
String[] usObject = new String[2]; |
// l'objet contient le nom du noeud |
usObject[0] = ""; |
usObject[1] = genererIdMotCle(nd); |
nd.setId(usObject[1]); |
nd.setUserObject(usObject); |
// l'identifiant d'un noeud c'est son hashcode |
// l'objet associé au noeud contient aussi son identifiant |
|
ajoutNoeud = true; |
TreeNode nd = MotsClesUtilitaire.ajouterNoeud(parent, true); |
// on le concatène au parent et on étend ses enfants |
parent.appendChild(nd); |
parent.expand(); |
// enfin on place le curseur et on fait apparaitre le champ d'édition |
// pour que l'utilisateur nomme son mot clé |
cheminTemporaireAjout = nd.getId(); |
te.startEdit(nd); |
|
} |
|
/** |
612,27 → 603,37 |
// nouvelle image) |
if (nouvelleDonnees instanceof String[]) { |
|
// 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 |
tableauMotsClesEnCours = (String[]) nouvelleDonnees; |
if(this.isVisible()) { |
cocherMotsCles(tableauMotsClesEnCours); |
} else { |
addListener(new WindowListenerAdapter() { |
|
@Override |
public void onShow(Component component) { |
cocherMotsCles(tableauMotsClesEnCours); |
} |
}); |
} |
// 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 |
tableauMotsClesEnCours = (String[]) nouvelleDonnees; |
if(this.isVisible()) { |
cocherMotsCles(tableauMotsClesEnCours); |
} else { |
addListener(new WindowListenerAdapter() { |
|
@Override |
public void onShow(Component component) { |
cocherMotsCles(tableauMotsClesEnCours); |
} |
}); |
} |
} |
|
// reception d'un nouvel identifiant de mot clé |
if(nouvelleDonnees instanceof Integer) { |
if(cheminTemporaireAjout != null) { |
String id = ((Integer)(nouvelleDonnees)).toString(); |
TreeNode noeudEnAjout = arbreMotsCles.getNodeById(cheminTemporaireAjout); |
String[] userObj = {noeudEnAjout.getText(), id}; |
noeudEnAjout.setUserObject(userObj); |
noeudEnAjout.setId(id); |
cheminTemporaireAjout = null; |
} |
} |
|
arbreMotsCles.enable(); |
} |
|
private String genererIdMotCle(TreeNode nd) { |
return "" + (nd.hashCode() + (Math.random() * 10000)); |
} |
|
/** |
* Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un |