Subversion Repositories eFlore/Applications.cel

Rev

Rev 2042 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2042 Rev 2062
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Filtrable;
4
import org.tela_botanica.client.interfaces.Filtrable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.observation.ObservationMediateur;
6
import org.tela_botanica.client.observation.ObservationMediateur;
7
import org.tela_botanica.client.util.MotsClesUtilitaire;
7
import org.tela_botanica.client.util.MotsClesUtilitaire;
8
 
8
 
9
import com.gwtext.client.core.EventObject;
9
import com.gwtext.client.core.EventObject;
10
import com.gwtext.client.data.Node;
10
import com.gwtext.client.data.Node;
11
import com.gwtext.client.data.Tree;
11
import com.gwtext.client.data.Tree;
12
import com.gwtext.client.widgets.Component;
12
import com.gwtext.client.widgets.Component;
13
import com.gwtext.client.widgets.Panel;
13
import com.gwtext.client.widgets.Panel;
14
import com.gwtext.client.widgets.event.PanelListenerAdapter;
14
import com.gwtext.client.widgets.event.PanelListenerAdapter;
15
import com.gwtext.client.widgets.layout.RowLayout;
15
import com.gwtext.client.widgets.layout.RowLayout;
16
import com.gwtext.client.widgets.layout.RowLayoutData;
16
import com.gwtext.client.widgets.layout.RowLayoutData;
17
import com.gwtext.client.widgets.tree.MultiSelectionModel;
17
import com.gwtext.client.widgets.tree.MultiSelectionModel;
18
import com.gwtext.client.widgets.tree.TreeNode;
18
import com.gwtext.client.widgets.tree.TreeNode;
19
import com.gwtext.client.widgets.tree.TreePanel;
19
import com.gwtext.client.widgets.tree.TreePanel;
20
import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
20
import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
21
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
21
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
22
 
22
 
23
/**
23
/**
24
 * fenêtre de recherche affichant l'arbre des mots clés en lecture et un bouton
24
 * fenêtre de recherche affichant l'arbre des mots clés en lecture et un bouton
25
 * cliquable
25
 * cliquable
26
 * 
26
 * 
27
 * @author aurelien
27
 * @author aurelien
28
 * 
28
 * 
29
 */
29
 */
