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