Subversion Repositories eFlore/Applications.cel

Rev

Rev 798 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 798 Rev 1084
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
 
7
 
8
import com.google.gwt.user.client.Window;
8
import com.google.gwt.user.client.Window;
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
			public void onClick(Node node, EventObject e) {
135
			public void onClick(Node node, EventObject e) {
136
				if(!arbreInitialise) {
136
				if(!arbreInitialise) {
137
					expand();
137
					expand();
138
				}
138
				}
139
			}
139
			}
140
 
140
 
141
			public void onExpand(Node node) {
141
			public void onExpand(Node node) {
142
				if(!arbreInitialise) {
142
				if(!arbreInitialise) {
143
					obtenirArbreMotsCles();
143
					obtenirArbreMotsCles();
144
					arbreInitialise = true;
144
					arbreInitialise = true;
145
				}
145
				}
146
			}
146
			}
147
 
147
 
148
		});
148
		});
149
		
149
		
150
		this.setPaddings(5);
150
		this.setPaddings(5);
151
 
151
 
152
		this.setBorder(false);
152
		this.setBorder(false);
153
		this.setCollapsible(true);
153
		this.setCollapsible(true);
154
		this.setAutoWidth(true);
154
		this.setAutoWidth(true);
155
 
155
 
156
		// on ajoute les listeners
156
		// on ajoute les listeners
157
		ajouterListenersPanel();
157
		ajouterListenersPanel();
158
		estInstancie = false;
158
		estInstancie = false;
159
	}
159
	}
160
 
160
 
161
	/**
161
	/**
162
	 * Ajoute les listeners pour le rendu du panel
162
	 * Ajoute les listeners pour le rendu du panel
163
	 */
163
	 */
164
	private void ajouterListenersPanel() {
164
	private void ajouterListenersPanel() {
165
		this.addListener(new PanelListenerAdapter() {
165
		this.addListener(new PanelListenerAdapter() {
166
 
166
 
167
			// on instancie réellement les composants au moment du rendu pour
167
			// on instancie réellement les composants au moment du rendu pour
168
			// accélérer l'affichage
168
			// accélérer l'affichage
169
			// et éviter des bugs
169
			// et éviter des bugs
170
			public void onRender(Component component) {
170
			public void onRender(Component component) {
171
 
171
 
172
				// on interdit le drag and drop dans l'arbre
172
				// on interdit le drag and drop dans l'arbre
173
				arbreMotsCles.setEnableDD(false);
173
				arbreMotsCles.setEnableDD(false);
174
				arbreMotsCles.setAutoWidth(false);
174
				arbreMotsCles.setAutoWidth(false);
175
				arbreMotsCles.setAutoScroll(true);
175
				arbreMotsCles.setAutoScroll(true);
176
				arbreMotsCles.setBorder(false);
176
				arbreMotsCles.setBorder(false);
177
 
177
 
178
				// on met en forme le layout
178
				// on met en forme le layout
179
				((Panel) component).add(arbreMotsCles,new RowLayoutData("80%"));
179
				((Panel) component).add(arbreMotsCles,new RowLayoutData("80%"));
180
 
180
 
181
				// on ajoute les listeners d'évenements
181
				// on ajoute les listeners d'évenements
182
				ajouterListeners();
182
				ajouterListeners();
183
				//obtenirArbreMotsCles();
183
				//obtenirArbreMotsCles();
184
			}
184
			}
185
			
185
			
186
		});
186
		});
187
	}
187
	}
188
 
188
 
189
	/**
189
	/**
190
	 * ajoute les listeners pour les boutons et le cochage des mots clés
190
	 * ajoute les listeners pour les boutons et le cochage des mots clés
191
	 */
191
	 */
192
	private void ajouterListeners() {
192
	private void ajouterListeners() {
193
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
193
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
194
								
194
								
195
			// gestion du clic sur un noeud
195
			// gestion du clic sur un noeud
196
			public void onClick(TreeNode node, EventObject e) {
196
			public void onClick(TreeNode node, EventObject e) {
197
 
197
 
198
				e.stopEvent();
198
				e.stopEvent();
199
								
199
								
200
				boolean multi = false;
200
				boolean multi = false;
201
				if(e.hasModifier()) {
201
				if(e.hasModifier()) {
202
					multi = true;
202
					multi = true;
203
				}
203
				}
204
				gererClicNoeud(node,multi);
204
				gererClicNoeud(node,multi);
205
			}
205
			}
206
		});
206
		});
207
	}
207
	}
208
	
208
	
209
	/**
209
	/**
210
	 * Fonction de gestion sur le clic sur le noeud
210
	 * Fonction de gestion sur le clic sur le noeud
211
	 * 
211
	 * 
212
	 * @param node
212
	 * @param node
213
	 */
213
	 */
