//trunk/src/org/tela_botanica/client/modeles/dao/MotsClesAsynchroneDAO.java |
---|
47,7 → 47,6 |
// on demande tous les mots clés associés à l'utilisateur |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() |
+ "/"+nomService+"/"+mode+"/"+identifiant+"/"); |
try { |
rb.sendRequest(null, new RequestCallback() { |
110,9 → 109,8 |
@Override |
public void onResponseReceived(Request request, |
Response response) { |
// TODO: les messages ne devraient pas être affichés ici |
// mais l'architecture par très malléable complique les choses |
// mais l'architecture pas très malléable complique les choses |
try { |
Integer idMotcle = Integer.parseInt(response.getText()); |
r.rafraichir(idMotcle, false); |
136,7 → 134,7 |
* @param motcle |
* le mots clés à supprimer |
*/ |
public void supprimerBaseDeDonnees(String motcle) { |
public void supprimerBaseDeDonnees(String motcle, final Rafraichissable r) { |
if (!motcle.equals("")) { |
String postData = ""; |
postData += "&action=DELETE"; |
165,6 → 163,7 |
if (response.getText().equals("OK")) { |
com.google.gwt.user.client.Window |
.alert("Le mot clé a été supprimé"); |
r.rafraichir(null, false); |
return; |
} else { |
com.google.gwt.user.client.Window |
213,7 → 212,7 |
if (response.getText().equals("OK")) { |
com.google.gwt.user.client.Window |
.alert("Le mot clé a été renommé"); |
r.rafraichir("OK", false); |
r.rafraichir(null, false); |
return; |
} else { |
com.google.gwt.user.client.Window |
257,7 → 256,7 |
@Override |
public void onResponseReceived(Request request, |
Response response) { |
r.rafraichir("OK", false); |
r.rafraichir(null, false); |
} |
}); |
//trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java |
---|
1034,11 → 1034,8 |
* @param arbreMC |
* le nouvel arbre de mots clés à mettre à jour |
*/ |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) { |
observationModele.supprimerMotCleDansArbre(n, arbreMC); |
getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n.getId(), false); |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) { |
observationModele.supprimerMotCleDansArbre(n, arbreMC, r); |
} |
/** |
//trunk/src/org/tela_botanica/client/observation/ObservationModele.java |
---|
416,7 → 416,7 |
if(nouvelleDonnees instanceof JSONArray) { |
JSONArray donneesArbre = (JSONArray)nouvelleDonnees; |
Object[] arbreEtCorrespondancesIds = MotsClesUtilitaire.construireArbre("Projets", "racine_obs", donneesArbre); |
Object[] arbreEtCorrespondancesIds = MotsClesUtilitaire.construireArbre("Projets", "racine_obs", donneesArbre, false); |
arbreMotsCles = (Tree)arbreEtCorrespondancesIds[0]; |
motsCles = (HashMap<String, String>)arbreEtCorrespondancesIds[1]; |
553,13 → 553,9 |
if (!id.equals("racine_obs")) { |
String[] parentUsObj = (String[]) n.getParentNode().getUserObject(); |
if(parentUsObj[1].equals("racine_obs")) { |
parentId= ""; |
} else { |
if(!parentUsObj[1].equals("racine_obs")) { |
parentId = parentUsObj[1]; |
} |
} else { |
parentId = ""; |
} |
rafraichirArbreMotsCles(arbreMC); |
579,7 → 575,7 |
* @param arbreMC |
* l'arbre des mots clés en cours |
*/ |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) { |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) { |
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs"); |
588,7 → 584,7 |
rafraichirArbreMotsCles(arbreMC); |
MCDao.supprimerBaseDeDonnees(id); |
MCDao.supprimerBaseDeDonnees(id, r); |
} |
610,11 → 606,11 |
String id = usObj[1]; |
String parentId = ""; |
if (!id.equals("racine")) { |
if (!id.equals("racine_obs")) { |
String[] parentUsObj = (String[]) n.getParentNode().getUserObject(); |
parentId = parentUsObj[1]; |
} else { |
parentId = "racine"; |
if(!parentUsObj[1].equals("racine_obs")) { |
parentId = parentUsObj[1]; |
} |
} |
rafraichirArbreMotsCles(arbreMC); |
641,11 → 637,12 |
String motCle = usObj[0]; |
String id = usObj[1]; |
String parentId = ""; |
if (!id.equals("racine_obs")) { |
String[] parentUsObj = (String[]) n.getParentNode().getUserObject(); |
parentId = parentUsObj[1]; |
} else { |
parentId = "racine_obs"; |
if(!parentUsObj[1].equals("racine_obs")) { |
parentId = parentUsObj[1]; |
} |
} |
rafraichirArbreMotsCles(arbreMC); |
//trunk/src/org/tela_botanica/client/util/MotsClesUtilitaire.java |
---|
12,6 → 12,7 |
public class MotsClesUtilitaire { |
//TODO rassembler tout ce qui construit les arbres de mots clés ici |
private static String[] caracteresInterdits = {"\\", "/", ","}; |
public static String obtenirCheminParent(String cheminMotCle, String motCle) { |
return cheminMotCle.substring(0, cheminMotCle.length() - motCle.length() -1); |
18,7 → 19,7 |
} |
public static Object[] construireArbre(String NomRacine, String idRacine, |
JSONArray arbreJson) { |
JSONArray arbreJson, boolean afficherCheckbox) { |
Tree arbreMotsCles = new Tree() ; |
HashMap<String, String> motsCles = new HashMap<String, String>(0); |
61,7 → 62,9 |
TreeNode node = new TreeNode(); |
node.setId(idMotCle); |
node.setText(motCle); |
node.setChecked(false); |
if(afficherCheckbox) { |
node.setChecked(false); |
} |
Node parentNode = arbreMotsCles.getNodeById(parent); |
node.setUserObject(usObj); |
parentNode.appendChild(node); |
74,17 → 77,6 |
return retour; |
} |
public static String construireChemin(TreeNode nd) { |
String chemin = "/"; |
Node node = nd; |
while(node != null) { |
String[] usObj = (String[])node.getUserObject(); |
chemin = usObj[0]+"/"+chemin; |
node = node.getParentNode(); |
} |
return chemin; |
} |
/** |
* Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un |
* copie du sous arbre du premier noeud, qu'elle concatène au deuxième |
94,7 → 86,7 |
* @param ndPereCopie |
* le père qui va recevoir les copies |
*/ |
public static void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) { |
public static void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie, boolean afficherCheckbox) { |
if (ndPereCopie != null && ndPereOriginal != null) { |
Node[] ndNodeFils = ndPereOriginal.getChildNodes(); |
103,14 → 95,57 |
String[] usObj = (String[]) ndNodeFils[i].getUserObject(); |
TreeNode child = new TreeNode(usObj[0]); |
child.setId(usObj[1]); |
child.setChecked(false); |
if(afficherCheckbox) { |
child.setChecked(false); |
} |
child.setUserObject(usObj); |
ndPereCopie.appendChild(child); |
if (!ndNodeFils[i].isLeaf()) { |
copierFilsNoeud(ndNodeFils[i], child); |
copierFilsNoeud(ndNodeFils[i], child, afficherCheckbox); |
} |
} |
} |
} |
public static TreeNode ajouterNoeud(TreeNode parent, boolean afficherCheckbox) { |
// on crée un nouveau noeud vide |
TreeNode nd = new TreeNode(""); |
nd.setCls("x-view-treenode-keyword"); |
if(afficherCheckbox) { |
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] = ""; |
nd.setUserObject(usObject); |
String cheminTemporaireAjout = parent.getPath()+"/"+nd.getId(); |
nd.setId(cheminTemporaireAjout); |
return nd; |
} |
public static String getChaineCaracteresInterdits() { |
String interdits = ""; |
for (int i = 0; i < MotsClesUtilitaire.caracteresInterdits.length; i++) { |
interdits += MotsClesUtilitaire.caracteresInterdits[i]+" "; |
} |
return interdits; |
} |
public static boolean estUnMotCleAutorise(String motCle) { |
boolean valide = !motCle.trim().isEmpty(); |
for (int i = 0; i < MotsClesUtilitaire.caracteresInterdits.length; i++) { |
if(motCle.indexOf(MotsClesUtilitaire.caracteresInterdits[i]) != -1) { |
valide = false; |
break; |
} |
} |
return valide; |
} |
} |
//trunk/src/org/tela_botanica/client/image/ImageMediateur.java |
---|
1132,8 → 1132,8 |
* @param arbreMC |
* le nouvel arbre de mots clés à mettre à jour |
*/ |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) { |
getIModele().supprimerMotCleDansArbre(n, arbreMC); |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) { |
getIModele().supprimerMotCleDansArbre(n, arbreMC, r); |
filtres.getMotsClesFiltre().rafraichir(arbreMC, false); |
mettreAJourListeMotsClesAffiches(); |
} |
1147,9 → 1147,10 |
* @param arbreMC |
* le nouvel arbre de mots clés à mettre à jour |
*/ |
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) { |
getIModele().modifierMotCleDansArbre(n, arbreMC, filtres.getMotsClesFiltre()); |
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) { |
getIModele().modifierMotCleDansArbre(n, arbreMC, r); |
getIModele().mettreAjourMotsClesId(n.getText(), n.getId()); |
filtres.getMotsClesFiltre().rafraichir(arbreMC, false); |
mettreAJourListeMotsClesAffiches(); |
} |
1162,8 → 1163,9 |
* @param arbreMC |
* le nouvel arbre de mots clés à mettre à jour |
*/ |
public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) { |
getIModele().deplacerMotCleDansArbre(n, arbreMC, filtres.getMotsClesFiltre()); |
public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) { |
getIModele().deplacerMotCleDansArbre(n, arbreMC, r); |
filtres.getMotsClesFiltre().rafraichir(arbreMC, false); |
mettreAJourListeMotsClesAffiches(); |
} |
1764,12 → 1766,12 |
@Override |
protected void surSuppressionMotCle(TreeNode node, Tree arbre) { |
supprimerMotCleDansArbre(node, arbre); |
supprimerMotCleDansArbre(node, arbre, fnMc); |
} |
@Override |
protected void surDeplacementMotCle(TreeNode node, Tree arbre) { |
deplacerMotCleDansArbre(node, arbre); |
deplacerMotCleDansArbre(node, arbre, fnMc); |
} |
@Override |
1779,7 → 1781,7 |
@Override |
protected void surChangementTexte(TreeNode node, Tree arbre) { |
modifierMotCleDansArbre(node, arbre); |
modifierMotCleDansArbre(node, arbre, fnMc); |
} |
@Override |
//trunk/src/org/tela_botanica/client/image/ImageModele.java |
---|
23,12 → 23,11 |
import org.tela_botanica.client.util.MotsClesUtilitaire; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.user.client.Window; |
import com.gwtext.client.data.ArrayReader; |
import com.gwtext.client.data.FieldDef; |
import com.gwtext.client.data.IntegerFieldDef; |
import com.gwtext.client.data.MemoryProxy; |
import com.gwtext.client.data.Node; |
import com.gwtext.client.data.RecordDef; |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
486,7 → 485,7 |
// alors on a reçu les informations sur les mots clés |
JSONArray donneesArbre = (JSONArray)nouvelleDonnees; |
Object[] arbreEtCorrespondancesIds = MotsClesUtilitaire.construireArbre("Tags", "racine", donneesArbre); |
Object[] arbreEtCorrespondancesIds = MotsClesUtilitaire.construireArbre("Tags", "racine", donneesArbre, false); |
arbreMotsCles = (Tree)arbreEtCorrespondancesIds[0]; |
motsCles = (HashMap<String, String>)arbreEtCorrespondancesIds[1]; |
613,9 → 612,9 |
if (!id.equals("racine")) { |
String[] parentUsObj = (String[]) n.getParentNode().getUserObject(); |
parentId = parentUsObj[1]; |
} else { |
parentId = "racine"; |
if(!parentUsObj[1].equals("racine")) { |
parentId = parentUsObj[1]; |
} |
} |
rafraichirArbreMotsCles(arbreMC); |
635,7 → 634,7 |
* @param arbreMC |
* l'arbre des mots clés en cours |
*/ |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) { |
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) { |
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("images"); |
642,7 → 641,7 |
String[] usObj = (String[]) n.getUserObject(); |
String id = usObj[1]; |
MCDao.supprimerBaseDeDonnees(id); |
MCDao.supprimerBaseDeDonnees(id, r); |
} |
666,9 → 665,9 |
if (!id.equals("racine")) { |
String[] parentUsObj = (String[]) n.getParentNode().getUserObject(); |
parentId = parentUsObj[1]; |
} else { |
parentId = "racine"; |
if(!parentUsObj[1].equals("racine")) { |
parentId = parentUsObj[1]; |
} |
} |
rafraichirArbreMotsCles(arbreMC); |
695,11 → 694,12 |
String motCle = usObj[0]; |
String id = usObj[1]; |
String parentId = ""; |
if (!id.equals("racine")) { |
String[] parentUsObj = (String[]) n.getParentNode().getUserObject(); |
parentId = parentUsObj[1]; |
} else { |
parentId = "racine"; |
if(!parentUsObj[1].equals("racine")) { |
parentId = parentUsObj[1]; |
} |
} |
rafraichirArbreMotsCles(arbreMC); |
//trunk/src/org/tela_botanica/client/vues/ArbreMotsClesVue.java |
---|
231,7 → 231,7 |
// et on notifie le médiateur de l'ajout et on lui passe |
// l'arbre |
getIMediateur().ajouterMotCleDansArbre(nd, |
getArbreMotsCles().getTree(), r); |
getArbreMotsCles().getTree(), ArbreMotsClesVue.this); |
} |
// si c'est noeud déjà existant |
else { |
240,7 → 240,7 |
// on notifie le médiateur de la modification et on lui |
// passe l'arbre |
getIMediateur().modifierMotCleDansArbre(nd, |
getArbreMotsCles().getTree()); |
getArbreMotsCles().getTree(), ArbreMotsClesVue.this); |
} |
} |
251,7 → 251,7 |
TreeNode oldParent, TreeNode newParent, int index) { |
// on notifie le médiateur et on lui passe l'arbre |
getIMediateur().deplacerMotCleDansArbre(node, |
getArbreMotsCles().getTree()); |
getArbreMotsCles().getTree(), ArbreMotsClesVue.this); |
} |
}); |
326,7 → 326,7 |
// puis on en notifie le médiateur en lui passant le noeud supprimé |
// et l'arbre |
getIMediateur() |
.supprimerMotCleDansArbre(n, arbreMotsCles.getTree()); |
.supprimerMotCleDansArbre(n, arbreMotsCles.getTree(), ArbreMotsClesVue.this); |
} else { |
// si l'utilisateur tente de supprimer la racine, on l'avertit de |
// son erreur |
341,31 → 341,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] = ""; |
cheminTemporaireAjout = MotsClesUtilitaire.construireChemin(nd); |
usObject[1] = cheminTemporaireAjout; |
nd.setId(cheminTemporaireAjout); |
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, false); |
// 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); |
} |
/** |
447,7 → 429,7 |
rootChild[i].remove(); |
} |
MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode()); |
MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode(), true); |
// si l'arbre n'était pas encore considéré comme instancié |
if (!arbreCharge) { |
//trunk/src/org/tela_botanica/client/vues/ArbreMotsClesFiltreVue.java |
---|
250,7 → 250,7 |
// et on recopie le nouvel arbre |
MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(), arbreMotsCles |
.getRootNode()); |
.getRootNode(), false); |
// si l'arbre n'était pas encore considéré comme instancié |
if (!estInstancie) { |
//trunk/src/org/tela_botanica/client/vues/observation/filtres/ArbreMotsClesObservationVue.java |
---|
97,6 → 97,8 |
MultiSelectionModel msModel = null; |
private String cheminTemporaireAjout = null; |
public Rafraichissable thisRafraichissable; |
/** |
* Constructeur sans paramètre (privé car interdit d'utilisation) |
139,8 → 141,7 |
// accélérer l'affichage |
// et éviter des bugs |
@Override |
public void onRender(Component component) { |
public void onRender(Component component) { |
livue = oMediateur.getListeObservation(); |
// on crée le conteneur de l'arbre |
248,7 → 249,6 |
*/ |
private void ajouterListeners() { |
final Rafraichissable r = this; |
arbreMotsCles.addListener(new TreePanelListenerAdapter() { |
// gestion du clic sur un noeud |
285,6 → 285,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; |
} |
// on récupère les informations associées au noeud |
TreeNode nd = node; |
295,25 → 301,15 |
// si c'est un nouveau noeud |
if (ajoutNoeud) { |
// on notifie le médiateur de l'ajout et on lui passe |
// l'arbre |
getOMediateur().ajouterMotCleDansArbre(nd, |
getArbreMotsCles().getTree(), r); |
// et considère l'ajout achevé |
ajoutNoeud = false; |
ajouterMotCleDansArbreMediateur(nd); |
} |
// si c'est noeud déjà existant |
else { |
if (modifNoeud) { |
// on notifie le médiateur de la modification et on lui |
// passe l'arbre |
getOMediateur().modifierMotCleDansArbre(nd, |
getArbreMotsCles().getTree()); |
// et on considère la modification achevée |
modifNoeud = false; |
modifierMotCleDansArbreMediateur(nd); |
} |
} |
arbreMotsCles.disable(); |
//arbreMotsCles.disable(); |
} |
// gestion du déplacement d'un noeud |
380,7 → 376,24 |
} |
private void ajouterMotCleDansArbreMediateur(TreeNode nd) { |
// on notifie le médiateur de l'ajout et on lui passe |
// l'arbre |
getOMediateur().ajouterMotCleDansArbre(nd, |
getArbreMotsCles().getTree(), this); |
// et considère l'ajout achevé |
ajoutNoeud = false; |
} |
private void modifierMotCleDansArbreMediateur(TreeNode nd) { |
// on notifie le médiateur de la modification et on lui |
// passe l'arbre |
getOMediateur().modifierMotCleDansArbre(nd, |
getArbreMotsCles().getTree()); |
// et on considère la modification achevée |
modifNoeud = false; |
} |
/** |
* Configure le drag 'n drop pour la liste |
*/ |
422,7 → 435,7 |
// puis on en notifie le médiateur en lui passant le noeud supprimé |
// et l'arbre |
getOMediateur() |
.supprimerMotCleDansArbre(n, arbreMotsCles.getTree()); |
.supprimerMotCleDansArbre(n, arbreMotsCles.getTree(), this); |
} |
} else { |
// si l'utilisateur tente de supprimer la racine, on l'avertit de |
438,31 → 451,17 |
* le futur parent du noeud à ajouter |
*/ |
public void ajouterNoeud(TreeNode parent) { |
// on met l'ajout du noeud à vrai |
if(parent == null) { |
parent = arbreMotsCles.getRootNode(); |
} |
ajoutNoeud = true; |
// on crée un nouveau noeud vide |
TreeNode nd = new TreeNode(""); |
nd.setCls("x-view-treenode-keyword"); |
// 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] = ""; |
nd.setUserObject(usObject); |
// l'identifiant d'un noeud c'est son hashcode |
// l'objet associé au noeud contient aussi son identifiant |
TreeNode nd = MotsClesUtilitaire.ajouterNoeud(parent, false); |
// on le concatène au parent et on étend ses enfants |
parent.appendChild(nd); |
// en attendant qu'il soit ajouté on lui affecte son chemin en tant qu'id |
// ce qui permettra de le retrouver et de lui affecter son id sur retour du web service |
cheminTemporaireAjout = MotsClesUtilitaire.construireChemin(nd); |
nd.setId(cheminTemporaireAjout); |
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); |
} |
577,6 → 576,8 |
@Override |
public void rafraichir(Object nouvelleDonnees, |
boolean repandreRafraichissement) { |
arbreMotsCles.enable(); |
if(nouvelleDonnees instanceof Tree) { |
589,7 → 590,7 |
rootChild[i].remove(); |
} |
MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode()); |
MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode(), false); |
// si l'arbre n'était pas encore considéré comme instancié |
if (!arbreCharge) { |
643,8 → 644,6 |
cheminTemporaireAjout = null; |
} |
} |
arbreMotsCles.enable(); |
} |
public void raz() { |
//trunk/src/org/tela_botanica/client/vues/image/FenetreGestionMotsCles.java |
---|
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 |