Subversion Repositories eFlore/Applications.cel

Rev

Rev 1008 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.vues;
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
 
6
import com.google.gwt.user.client.Window;
1011 aurelien 7
import com.google.gwt.user.client.ui.HTML;
8
import com.google.gwt.user.client.ui.Label;
2 aperonnet 9
import com.gwtext.client.core.EventObject;
10
import com.gwtext.client.data.Node;
11
import com.gwtext.client.data.NodeTraversalCallback;
12
import com.gwtext.client.data.Tree;
13
import com.gwtext.client.widgets.Button;
14
import com.gwtext.client.widgets.Panel;
15
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
16
import com.gwtext.client.widgets.form.TextField;
1011 aurelien 17
import com.gwtext.client.widgets.layout.FitLayout;
2 aperonnet 18
import com.gwtext.client.widgets.layout.VerticalLayout;
19
import com.gwtext.client.widgets.tree.TreeEditor;
20
import com.gwtext.client.widgets.tree.TreeNode;
21
import com.gwtext.client.widgets.tree.TreePanel;
22
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
23
 
24
/**
5 aperonnet 25
 * Arbre des mots clés, qui est une vue rafraichissable, qui contient des mots
26
 * clés cochables et réorganisables à volonté
27
 *
2 aperonnet 28
 * @author aurelien
5 aperonnet 29
 *
2 aperonnet 30
 */
1011 aurelien 31
public class ImageMotsClesVue extends Panel implements Rafraichissable {
2 aperonnet 32
 
33
	/**
5 aperonnet 34
	 * Une string permettant connaitre les mots clés cochés en cours séparés par
35
	 * des virgules
2 aperonnet 36
	 */
5 aperonnet 37
	private String motsClesEnCours = "";
1008 aurelien 38
 
39
	private String[] tableauMotsClesEnCours = new String[0];
2 aperonnet 40
	/**
5 aperonnet 41
	 * Tableau contenant les mots clés qui n'ont pas encore été jaouté à l'arbre
42
	 * (sert au lazy rendering quand on reçoit des mots clés avant que le rendu
43
	 * du conteneur n'ai été effectué)
2 aperonnet 44
	 */
155 aurelien 45
	private String[] motsClesEnAttente = new String[0];
1011 aurelien 46
 
47
	private HTML motsClesAffiches = new HTML();
5 aperonnet 48
 
2 aperonnet 49
	/**
50
	 * Constructeur sans paramètre (privé car interdit d'utilisation)
51
	 */
52
	@SuppressWarnings("unused")
1011 aurelien 53
	private ImageMotsClesVue() {
5 aperonnet 54
		super();
2 aperonnet 55
	}
5 aperonnet 56
 
2 aperonnet 57
	/**
58
	 * Constructeur avec paramètre
5 aperonnet 59
	 *
60
	 * @param im
61
	 *            le médiateur à associer
2 aperonnet 62
	 */
1011 aurelien 63
	public ImageMotsClesVue(ImageMediateur im) {
2 aperonnet 64
		// on crée le panel
5 aperonnet 65
		super("Mots clés");
1011 aurelien 66
		this.setHeight("100%");
67
		this.add(motsClesAffiches);
68
		motsClesAffiches.setHeight("100%");
69
 
5 aperonnet 70
		this.setBorder(false);
1011 aurelien 71
		this.setBodyBorder(false);
5 aperonnet 72
		this.setCollapsible(true);
73
		this.setTitleCollapse(true);
74
 
2 aperonnet 75
	}
5 aperonnet 76
 
2 aperonnet 77
	/**
78
	 * Méthode héritée de l'interface rafraichissable
5 aperonnet 79
	 *
80
	 * @param nouvelleDonnees
81
	 *            les nouvelles données pour l'objet
82
	 * @param repandreRafraichissement
83
	 *            booleen qui dit si on doit répandre l'évenement
2 aperonnet 84
	 */
85
	public void rafraichir(Object nouvelleDonnees,
86
			boolean repandreRafraichissement) {
101 jpm 87
 
5 aperonnet 88
		// Si on reçoit un tableau de String (cas ou l'on séléectionne une
89
		// nouvelle image)
90
		if (nouvelleDonnees instanceof String[]) {
1008 aurelien 91
 
5 aperonnet 92
				// le tableau de String contient les id des mots clés associés à
93
				// l'image
1011 aurelien 94
				// on affiche les mots clés contenu dans le tableau
1008 aurelien 95
				tableauMotsClesEnCours = (String[]) nouvelleDonnees;
1011 aurelien 96
				afficherMotsCles(tableauMotsClesEnCours);
2 aperonnet 97
		}
98
	}
5 aperonnet 99
 
1011 aurelien 100
	private void afficherMotsCles(String[] tableauMotsClesEnCours) {
101
		motsClesEnCours = "<ul class=\"liste_mots_cles\">";
102
		for (int i = 0; i < tableauMotsClesEnCours.length; i++) {
103
			if(!tableauMotsClesEnCours[i].trim().isEmpty()) {
104
				motsClesEnCours += "<li>"+tableauMotsClesEnCours[i]+"</li>";
155 aurelien 105
			}
106
		}
1011 aurelien 107
		motsClesEnCours += "</ul>";
108
 
109
		motsClesAffiches.setHTML(motsClesEnCours);
155 aurelien 110
	}
2 aperonnet 111
}