Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1292 Rev 2042
Line 1... Line 1...
1
package org.tela_botanica.client.vues.observation.filtres;
1
package org.tela_botanica.client.vues.observation.filtres;
2
import org.tela_botanica.client.interfaces.Filtrable;
2
import org.tela_botanica.client.interfaces.Filtrable;
3
import org.tela_botanica.client.interfaces.Rafraichissable;
3
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.observation.ObservationMediateur;
4
import org.tela_botanica.client.observation.ObservationMediateur;
-
 
5
import org.tela_botanica.client.util.MotsClesUtilitaire;
-
 
6
 
5
import com.google.gwt.user.client.Window;
7
import com.google.gwt.user.client.Window;
6
import com.gwtext.client.core.EventObject;
8
import com.gwtext.client.core.EventObject;
7
import com.gwtext.client.data.Node;
9
import com.gwtext.client.data.Node;
8
import com.gwtext.client.data.NodeTraversalCallback;
10
import com.gwtext.client.data.NodeTraversalCallback;
9
import com.gwtext.client.data.Tree;
11
import com.gwtext.client.data.Tree;
Line 92... Line 94...
92
		
94
		
Line 93... Line 95...
93
		private Component livue = null;
95
		private Component livue = null;
Line -... Line 96...
-
 
96
		
-
 
97
		MultiSelectionModel msModel = null;
94
		
98
 
95
		MultiSelectionModel msModel = null;
99
		private String cheminTemporaireAjout = null;
96
 
100
 
97
		/**
101
		/**
98
		 * Constructeur sans paramètre (privé car interdit d'utilisation)
102
		 * Constructeur sans paramètre (privé car interdit d'utilisation)
Line 241... Line 245...
241
 
245
 
242
		/**
246
		/**
243
		 * Ajoute les listeners nécessaires pour la gestion des évènements
247
		 * Ajoute les listeners nécessaires pour la gestion des évènements
244
		 */
248
		 */
-
 
249
		private void ajouterListeners() {
-
 
250
			
245
		private void ajouterListeners() {
251
			final Rafraichissable r = this;
Line 246... Line 252...
246
			arbreMotsCles.addListener(new TreePanelListenerAdapter() {
252
			arbreMotsCles.addListener(new TreePanelListenerAdapter() {
247
 
253
 
248
				// gestion du clic sur un noeud
254
				// gestion du clic sur un noeud
Line 290... Line 296...
290
					// si c'est un nouveau noeud
296
					// si c'est un nouveau noeud
291
					if (ajoutNoeud) {
297
					if (ajoutNoeud) {
292
						// on notifie le médiateur de l'ajout et on lui passe
298
						// on notifie le médiateur de l'ajout et on lui passe
293
						// l'arbre
299
						// l'arbre
294
						getOMediateur().ajouterMotCleDansArbre(nd,
300
						getOMediateur().ajouterMotCleDansArbre(nd,
295
								getArbreMotsCles().getTree());
301
								getArbreMotsCles().getTree(), r);
296
						// et considère l'ajout achevé
302
						// et considère l'ajout achevé
297
						ajoutNoeud = false;
303
						ajoutNoeud = false;
298
					}
304
					}
299
					// si c'est noeud déjà existant
305
					// si c'est noeud déjà existant
300
					else {
306
					else {
Line 305... Line 311...
305
									getArbreMotsCles().getTree());
311
									getArbreMotsCles().getTree());
306
							// et on considère la modification achevée
312
							// et on considère la modification achevée
307
							modifNoeud = false;
313
							modifNoeud = false;
308
						}
314
						}
309
					}
315
					}
310
 
-
 
-
 
316
					arbreMotsCles.disable();
311
				}
317
				}
Line 312... Line 318...
312
 
318
 
313
				// gestion du déplacement d'un noeud
319
				// gestion du déplacement d'un noeud
314
				@Override
320
				@Override
Line 440... Line 446...
440
			nd.setCls("x-view-treenode-keyword");
446
			nd.setCls("x-view-treenode-keyword");
441
			// on associe un objet au noeud qui contient des infos
447
			// on associe un objet au noeud qui contient des infos
442
			String[] usObject = new String[2];
448
			String[] usObject = new String[2];
443
			// l'objet contient le nom du noeud
449
			// l'objet contient le nom du noeud
444
			usObject[0] = "";
450
			usObject[0] = "";
445
			usObject[1] = genererIdMotCle(nd);
-
 
446
			nd.setId(usObject[1]);
451
			usObject[1] = "";
-
 
452
			
447
			nd.setUserObject(usObject);
453
			nd.setUserObject(usObject);
448
			// l'identifiant d'un noeud c'est son hashcode