30
public class ArbreMotsClesFiltreVue extends Panel implements Rafraichissable,
30
public class ArbreMotsClesFiltreVue extends Panel implements Rafraichissable,
31
		Filtrable {
31
		Filtrable {
32
 
32
 
33
	/**
33
	/**
34
	 * Le médiateur associé à la vue
34
	 * Le médiateur associé à la vue
35
	 */
35
	 */
36
	private ImageMediateur iMediateur = null;
36
	private ImageMediateur iMediateur = null;
37
	
37
	
38
	/**
38
	/**
39
	 * Le médiateur associé à la vue
39
	 * Le médiateur associé à la vue
40
	 */
40
	 */
41
	private ObservationMediateur oMediateur = null;
41
	private ObservationMediateur oMediateur = null;
42
	
42
	
43
	/**
43
	/**
44
	 * Les mots clés en cours
44
	 * Les mots clés en cours
45
	 */
45
	 */
46
	private String motsClesEncours = "";
46
	private String motsClesEncours = "";
47
 
47
 
48
	/**
48
	/**
49
	 * Le treepanel qui affiche l'arbre
49
	 * Le treepanel qui affiche l'arbre
50
	 */
50
	 */
51
	private static TreePanel arbreMotsCles = null;
51
	private static TreePanel arbreMotsCles = null;
52
 
52
 
53
	/**
53
	/**
54
	 * booléen d'initialisation
54
	 * booléen d'initialisation
55
	 */
55
	 */
56
	private boolean estInstancie = false;
56
	private boolean estInstancie = false;
57
	
57
	
58
	private boolean arbreInitialise = false;
58
	private boolean arbreInitialise = false;
59
 
59
 
60
	/**
60
	/**
61
	 * booléen d'etat
61
	 * booléen d'etat
62
	 */
62
	 */
63
	private boolean filtreModifie = false;
63
	private boolean filtreModifie = false;
64
	
64
	
65
	/**
65
	/**
66
	 * prefixe pour générer des ids adaptées
66
	 * prefixe pour générer des ids adaptées
67
	 */
67
	 */
68
	private String prefixe = "_filtre" ;
68
	private String prefixe = "_filtre" ;
69
	
69
	
70
	private final String prefixeImg = "_images" ;
70
	private final String prefixeImg = "_images" ;
71
	
71
	
72
	private final String prefixeObs = "_obs" ;
72
	private final String prefixeObs = "_obs" ;
73
 
73
 
74
	/**
74
	/**
75
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
75
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
76
	 */
76
	 */
77
	@SuppressWarnings("unused")
77
	@SuppressWarnings("unused")
78
	private ArbreMotsClesFiltreVue() {
78
	private ArbreMotsClesFiltreVue() {
79
		super();
79
		super();
80
	}
80
	}
81
 
81
 
82
	/**
82
	/**
83
	 * Constructeur avec paramètres
83
	 * Constructeur avec paramètres
84
	 * 
84
	 * 
85
	 * @param im
85
	 * @param im
86
	 *            le médiateur à associer
86
	 *            le médiateur à associer
87
	 */
87
	 */
88
	public ArbreMotsClesFiltreVue(ImageMediateur im) {
88
	public ArbreMotsClesFiltreVue(ImageMediateur im) {
89
 
89
 
90
		// on crée le panel
90
		// on crée le panel
91
		super();
91
		super();
92
		iMediateur = im;
92
		iMediateur = im;
93
		this.prefixe += prefixeImg;
93
		this.prefixe += prefixeImg;
94
		initialiserPanel();
94
		initialiserPanel();
95
	}
95
	}
96
	
96
	
97
	/**
97
	/**
98
	 * Constructeur avec paramètres
98
	 * Constructeur avec paramètres
99
	 * 
99
	 * 
100
	 * @param im
100
	 * @param im
101
	 *            le médiateur à associer
101
	 *            le médiateur à associer
102
	 */
102
	 */
103
	public ArbreMotsClesFiltreVue(ObservationMediateur om) {
103
	public ArbreMotsClesFiltreVue(ObservationMediateur om) {
104
 
104
 
105
		// on crée le panel
105
		// on crée le panel
106
		super();
106
		super();
107
		oMediateur = om;
107
		oMediateur = om;
108
		this.prefixe += prefixeObs;
108
		this.prefixe += prefixeObs;
109
		initialiserPanel();
109
		initialiserPanel();
110
		
110
		
111
		this.setLayout(new RowLayout());
111
		this.setLayout(new RowLayout());
112
 
112
 
113
	}
113
	}
114
	
114
	
115
	public void initialiserPanel() {
115
	public void initialiserPanel() {
116
		// on crée le conteneur de l'arbre
116
		// on crée le conteneur de l'arbre
117
		arbreMotsCles = new TreePanel();
117
		arbreMotsCles = new TreePanel();
118
		arbreMotsCles.setId("x-view-tree-filter"+prefixe);
118
		arbreMotsCles.setId("x-view-tree-filter"+prefixe);
119
 
119
 
120
		MultiSelectionModel msModel = new MultiSelectionModel();
120
		MultiSelectionModel msModel = new MultiSelectionModel();
121
		arbreMotsCles.setSelectionModel(msModel);
121
		arbreMotsCles.setSelectionModel(msModel);
122
		
122
		
123
		// on crée une racine pour l'arbre
123
		// on crée une racine pour l'arbre
124
		TreeNode root = new TreeNode("Tags");
124
		TreeNode root = new TreeNode("Tags");
125
		root.setId("racine"+prefixe);
125
		root.setId("racine"+prefixe);
126
		String[] usObject = { "Mots clés", "racine"+prefixe };
126
		String[] usObject = { "Mots clés", "racine"+prefixe };
127
		root.setUserObject(usObject);
127
		root.setUserObject(usObject);
128
		
128
		
129
		root.setExpandable(true);
129
		root.setExpandable(true);
130
		
130
		
131
		arbreMotsCles.setRootNode(root);
131
		arbreMotsCles.setRootNode(root);
132
		
132
		
133
		arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
133
		arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
134
 
134
 
135
			@Override
135
			@Override
136
			public void onClick(Node node, EventObject e) {
136
			public void onClick(Node node, EventObject e) {
137
				if(!arbreInitialise) {
137
				if(!arbreInitialise) {
138
					expand();
138
					expand();
139
				}
139
				}
140
			}
140
			}
141
 
141
 
142
			@Override
142
			@Override
143
			public void onExpand(Node node) {
143
			public void onExpand(Node node) {
144
				if(!arbreInitialise) {
144
				if(!arbreInitialise) {
145
					obtenirArbreMotsCles();
145
					obtenirArbreMotsCles();
146
					arbreInitialise = true;
146
					arbreInitialise = true;
147
				}
147
				}
148
			}
148
			}
149
 
149
 
150
		});
150
		});
