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 |
}
|