2,6 → 2,7 |
|
import org.tela_botanica.client.image.ImageMediateur; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.observation.ObservationMediateur; |
|
import com.google.gwt.user.client.Window; |
import com.gwtext.client.core.EventObject; |
61,7 → 62,7 |
* (sert au lazy rendering quand on reçoit des mots clés avant que le rendu |
* du conteneur n'ai été effectué) |
*/ |
private String[] motsClesEnAttente; |
private String[] motsClesEnAttente = new String[0]; |
/** |
* Booléen d'évènement qui sert à savoir si on est en train d'ajouter un |
* noeud |
113,7 → 114,7 |
String[] usObject = { "Mots clés", "racine" }; |
root.setUserObject(usObject); |
arbreMotsCles.setRootNode(root); |
arbreMotsCles.setRootVisible(false); |
arbreMotsCles.setRootVisible(true); |
arbreMotsCles.setBorder(false); |
arbreMotsCles.setWidth(500); |
|
432,18 → 433,10 |
*/ |
public void rafraichir(Object nouvelleDonnees, |
boolean repandreRafraichissement) { |
// si on a reçu un arbre |
if (nouvelleDonnees instanceof Tree) { |
|
Tree nouvelArbre = (Tree) nouvelleDonnees; |
if(nouvelleDonnees instanceof Tree) { |
|
if (nouvelArbre.getRootNode().getChildNodes().length <= 0) { |
// on crée une racine pour l'arbre |
TreeNode root = new TreeNode("Tags"); |
root.setId("racine"); |
String[] usObject = { "Mots clés", "racine" }; |
root.setUserObject(usObject); |
} |
Tree nouvelArbre = (Tree)nouvelleDonnees ; |
|
// on prend sa racine et on l'attache à l'arbre des mots clés |
Node[] rootChild = getArbreMotsCles().getRootNode().getChildNodes(); |
452,26 → 445,8 |
rootChild[i].remove(); |
} |
|
getArbreMotsCles().getRootNode().appendChild( |
nouvelArbre.getRootNode()); |
|
getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() { |
copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode()); |
|
public boolean execute(Node node) { |
|
String usObject[] = (String[]) node |
.getUserObject(); |
String nodeId = usObject[1]; |
|
getArbreMotsCles().getNodeById(nodeId) |
.getUI().toggleCheck(false); |
|
return false; |
} |
|
|
}) ; |
|
// si l'arbre n'était pas encore considéré comme instancié |
if (!arbreCharge) { |
// on signale que oui |
484,6 → 459,10 |
// cocherMotsCles(motsClesEnAttente) ; |
motsCleInitialises = true; |
} |
|
if(motsClesEnAttente.length > 0) { |
cocherMotsCles(motsClesEnAttente); |
} |
} |
|
// Si on reçoit un tableau de String (cas ou l'on séléectionne une |
502,6 → 481,8 |
// attente |
else { |
motsClesEnAttente = (String[]) nouvelleDonnees; |
|
Window.alert("des mots clés en attente : "+motsClesEnAttente[0]); |
} |
} |
} |
509,5 → 490,34 |
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 |
* copie du sous arbre du premier noeud, qu'elle concatène au deuxième |
* |
* @param ndPereOriginal |
* le père des noeuds de l'arbre original |
* @param ndPereCopie |
* le père qui va recevoir les copies |
*/ |
private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) { |
if (ndPereCopie != null && ndPereOriginal != null) { |
Node[] ndNodeFils = ndPereOriginal.getChildNodes(); |
|
for (int i = 0; i < ndNodeFils.length; i++) { |
|
String[] usObj = (String[]) ndNodeFils[i].getUserObject(); |
TreeNode child = new TreeNode(usObj[0]); |
child.setId(usObj[1]); |
child.setChecked(false); |
child.setUserObject(usObj); |
ndPereCopie.appendChild(child); |
|
if (!ndNodeFils[i].isLeaf()) { |
copierFilsNoeud(ndNodeFils[i], child); |
} |
|
} |
} |
} |
} |