214
	public void gererClicNoeud(TreeNode node, boolean multi) {
214
	public void gererClicNoeud(TreeNode node, boolean multi) {
215
		
215
		
216
		if(!arbreInitialise) {
216
		if(!arbreInitialise) {
217
			obtenirArbreMotsCles();
217
			obtenirArbreMotsCles();
218
		} else {
218
		} else {
219
			if(node.equals(arbreMotsCles.getRootNode())) {
219
			if(node.equals(arbreMotsCles.getRootNode())) {
220
				arbreMotsCles.getSelectionModel().clearSelections();
220
				arbreMotsCles.getSelectionModel().clearSelections();
221
			} else {
221
			} else {
222
				((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi);
222
				((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi);
223
			}
223
			}
224
			filtreModifie = true;
224
			filtreModifie = true;
225
			iMediateur.obtenirPhotoGalerie();
225
			iMediateur.obtenirPhotoGalerie();
226
		}
226
		}
227
	}
227
	}
228
 
228
 
229
	/**
229
	/**
230
	 * Méthode héritée de l'interface rafraichissable
230
	 * Méthode héritée de l'interface rafraichissable
231
	 */
231
	 */
232
	public void rafraichir(Object nouvelleDonnees,
232
	public void rafraichir(Object nouvelleDonnees,
233
			boolean repandreRaffraichissement) {
233
			boolean repandreRaffraichissement) {
234
 
234
 
235
		// si on a reçu un arbre
235
		// si on a reçu un arbre
236
		if (nouvelleDonnees instanceof Tree) {
236
		if (nouvelleDonnees instanceof Tree) {
237
			Tree nouvelArbre = (Tree) nouvelleDonnees;
237
			Tree nouvelArbre = (Tree) nouvelleDonnees;
238
			
238
			
239
			// on vide tous les noeuds de l'ancien arbre
239
			// on vide tous les noeuds de l'ancien arbre
240
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
240
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
241
			for (int i = 0; i < rootChild.length; i++) {
241
			for (int i = 0; i < rootChild.length; i++) {
242
				
242
				
243
				rootChild[i].remove();
243
				rootChild[i].remove();
244
			}
244
			}
245
 
245
 
246
			// et on recopie le nouvel arbre
246
			// et on recopie le nouvel arbre
247
			copierFilsNoeud(nouvelArbre.getRootNode(), arbreMotsCles
247
			copierFilsNoeud(nouvelArbre.getRootNode(), arbreMotsCles
248
					.getRootNode());
248
					.getRootNode());
249
 
249
 
250
			// si l'arbre n'était pas encore considéré comme instancié
250
			// si l'arbre n'était pas encore considéré comme instancié
251
			if (!estInstancie) {
251
			if (!estInstancie) {
252
				// on signale que oui
252
				// on signale que oui
253
				estInstancie = true;
253
				estInstancie = true;
254
			}
254
			}
255
			
255
			
256
			if(!arbreInitialise) {
256
			if(!arbreInitialise) {
257
				arbreInitialise = true;
257
				arbreInitialise = true;
258
			}
258
			}
259
			
259
			
260
			arbreMotsCles.setRootNode(arbreMotsCles.getRootNode());
260
			arbreMotsCles.setRootNode(arbreMotsCles.getRootNode());
261
 
261
 
262
			// l'état du filtre est réinitialisé
262
			// l'état du filtre est réinitialisé
263
			filtreModifie = false;
263
			filtreModifie = false;
264
			doLayout() ;
264
			doLayout() ;
-
 
265
			
-
 
266
			arbreMotsCles.expandAll();
265
		}
267
		}
266
	}
268
	}
267
 
269
 
268
	/**
270
	/**
269
	 * Accesseur pour le médiateur
271
	 * Accesseur pour le médiateur
270
	 * 
272
	 * 
271
	 * @return le médiateur associé
273
	 * @return le médiateur associé
272
	 */
274
	 */
273
	public ImageMediateur getIMediateur() {
275
	public ImageMediateur getIMediateur() {
274
		return iMediateur;
276
		return iMediateur;
275
	}
277
	}
276
	
278
	
277
	public ObservationMediateur getOMediateur() {
279
	public ObservationMediateur getOMediateur() {
278
		return oMediateur ;
280
		return oMediateur ;
279
	}
281
	}
280
 
282
 
281
	/**
283
	/**
282
	 * Accesseur pour le panneau contenant l'arbre
284
	 * Accesseur pour le panneau contenant l'arbre
283
	 * 
285
	 * 
284
	 * @return le panneau de l'arbre des mots clés
286
	 * @return le panneau de l'arbre des mots clés
285
	 */
287
	 */
286
	public TreePanel getArbreMotsCles() {
288
	public TreePanel getArbreMotsCles() {
287
		return arbreMotsCles;
289
		return arbreMotsCles;
288
	}
290
	}
289
 
291
 
290
	/**
292
	/**
291
	 * Méthode héritée de Filtrable renvoie le nom du filtre
293
	 * Méthode héritée de Filtrable renvoie le nom du filtre
292
	 */
294
	 */
293
	public String renvoyerNomFiltre() {
295
	public String renvoyerNomFiltre() {
294
 
296
 
295
		return "mots clés";
297
		return "mots clés";
296
	}
298
	}
297
 
299
 
298
	/**
300
	/**
299
	 * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
301
	 * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
300
	 * 
302
	 * 
301
	 * @return un tableau contenant le nom du champ à filtrer et sa valeur
303
	 * @return un tableau contenant le nom du champ à filtrer et sa valeur
302
	 */
304
	 */
303
	public String[] renvoyerValeursAFiltrer() {
305
	public String[] renvoyerValeursAFiltrer() {
304
		
306
		
305
		String val = "";
307
		String val = "";
306
		
308
		
307
		TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes();
309
		TreeNode[] noeuds = ((MultiSelectionModel)arbreMotsCles.getSelectionModel()).getSelectedNodes();
308
		
310
		
309
		for(int i = 0; i< noeuds.length ; i++) {
311
		for(int i = 0; i< noeuds.length ; i++) {
310
			if(noeuds[i].getDepth() > 0) {
312
			if(noeuds[i].getDepth() > 0) {
311
				
313
				
312
				String[] userObj = (String[])noeuds[i].getUserObject();
314
				String[] userObj = (String[])noeuds[i].getUserObject();
313
				String idMotCle = noeuds[i].getId();
315
				String idMotCle = noeuds[i].getId();
314
				
316
				
315
				if(userObj != null && userObj[1] != null) {
317
				if(userObj != null && userObj[1] != null) {
316
					idMotCle = userObj[1];
318
					idMotCle = userObj[1];
317
				}
319
				}
318
				
320
				
319
				val += ";"+idMotCle;
321
				val += ";"+idMotCle;
320
			}
322
			}
321
		}
323
		}
322
		
324
		
323
		val = val.replaceFirst(";", "");
325
		val = val.replaceFirst(";", "");
324
		
326
		
325
		String[] valeursFiltres = {"ci_meta_mots_cles", val};
327
		String[] valeursFiltres = {"ci_meta_mots_cles", val};
326
 
328
 
327
		return valeursFiltres;
329
		return valeursFiltres;
328
	}
330
	}
329
 
331
 
330
	/**
332
	/**
331
	 * Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un
333
	 * Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un
332
	 * copie du sous arbre du premier noeud, qu'elle concatène au deuxième
334
	 * copie du sous arbre du premier noeud, qu'elle concatène au deuxième
333
	 * 
335
	 * 
334
	 * @param ndPereOriginal
336
	 * @param ndPereOriginal
335
	 *            le père des noeuds de l'arbre original
337
	 *            le père des noeuds de l'arbre original
336
	 * @param ndPereCopie
338
	 * @param ndPereCopie
337
	 *            le père qui va recevoir les copies
339
	 *            le père qui va recevoir les copies
338
	 */
340
	 */
339
	private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) {
341
	private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie) {
340
		if (ndPereCopie != null && ndPereOriginal != null) {
342
		if (ndPereCopie != null && ndPereOriginal != null) {
341
			Node[] ndNodeFils = ndPereOriginal.getChildNodes();
343
			Node[] ndNodeFils = ndPereOriginal.getChildNodes();
342
			
344
			
343
			for (int i = 0; i < ndNodeFils.length; i++) {
345
			for (int i = 0; i < ndNodeFils.length; i++) {
344
 
346
 
345
				String[] usObj = (String[]) ndNodeFils[i].getUserObject();
347
				String[] usObj = (String[]) ndNodeFils[i].getUserObject();
346
				TreeNode child = new TreeNode(usObj[0]);
348
				TreeNode child = new TreeNode(usObj[0]);
347
				child.setId(usObj[1] +prefixe);
349
				child.setId(usObj[1] +prefixe);
348
				child.setUserObject(usObj);
350
				child.setUserObject(usObj);
349
				ndPereCopie.appendChild(child);
351
				ndPereCopie.appendChild(child);
350
 
352
 
351
				if (!ndNodeFils[i].isLeaf()) {
353
				if (!ndNodeFils[i].isLeaf()) {
352
					copierFilsNoeud(ndNodeFils[i], child);
354
					copierFilsNoeud(ndNodeFils[i], child);
353
				}
355
				}
354
 
356
 
355
			}
357
			}
356
		}
358
		}
357
	}
359
	}
