Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 135 Rev 155
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.observation.ObservationMediateur;
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 59... Line 60...
59
	/**
60
	/**
60
	 * Tableau contenant les mots clés qui n'ont pas encore été jaouté à l'arbre
61
	 * Tableau contenant les mots clés qui n'ont pas encore été jaouté à l'arbre
61
	 * (sert au lazy rendering quand on reçoit des mots clés avant que le rendu
62
	 * (sert au lazy rendering quand on reçoit des mots clés avant que le rendu
62
	 * du conteneur n'ai été effectué)
63
	 * du conteneur n'ai été effectué)
63
	 */
64
	 */
64
	private String[] motsClesEnAttente;
65
	private String[] motsClesEnAttente = new String[0];
65
	/**
66
	/**
66
	 * Booléen d'évènement qui sert à savoir si on est en train d'ajouter un
67
	 * Booléen d'évènement qui sert à savoir si on est en train d'ajouter un
67
	 * noeud
68
	 * noeud
68
	 */
69
	 */
69
	private boolean ajoutNoeud = false;
70
	private boolean ajoutNoeud = false;
Line 111... Line 112...
111
		TreeNode root = new TreeNode("Tags");
112
		TreeNode root = new TreeNode("Tags");
112
		root.setId("racine");
113
		root.setId("racine");
113
		String[] usObject = { "Mots clés", "racine" };
114
		String[] usObject = { "Mots clés", "racine" };
114
		root.setUserObject(usObject);
115
		root.setUserObject(usObject);
115
		arbreMotsCles.setRootNode(root);
116
		arbreMotsCles.setRootNode(root);
116
		arbreMotsCles.setRootVisible(false);
117
		arbreMotsCles.setRootVisible(true);
117
		arbreMotsCles.setBorder(false);
118
		arbreMotsCles.setBorder(false);
118
		arbreMotsCles.setWidth(500);
119
		arbreMotsCles.setWidth(500);
Line 119... Line 120...
119
 
120
 
120
		// on crée l'éditeur pour l'arbre
121
		// on crée l'éditeur pour l'arbre
Line 430... Line 431...
430
	 * @param repandreRafraichissement
431
	 * @param repandreRafraichissement
431
	 *            booleen qui dit si on doit répandre l'évenement
432
	 *            booleen qui dit si on doit répandre l'évenement
432
	 */
433
	 */