151
		
151
		
152
		this.setPaddings(5);
152
		this.setPaddings(5);
153
 
153
 
154
		this.setBorder(false);
154
		this.setBorder(false);
155
		this.setCollapsible(true);
155
		this.setCollapsible(true);
156
		this.setAutoWidth(true);
156
		this.setAutoWidth(true);
157
 
157
 
158
		// on ajoute les listeners
158
		// on ajoute les listeners
159
		ajouterListenersPanel();
159
		ajouterListenersPanel();
160
		estInstancie = false;
160
		estInstancie = false;
161
	}
161
	}
162
 
162
 
163
	/**
163
	/**
164
	 * Ajoute les listeners pour le rendu du panel
164
	 * Ajoute les listeners pour le rendu du panel
165
	 */
165
	 */
166
	private void ajouterListenersPanel() {
166
	private void ajouterListenersPanel() {
167
		this.addListener(new PanelListenerAdapter() {
167
		this.addListener(new PanelListenerAdapter() {
168
 
168
 
169
			// on instancie réellement les composants au moment du rendu pour
169
			// on instancie réellement les composants au moment du rendu pour
170
			// accélérer l'affichage
170
			// accélérer l'affichage
171
			// et éviter des bugs
171
			// et éviter des bugs
172
			@Override
172
			@Override
173
			public void onRender(Component component) {
173
			public void onRender(Component component) {
174
 
174
 
175
				// on interdit le drag and drop dans l'arbre
175
				// on interdit le drag and drop dans l'arbre
176
				arbreMotsCles.setEnableDD(false);
176
				arbreMotsCles.setEnableDD(false);
177
				arbreMotsCles.setAutoWidth(false);
177
				arbreMotsCles.setAutoWidth(false);
178
				arbreMotsCles.setAutoScroll(true);
178
				arbreMotsCles.setAutoScroll(true);
179
				arbreMotsCles.setBorder(false);
179
				arbreMotsCles.setBorder(false);
180
 
180
 
181
				// on met en forme le layout
181
				// on met en forme le layout
182
				((Panel) component).add(arbreMotsCles,new RowLayoutData("80%"));
182
				((Panel) component).add(arbreMotsCles,new RowLayoutData("80%"));
183
 
183
 
184
				// on ajoute les listeners d'évenements
184
				// on ajoute les listeners d'évenements
185
				ajouterListeners();
185
				ajouterListeners();
186
				//obtenirArbreMotsCles();
186
				//obtenirArbreMotsCles();
187
			}
187
			}
188
			
188
			
189
		});
189
		});
190
	}
190
	}
191
 
191
 
192
	/**
192
	/**
193
	 * ajoute les listeners pour les boutons et le cochage des mots clés
193
	 * ajoute les listeners pour les boutons et le cochage des mots clés
194
	 */
194
	 */
195
	private void ajouterListeners() {
195
	private void ajouterListeners() {
196
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
196
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
197
								
197
								
198
			// gestion du clic sur un noeud
198
			// gestion du clic sur un noeud
199
			@Override
199
			@Override
200
			public void onClick(TreeNode node, EventObject e) {
200
			public void onClick(TreeNode node, EventObject e) {
201
 
201
 
202
				e.stopEvent();
202
				e.stopEvent();
203
								
203
								
204
				boolean multi = false;
204
				boolean multi = false;
205
				if(e.hasModifier()) {
205
				if(e.hasModifier()) {
206
					multi = true;
206
					multi = true;
207
				}
207
				}
208
				gererClicNoeud(node,multi);
208
				gererClicNoeud(node,multi);
209
			}
209
			}
210
		});