358
 
360
 
359
	/**
361
	/**
360
	 * Méthode héritée de Filtrable Renvoie l'état du filtre (modifié ou non)
362
	 * Méthode héritée de Filtrable Renvoie l'état du filtre (modifié ou non)
361
	 */
363
	 */
362
	public boolean renvoyerEtatFiltre() {
364
	public boolean renvoyerEtatFiltre() {
363
 
365
 
364
		return filtreModifie;
366
		return filtreModifie;
365
	}
367
	}
366
	
368
	
367
	public void mettreAJourMotsCles(String valeur, String id) {
369
	public void mettreAJourMotsCles(String valeur, String id) {
368
		if(getIMediateur() != null) {
370
		if(getIMediateur() != null) {
369
			getIMediateur().mettreAjourMotsClesId(valeur,
371
			getIMediateur().mettreAjourMotsClesId(valeur,
370
				id);
372
				id);
371
		}
373
		}
372
		else
374
		else
373
		{
375
		{
374
			getOMediateur().mettreAjourMotsClesId(valeur, id);
376
			getOMediateur().mettreAjourMotsClesId(valeur, id);
375
		}
377
		}
376
	}
378
	}
377
	
379
	
378
	public void obtenirArbreMotsCles() {
380
	public void obtenirArbreMotsCles() {
379
		if(getIMediateur() != null) {
381
		if(getIMediateur() != null) {
380
			getIMediateur().obtenirArbreMotsCles(this);
382
			getIMediateur().obtenirArbreMotsCles(this);
381
		}
383
		}
382
		else
384
		else
383
		{
385
		{
384
			getOMediateur().obtenirArbreMotsCles(this);
386
			getOMediateur().obtenirArbreMotsCles(this);
385
		}
387
		}
386
	}
388
	}
