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