210
		});
211
	}
211
	}
212
	
212
	
213
	/**
213
	/**
214
	 * Fonction de gestion sur le clic sur le noeud
214
	 * Fonction de gestion sur le clic sur le noeud
215
	 * 
215
	 * 
216
	 * @param node
216
	 * @param node
217
	 */
217
	 */
218
	public void gererClicNoeud(TreeNode node, boolean multi) {
218
	public void gererClicNoeud(TreeNode node, boolean multi) {
219
		
219
		
220
		if(!arbreInitialise) {
220
		if(!arbreInitialise) {
221
			obtenirArbreMotsCles();
221
			obtenirArbreMotsCles();
222
		} else {
222
		} else {
223
			if(node.equals(arbreMotsCles.getRootNode())) {
223
			if(node.equals(arbreMotsCles.getRootNode())) {
224
				arbreMotsCles.getSelectionModel().clearSelections();
224
				arbreMotsCles.getSelectionModel().clearSelections();
225
			} else {
225
			} else {
226
				((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi);
226
				((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi);
227
			}
227
			}
228
			filtreModifie = true;
228
			filtreModifie = true;
229
			iMediateur.obtenirPhotoGalerie();
229
			iMediateur.obtenirPhotoGalerie();
230
		}
230
		}
231
	}
231
	}
232
 
232
 
233
	/**
233
	/**
234
	 * Méthode héritée de l'interface rafraichissable
234
	 * Méthode héritée de l'interface rafraichissable
235
	 */
235
	 */
236
	@Override
236
	@Override
237
	public void rafraichir(Object nouvelleDonnees,
237
	public void rafraichir(Object nouvelleDonnees,
238
			boolean repandreRaffraichissement) {
238
			boolean repandreRaffraichissement) {
239
 
239
 
240
		// si on a reçu un arbre
240
		// si on a reçu un arbre
241
		if (nouvelleDonnees instanceof Tree) {
241
		if (nouvelleDonnees instanceof Tree) {
242
			Tree nouvelArbre = (Tree) nouvelleDonnees;
242
			Tree nouvelArbre = (Tree) nouvelleDonnees;
243
			
243
			
244
			// on vide tous les noeuds de l'ancien arbre
244
			// on vide tous les noeuds de l'ancien arbre
245
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
245
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
246
			for (int i = 0; i < rootChild.length; i++) {
246
			for (int i = 0; i < rootChild.length; i++) {
247
				
247
				
248
				rootChild[i].remove();
248
				rootChild[i].remove();
249
			}
249
			}
250
 
250
 
251
			// et on recopie le nouvel arbre
251
			// et on recopie le nouvel arbre
252
			MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(), arbreMotsCles
252
			MotsClesUtilitaire.copierFilsNoeud(nouvelArbre.getRootNode(), arbreMotsCles
253
					.getRootNode());
253
					.getRootNode(), false);
254
 
254
 
255
			// si l'arbre n'était pas encore considéré comme instancié
255
			// si l'arbre n'était pas encore considéré comme instancié
256
			if (!estInstancie) {
256
			if (!estInstancie) {
257
				// on signale que oui
257
				// on signale que oui
258
				estInstancie = true;
258
				estInstancie = true;
259
			}
259
			}
260
			
260
			
261
			if(!arbreInitialise) {
261
			if(!arbreInitialise) {
262
				arbreInitialise = true;
262
				arbreInitialise = true;
263
			}
263
			}
264
			
264
			
265
			arbreMotsCles.setRootNode(arbreMotsCles.getRootNode());
265
			arbreMotsCles.setRootNode(arbreMotsCles.getRootNode());
266
 
266
 
267
			// l'état du filtre est réinitialisé
267
			// l'état du filtre est réinitialisé
268
			filtreModifie = false;
268
			filtreModifie = false;
269
			doLayout() ;
269
			doLayout() ;
270
		}
270
		}
271
	}
271
	}
272
 
272
 
273
	/**
273
	/**
274
	 * Accesseur pour le médiateur
274
	 * Accesseur pour le médiateur
275
	 * 
275
	 * 
276
	 * @return le médiateur associé
276
	 * @return le médiateur associé
277
	 */
277
	 */
278
	public ImageMediateur getIMediateur() {
278
	public ImageMediateur getIMediateur() {
279
		return iMediateur;
279
		return iMediateur;
280
	}
280
	}
281
	
281
	
282
	public ObservationMediateur getOMediateur() {
282
	public ObservationMediateur getOMediateur() {
283
		return oMediateur ;
283
		return oMediateur ;
284
	}
284
	}
285
 
285
 
286
	/**
286
	/**
287
	 * Accesseur pour le panneau contenant l'arbre
287
	 * Accesseur pour le panneau contenant l'arbre
288
	 * 
288
	 * 
289
	 * @return le panneau de l'arbre des mots clés
289
	 * @return le panneau de l'arbre des mots clés
290
	 */
290
	 */
291
	public TreePanel getArbreMotsCles() {
291
	public TreePanel getArbreMotsCles() {
292
		return arbreMotsCles;
292
		return arbreMotsCles;
293
	}
293
	}
294
 
294
 
295
	/**
295
	/**
296
	 * Méthode héritée de Filtrable renvoie le nom du filtre
296
	 * Méthode héritée de Filtrable renvoie le nom du filtre
297
	 */
297
	 */
298
	@Override
298
	@Override
299
	public String renvoyerNomFiltre() {
299
	public String renvoyerNomFiltre() {
300
 
300
 
301
		return "mots clés";
301
		return "mots clés";
302
	}
302
	}
303
 
303
 
304
	/**
304
	/**
305
	 * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
305
	 * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
306
	 * 
306
	 * 
307
	 * @return un tableau contenant le nom du champ à filtrer et sa valeur
307
	 * @return un tableau contenant le nom du champ à filtrer et sa valeur
308
	 */
308
	 */
309
	@Override
309
	@Override
310
	public String[] renvoyerValeursAFiltrer() {
310
	public String[] renvoyerValeursAFiltrer() {
311
		
311
		
312
		String val = "";
312
		String val = "";
313
		
313
		
314
		TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes();
314
		TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes();
315
		
315
		
316
		for(int i = 0; i< noeuds.length ; i++) {
316
		for(int i = 0; i< noeuds.length ; i++) {
317
			if(noeuds[i].getDepth() > 0) {
317
			if(noeuds[i].getDepth() > 0) {
318
				
318
				
319
				String[] userObj = (String[])noeuds[i].getUserObject();
319
				String[] userObj = (String[])noeuds[i].getUserObject();
320
				String idMotCle = noeuds[i].getId();
320
				String idMotCle = noeuds[i].getId();
321
				
321
				
322
				if(userObj != null && userObj[1] != null) {
322
				if(userObj != null && userObj[1] != null) {
323
					idMotCle = userObj[1];
323
					idMotCle = userObj[1];
324
				}
324
				}
325
				
325
				
326
				val += ";"+idMotCle;
326
				val += ";"+idMotCle;
327
			}
327
			}
328
		}
328
		}
329
		
329
		
330
		val = val.replaceFirst(";", "");
330
		val = val.replaceFirst(";", "");
331
		
331
		
332
		String[] valeursFiltres = {"id_mots_cles", val};
332
		String[] valeursFiltres = {"id_mots_cles", val};
333
 
333
 
334
		return valeursFiltres;
334
		return valeursFiltres;
335
	}
335
	}
336
 
336
 
337
	/**
337
	/**
338
	 * Méthode héritée de Filtrable Renvoie l'état du filtre (modifié ou non)
338
	 * Méthode héritée de Filtrable Renvoie l'état du filtre (modifié ou non)
339
	 */
339
	 */
340
	@Override
340
	@Override
341
	public boolean renvoyerEtatFiltre() {
341
	public boolean renvoyerEtatFiltre() {
342
 
342
 
343
		return filtreModifie;
343
		return filtreModifie;
344
	}
344
	}
345
	
345
	
346
	public void mettreAJourMotsCles(String valeur, String id) {
346
	public void mettreAJourMotsCles(String valeur, String id) {
347
		if(getIMediateur() != null) {
347
		if(getIMediateur() != null) {
348
			getIMediateur().mettreAjourMotsClesId(valeur,
348
			getIMediateur().mettreAjourMotsClesId(valeur,
349
				id);
349
				id);
350
		}
350
		}
351
		else
351
		else
352
		{
352
		{
353
			getOMediateur().mettreAjourMotsClesId(valeur, id);
353
			getOMediateur().mettreAjourMotsClesId(valeur, id);
354
		}
354
		}
355
	}
355
	}
356
	
356
	
357
	public void obtenirArbreMotsCles() {
357
	public void obtenirArbreMotsCles() {
358
		if(getIMediateur() != null) {
358
		if(getIMediateur() != null) {
359
			getIMediateur().obtenirArbreMotsCles(this);
359
			getIMediateur().obtenirArbreMotsCles(this);
360
		}
360
		}
361
		else
361
		else
362
		{
362
		{
363
			getOMediateur().obtenirArbreMotsCles(this);
363
			getOMediateur().obtenirArbreMotsCles(this);
364
		}
364
		}
365
	}
365
	}
366
 
366
 
367
	@Override
367
	@Override
368
	public void valider() {
368
	public void valider() {
369
		if (estInstancie) {
369
		if (estInstancie) {
370
			// on vide les mots clés en cours
370
			// on vide les mots clés en cours
371
			motsClesEncours = "";
371
			motsClesEncours = "";
372
			// on suppose que le filtre a change
372
			// on suppose que le filtre a change
373
			filtreModifie = true;
373
			filtreModifie = true;
374
		}
374
		}
375
	}
375
	}
376
 
376
 
377
	public void raz() {
377
	public void raz() {
378
		
378
		
379
		if(arbreInitialise) {
379
		if(arbreInitialise) {
380
			// on vide tous les noeuds de l'ancien arbre
380
			// on vide tous les noeuds de l'ancien arbre
381
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
381
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
382
			for (int i = 0; i < rootChild.length; i++) {
382
			for (int i = 0; i < rootChild.length; i++) {
383
				
383
				
384
				rootChild[i].remove();
384
				rootChild[i].remove();
385
			}
385
			}
386
			
386
			
387
			arbreInitialise = false ;
387
			arbreInitialise = false ;
388
			
388
			
389
			// on crée une racine pour l'arbre
389
			// on crée une racine pour l'arbre
390
			TreeNode root = new TreeNode("Tags");
390
			TreeNode root = new TreeNode("Tags");
391
			root.setId("racine"+prefixe);
391
			root.setId("racine"+prefixe);
392
			String[] usObject = { "Mots clés", "racine"+prefixe };
392
			String[] usObject = { "Mots clés", "racine"+prefixe };
393
			root.setUserObject(usObject);
393
			root.setUserObject(usObject);
394
			
394
			
395
			root.setExpandable(true);
395
			root.setExpandable(true);
396
			
396
			
397
			arbreMotsCles.setRootNode(root);
397
			arbreMotsCles.setRootNode(root);
398
			
398
			
399
			arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
399
			arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
400
	
400
	
401
				@Override
401
				@Override
402
				public void onClick(Node node, EventObject e) {
402
				public void onClick(Node node, EventObject e) {
403
					if(!arbreInitialise) {
403
					if(!arbreInitialise) {
404
						expand();
404
						expand();
405
					}
405
					}
406
				}
406
				}
407
	
407
	
408
				@Override
408
				@Override
409
				public void onExpand(Node node) {
409
				public void onExpand(Node node) {
410
					if(!arbreInitialise) {
410
					if(!arbreInitialise) {
411
						obtenirArbreMotsCles();
411
						obtenirArbreMotsCles();
412
						arbreInitialise = true;
412
						arbreInitialise = true;
413
					}
413
					}
414
				}
414
				}
415
			});
415
			});
416
		}
416
		}
417
	}
417
	}
418
 
418
 
419
	@Override
419
	@Override
420
	public void viderFiltre() {
420
	public void viderFiltre() {
421
		motsClesEncours = "";
421
		motsClesEncours = "";
422
		arbreMotsCles.getSelectionModel().clearSelections();
422
		arbreMotsCles.getSelectionModel().clearSelections();
423
	}
423
	}
424
 
424
 
425
}
425
}