433
	public void rafraichir(Object nouvelleDonnees,
434
	public void rafraichir(Object nouvelleDonnees,
434
			boolean repandreRafraichissement) {
435
			boolean repandreRafraichissement) {
435
		// si on a reçu un arbre
-
 
436
		if (nouvelleDonnees instanceof Tree) {
-
 
Line 437... Line 436...
437
		
436
		
Line 438... Line -...
438
			Tree nouvelArbre = (Tree) nouvelleDonnees;
-
 
439
 
-
 
440
			if (nouvelArbre.getRootNode().getChildNodes().length <= 0) {
437
		if(nouvelleDonnees instanceof Tree) {
441
				// on crée une racine pour l'arbre
-
 
442
				TreeNode root = new TreeNode("Tags");
-
 
443
				root.setId("racine");
-
 
444
				String[] usObject = { "Mots clés", "racine" };
-
 
Line 445... Line 438...
445
				root.setUserObject(usObject);
438
 
446
			}
439
			Tree nouvelArbre = (Tree)nouvelleDonnees ;
447
 
440
 
Line 448... Line 441...
448
			// on prend sa racine et on l'attache à l'arbre des mots clés
441
			// on prend sa racine et on l'attache à l'arbre des mots clés
449
			Node[] rootChild = getArbreMotsCles().getRootNode().getChildNodes();
442
			Node[] rootChild = getArbreMotsCles().getRootNode().getChildNodes();
Line 450... Line -...
450
			for (int i = 0; i < rootChild.length; i++) {
-
 
451
				
-
 
452
				rootChild[i].remove();
-
 
453
			}
443
			for (int i = 0; i < rootChild.length; i++) {
454
			
-
 
455
			getArbreMotsCles().getRootNode().appendChild(
-
 
456
					nouvelArbre.getRootNode());
-
 
457
			
-
 
458
			getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {
-
 
459
 
-
 
460
				public boolean execute(Node node) {
-
 
461
					
-
 
462
					String usObject[] = (String[]) node
-
 
463
					.getUserObject();
-
 
464
					String nodeId = usObject[1];
-
 
465
					
-
 
466
					getArbreMotsCles().getNodeById(nodeId)
-
 
467
					.getUI().toggleCheck(false);
-
 
468
					
-
 
Line 469... Line 444...
469
					return false;
444
				
470
				}
445
				rootChild[i].remove();
471
				
446
			}
472
				
447
			
Line 482... Line 457...
482
			if (motsCleInitialises == false && motsClesEnAttente != null) {
457
			if (motsCleInitialises == false && motsClesEnAttente != null) {
483
				// on les coche
458
				// on les coche
484
				// cocherMotsCles(motsClesEnAttente) ;
459
				// cocherMotsCles(motsClesEnAttente) ;
485
				motsCleInitialises = true;
460
				motsCleInitialises = true;
486
			}
461
			}
-
 
462
			
-
 
463
			if(motsClesEnAttente.length > 0) {
-
 
464
						cocherMotsCles(motsClesEnAttente);
-
 
465
			}
487
		}
466
		}
Line 488... Line 467...
488
 
467
 
489
		// Si on reçoit un tableau de String (cas ou l'on séléectionne une
468
		// Si on reçoit un tableau de String (cas ou l'on séléectionne une
490
		// nouvelle image)
469
		// nouvelle image)
Line 500... Line 479...
500
			}
479
			}
501
			// si l'arbre n'est pas encore instancié on met les mots clés en
480
			// si l'arbre n'est pas encore instancié on met les mots clés en
502
			// attente
481
			// attente
503
			else {
482
			else {
504
				motsClesEnAttente = (String[]) nouvelleDonnees;
483
				motsClesEnAttente = (String[]) nouvelleDonnees;
-
 
484
				
-
 
485
				Window.alert("des mots clés en attente : "+motsClesEnAttente[0]);
505
			}
486
			}
506
		}
487
		}
507
	}
488
	}
Line 508... Line 489...
508
 
489
 
509
	private String genererIdMotCle(TreeNode nd) {
490
	private String genererIdMotCle(TreeNode nd) {
510
		return "" + (nd.hashCode() + (Math.random() * 10000));
491
		return "" + (nd.hashCode() + (Math.random() * 10000));
-
 
492
	}
-
 
493
	
-
 
494
	/**
-
 
495
	 * Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un
-
 
496
	 * copie du sous arbre du premier noeud, qu'elle concatène au deuxième
-
 
497
	 * 
-
 
498
	 * @param ndPereOriginal
-
 
499
	 *            le père des noeuds de l'arbre original
-
 
500
	 * @param ndPereCopie
-
 
501
	 *            le père qui va recevoir les copies
-
 
502
	 */
-
 
503
	private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) {
-
 
504
		if (ndPereCopie != null && ndPereOriginal != null) {
-
 
505
			Node[] ndNodeFils = ndPereOriginal.getChildNodes();
-
 
506
			
Line -... Line 507...
-
 
507
			for (int i = 0; i < ndNodeFils.length; i++) {
-
 
508
 
-
 
509
				String[] usObj = (String[]) ndNodeFils[i].getUserObject();
-
 
510
				TreeNode child = new TreeNode(usObj[0]);
-
 
511
				child.setId(usObj[1]);
-
 
512
				child.setChecked(false);
-
 
513
				child.setUserObject(usObj);
-
 
514
				ndPereCopie.appendChild(child);
-
 
515
 
-
 
516
				if (!ndNodeFils[i].isLeaf()) {
-
 
517
					copierFilsNoeud(ndNodeFils[i], child);
-
 
518
				}
-
 
519
 
-
 
520
			}
511
	}
521
		}