Subversion Repositories eFlore/Applications.cel

Rev

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

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