Subversion Repositories eFlore/Applications.cel

Rev

Rev 1291 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1291 Rev 2042
Line 1... Line 1...
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
Line 2... Line 2...
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
-
 
4
import org.tela_botanica.client.interfaces.Rafraichissable;
Line 4... Line 5...
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.util.MotsClesUtilitaire;
5
 
6
 
6
import com.google.gwt.user.client.Window;
7
import com.google.gwt.user.client.Window;
7
import com.gwtext.client.core.EventObject;
8
import com.gwtext.client.core.EventObject;
Line 78... Line 79...
78
	/**
79
	/**
79
	 * Booléen d'évènement qui sert à savoir si les mots clés ont bien été reçu
80
	 * Booléen d'évènement qui sert à savoir si les mots clés ont bien été reçu
80
	 */
81
	 */
81
	private boolean motsCleInitialises;
82
	private boolean motsCleInitialises;
Line -... Line 83...
-
 
83
 
-
 
84
	private String cheminTemporaireAjout;
82
 
85
 
83
	/**
86
	/**
84
	 * Constructeur sans paramètre (privé car interdit d'utilisation)
87
	 * Constructeur sans paramètre (privé car interdit d'utilisation)
85
	 */
88
	 */
86
	@SuppressWarnings("unused")
89
	@SuppressWarnings("unused")
Line 176... Line 179...
176
 
179
 
177
	/**
180
	/**
178
	 * Ajoute les listeners nécessaires pour la gestion des évènements
181
	 * Ajoute les listeners nécessaires pour la gestion des évènements
179
	 */
182
	 */
-
 
183
	private void ajouterListeners() {
-
 
184
		
180
	private void ajouterListeners() {
185
		final Rafraichissable r = this;
Line 181... Line 186...
181
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
186
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
182
 
187
 
183
			@Override
188
			@Override
Line 224... Line 229...
224
					// on considère l'ajout achevé
229
					// on considère l'ajout achevé
225
					ajoutNoeud = false;
230
					ajoutNoeud = false;
226
					// et on notifie le médiateur de l'ajout et on lui passe
231
					// et on notifie le médiateur de l'ajout et on lui passe
227
					// l'arbre
232
					// l'arbre
228
					getIMediateur().ajouterMotCleDansArbre(nd,
233
					getIMediateur().ajouterMotCleDansArbre(nd,
229
							getArbreMotsCles().getTree());
234
							getArbreMotsCles().getTree(), r);
230
				}
235
				}
231
				// si c'est noeud déjà existant
236
				// si c'est noeud déjà existant
232
				else {
237
				else {
233
					// et on considère la modification achevée
238
					// et on considère la modification achevée
234
					modifNoeud = false;
239
					modifNoeud = false;
Line 345... Line 350...
345
		nd.setChecked(true);
350
		nd.setChecked(true);
346
		// on associe un objet au noeud qui contient des infos
351
		// on associe un objet au noeud qui contient des infos
347
		String[] usObject = new String[2];
352
		String[] usObject = new String[2];
348
		// l'objet contient le nom du noeud
353
		// l'objet contient le nom du noeud
349
		usObject[0] = "";
354
		usObject[0] = "";
-
 
355
		cheminTemporaireAjout = MotsClesUtilitaire.construireChemin(nd);
350
		usObject[1] = genererIdMotCle(nd);
356
		usObject[1] = cheminTemporaireAjout;
351
		nd.setId(usObject[1]);
357
		nd.setId(cheminTemporaireAjout);
352
		nd.setUserObject(usObject);
358
		nd.setUserObject(usObject);
353
		// l'identifiant d'un noeud c'est son hashcode
359
		// l'identifiant d'un noeud c'est son hashcode
354
		// l'objet associé au noeud contient aussi son identifiant
360
		// l'objet associé au noeud contient aussi son identifiant
Line 355... Line 361...
355
 
361
 
Line 439... Line 445...
439
			for (int i = 0; i < rootChild.length; i++) {
445
			for (int i = 0; i < rootChild.length; i++) {
Line 440... Line 446...
440
				
446
				
441
				rootChild[i].remove();
447
				rootChild[i].remove();
Line 442... Line 448...
442
			}
448
			}
Line 443... Line 449...
443
			
449
			
444
			copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode());
450
			MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode());
445
 
451
 
446
			// si l'arbre n'était pas encore considéré comme instancié
452
			// si l'arbre n'était pas encore considéré comme instancié
Line 458... Line 464...
458
				// l'image
464
				// l'image
459
				// on coche les mots clés contenu dans le tableau
465
				// on coche les mots clés contenu dans le tableau
460
				tableauMotsClesEnCours = (String[]) nouvelleDonnees;
466
				tableauMotsClesEnCours = (String[]) nouvelleDonnees;
461
				cocherMotsCles(tableauMotsClesEnCours);
467
				cocherMotsCles(tableauMotsClesEnCours);
462
		}
468
		}
463
	}
-
 
464
 
469
		
465
	private String genererIdMotCle(TreeNode nd) {
-
 
466
		return "" + (nd.hashCode() + (Math.random() * 10000));
-
 
467
	}
-
 
468
	
-
 
469
	/**
-
 
470
	 * Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un
-
 
471
	 * copie du sous arbre du premier noeud, qu'elle concatène au deuxième
-
 
472
	 * 
-
 
473
	 * @param ndPereOriginal
-
 
474
	 *            le père des noeuds de l'arbre original
470
		// reception d'un nouvel identifiant de mot clé
475
	 * @param ndPereCopie
-
 
476
	 *            le père qui va recevoir les copies
471
		if(nouvelleDonnees instanceof Integer) {
477
	 */
-
 
478
	private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) {
-
 
479
		if (ndPereCopie != null && ndPereOriginal != null) {
472
			if(cheminTemporaireAjout != null) {
480
			Node[] ndNodeFils = ndPereOriginal.getChildNodes();
473
				String id = ((Integer)(nouvelleDonnees)).toString();
481
			
-
 
482
			for (int i = 0; i < ndNodeFils.length; i++) {
474
				TreeNode noeudEnAjout = arbreMotsCles.getNodeById(cheminTemporaireAjout);
483
 
-
 
484
				String[] usObj = (String[]) ndNodeFils[i].getUserObject();
475
				String[] userObj = {noeudEnAjout.getText(), id};
485
				TreeNode child = new TreeNode(usObj[0]);
-
 
486
				child.setId(usObj[1]);
-
 
487
				child.setChecked(false);
-
 
488
				child.setUserObject(usObj);
476
				noeudEnAjout.setUserObject(userObj);
489
				ndPereCopie.appendChild(child);
477
				noeudEnAjout.setId(id);
490
 
-
 
491
				if (!ndNodeFils[i].isLeaf()) {
-
 
492
					copierFilsNoeud(ndNodeFils[i], child);
478
				cheminTemporaireAjout = null;
493
				}
-
 
494
 
-
 
495
			}
479
			}
496
		}
480
		}
-
 
481
		
-
 
482
		arbreMotsCles.enable();
497
	}
483
	}
498
}
484
}