Subversion Repositories eFlore/Applications.cel

Rev

Rev 1018 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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