Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2061 → Rev 2062

/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/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
/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() {