387
 
389
 
388
	public void valider() {
390
	public void valider() {
389
		if (estInstancie) {
391
		if (estInstancie) {
390
			// on vide les mots clés en cours
392
			// on vide les mots clés en cours
391
			motsClesEncours = "";
393
			motsClesEncours = "";
392
			
-
 
393
			
-
 
394
 
394
			
395
			// on suppose que le filtre a change
395
			// on suppose que le filtre a change
396
			filtreModifie = true;
396
			filtreModifie = true;
397
		}
397
		}
398
	}
398
	}
399
 
399
 
400
	public void raz() {
400
	public void raz() {
401
		
401
		
402
		if(arbreInitialise) {
402
		if(arbreInitialise) {
403
			// on vide tous les noeuds de l'ancien arbre
403
			// on vide tous les noeuds de l'ancien arbre
404
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
404
			Node[] rootChild = arbreMotsCles.getRootNode().getChildNodes();
405
			for (int i = 0; i < rootChild.length; i++) {
405
			for (int i = 0; i < rootChild.length; i++) {
406
				
406
				
407
				rootChild[i].remove();
407
				rootChild[i].remove();
408
			}
408
			}
409
			
409
			
410
			arbreInitialise = false ;
410
			arbreInitialise = false ;
411
			
411
			
412
			// on crée une racine pour l'arbre
412
			// on crée une racine pour l'arbre
413
			TreeNode root = new TreeNode("Tags");
413
			TreeNode root = new TreeNode("Tags");
414
			root.setId("racine"+prefixe);
414
			root.setId("racine"+prefixe);
415
			String[] usObject = { "Mots clés", "racine"+prefixe };
415
			String[] usObject = { "Mots clés", "racine"+prefixe };
416
			root.setUserObject(usObject);
416
			root.setUserObject(usObject);
417
			
417
			
418
			root.setExpandable(true);
418
			root.setExpandable(true);
419
			
419
			
420
			arbreMotsCles.setRootNode(root);
420
			arbreMotsCles.setRootNode(root);
421
			
421
			
422
			arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
422
			arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
423
	
423
	
424
				public void onClick(Node node, EventObject e) {
424
				public void onClick(Node node, EventObject e) {
425
					if(!arbreInitialise) {
425
					if(!arbreInitialise) {
426
						expand();
426
						expand();
427
					}
427
					}
428
				}
428
				}
429
	
429
	
430
				public void onExpand(Node node) {
430
				public void onExpand(Node node) {
431
					if(!arbreInitialise) {
431
					if(!arbreInitialise) {
432
						obtenirArbreMotsCles();
432
						obtenirArbreMotsCles();
433
						arbreInitialise = true;
433
						arbreInitialise = true;
434
					}
434
					}
435
				}
435
				}
436
			});
436
			});
437
		}
437
		}
438
	}
438
	}
439
 
439
 
440
	public void viderFiltre() {
440
	public void viderFiltre() {
441
		motsClesEncours = "";
441
		motsClesEncours = "";
442
		arbreMotsCles.getSelectionModel().clearSelections();
442
		arbreMotsCles.getSelectionModel().clearSelections();
443
	}
443
	}
444
 
444
 
445
}
445
}