454
			// l'identifiant d'un noeud c'est son hashcode
449
			// l'objet associé au noeud contient aussi son identifiant
455
			// l'objet associé au noeud contient aussi son identifiant
Line 450... Line 456...
450
 
456
 
451
			// on le concatène au parent et on étend ses enfants
457
			// on le concatène au parent et on étend ses enfants
-
 
458
			parent.appendChild(nd);
-
 
459
			// en attendant qu'il soit ajouté on lui affecte son chemin en tant qu'id
-
 
460
			// ce qui permettra de le retrouver et de lui affecter son id sur retour du web service
-
 
461
			cheminTemporaireAjout  = MotsClesUtilitaire.construireChemin(nd);
452
			parent.appendChild(nd);
462
			nd.setId(cheminTemporaireAjout);
453
			parent.expand();
463
			parent.expand();
454
			// enfin on place le curseur et on fait apparaitre le champ d'édition
464
			// enfin on place le curseur et on fait apparaitre le champ d'édition
455
			// pour que l'utilisateur nomme son mot clé
465
			// pour que l'utilisateur nomme son mot clé
456
			te.startEdit(nd);
-
 
457
 
466
			te.startEdit(nd);
458
		}
467
		}
459
 
468
		
460
		/**
469
		/**
461
		 * Fonction de gestion sur le clic sur le noeud
470
		 * Fonction de gestion sur le clic sur le noeud
462
		 * 
471
		 * 
463
		 * @param node
472
		 * @param node
Line 578... Line 587...
578
				for (int i = 0; i < rootChild.length; i++) {
587
				for (int i = 0; i < rootChild.length; i++) {
Line 579... Line 588...
579
					
588
					
580
					rootChild[i].remove();
589
					rootChild[i].remove();
Line 581... Line 590...
581
				}
590
				}
Line 582... Line 591...
582
				
591
				
583
				copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode());
592
				MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(),getArbreMotsCles().getRootNode());
584
 
593
 
585
				// si l'arbre n'était pas encore considéré comme instancié
594
				// si l'arbre n'était pas encore considéré comme instancié
Line 620... Line 629...
620
				// attente
629
				// attente
621
				else {
630
				else {
622
					motsClesEnAttente = motsClesIds;
631
					motsClesEnAttente = motsClesIds;
623
				}
632
				}
624
			}
633
			}
625
		}
-
 
626
 
-
 
627
		private String genererIdMotCle(TreeNode nd) {
-
 
Line 628... Line -...
628
			
-
 
629
			double IdMC = (nd.hashCode() + ((Math.random() * 10000) + 1));			
-
 
630
			return ""+IdMC;
-
 
631
		}
-
 
632
		
-
 
633
		/**
-
 
634
		 * Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un
-
 
635
		 * copie du sous arbre du premier noeud, qu'elle concatène au deuxième
-
 
636
		 * 
-
 
637
		 * @param ndPereOriginal
634
			
638
		 *            le père des noeuds de l'arbre original
-
 
639
		 * @param ndPereCopie
635
			// reception d'un nouvel identifiant de mot clé
640
		 *            le père qui va recevoir les copies
-
 
641
		 */
-
 
642
		private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) {
636
			if(nouvelleDonnees instanceof Integer) {
643
			if (ndPereCopie != null && ndPereOriginal != null) {
637
				if(cheminTemporaireAjout != null) {
644
				Node[] ndNodeFils = ndPereOriginal.getChildNodes();
-
 
645
				
638
					String id = ((Integer)(nouvelleDonnees)).toString();
646
				for (int i = 0; i < ndNodeFils.length; i++) {
-
 
647
 
639
					TreeNode noeudEnAjout = arbreMotsCles.getNodeById(cheminTemporaireAjout);
648
					String[] usObj = (String[]) ndNodeFils[i].getUserObject();
-
 
649
					TreeNode child = new TreeNode(usObj[0]);
-
 
650
					child.setId(usObj[1]);
640
					String[] userObj = {noeudEnAjout.getText(), id};
651
					child.setUserObject(usObj);
641
					noeudEnAjout.setUserObject(userObj);
652
					ndPereCopie.appendChild(child);
-
 
653
 
-
 
654
					if (!ndNodeFils[i].isLeaf()) {
642
					noeudEnAjout.setId(id);
655
						copierFilsNoeud(ndNodeFils[i], child);
-
 
656
					}
-
 
657
 
643
					cheminTemporaireAjout = null;
658
				}
644
				}
-
 
645
			}
-
 
646
			
659
			}
647
			arbreMotsCles.enable();
Line 660... Line 648...
660
		}
648
		}
Line 661... Line 649...
661
		
649