Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2041 → Rev 2042

/trunk/src/org/tela_botanica/client/vues/ArbreMotsClesVue.java
2,6 → 2,7
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.util.MotsClesUtilitaire;
 
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
80,6 → 81,8
*/
private boolean motsCleInitialises;
 
private String cheminTemporaireAjout;
 
/**
* Constructeur sans paramètre (privé car interdit d'utilisation)
*/
178,6 → 181,8
* Ajoute les listeners nécessaires pour la gestion des évènements
*/
private void ajouterListeners() {
final Rafraichissable r = this;
arbreMotsCles.addListener(new TreePanelListenerAdapter() {
 
@Override
226,7 → 231,7
// et on notifie le médiateur de l'ajout et on lui passe
// l'arbre
getIMediateur().ajouterMotCleDansArbre(nd,
getArbreMotsCles().getTree());
getArbreMotsCles().getTree(), r);
}
// si c'est noeud déjà existant
else {
347,8 → 352,9
String[] usObject = new String[2];
// l'objet contient le nom du noeud
usObject[0] = "";
usObject[1] = genererIdMotCle(nd);
nd.setId(usObject[1]);
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
441,7 → 447,7
rootChild[i].remove();
}
copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode());
MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode());
 
// si l'arbre n'était pas encore considéré comme instancié
if (!arbreCharge) {
460,39 → 466,19
tableauMotsClesEnCours = (String[]) nouvelleDonnees;
cocherMotsCles(tableauMotsClesEnCours);
}
}
 
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);
}
 
// 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();
}
}