Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

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