Subversion Repositories eFlore/Applications.cel

Rev

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

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