Subversion Repositories eFlore/Archives.cel-v2

Rev

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

Rev 48 Rev 49
1
package org.tela_botanica.client.image;
1
package org.tela_botanica.client.image;
2
 
2
 
3
import org.tela_botanica.client.interfaces.IdVue;
3
import org.tela_botanica.client.interfaces.IdVue;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.VueListable;
5
import org.tela_botanica.client.interfaces.VueListable;
6
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
6
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
7
import org.tela_botanica.client.vues.BarreOutilsVue;
7
import org.tela_botanica.client.vues.BarreOutilsVue;
8
import org.tela_botanica.client.vues.BarreRechercheFiltreVue;
8
import org.tela_botanica.client.vues.BarreRechercheFiltreVue;
9
import org.tela_botanica.client.vues.GalerieImageVue;
9
import org.tela_botanica.client.vues.GalerieImageVue;
10
import org.tela_botanica.client.vues.ListeImageVue;
10
import org.tela_botanica.client.vues.ListeImageVue;
11
import org.tela_botanica.client.vues.MenuFiltreVue;
11
import org.tela_botanica.client.vues.MenuFiltreVue;
12
import org.tela_botanica.client.vues.MenuImageVue;
12
import org.tela_botanica.client.vues.MenuImageVue;
13
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
13
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
14
import org.tela_botanica.client.vues.ZoomImageVue;
14
import org.tela_botanica.client.vues.ZoomImageVue;
15
 
15
 
16
import com.google.gwt.user.client.DOM;
16
import com.google.gwt.user.client.DOM;
17
import com.google.gwt.user.client.Element;
17
import com.google.gwt.user.client.Element;
18
import com.google.gwt.user.client.Event;
18
import com.google.gwt.user.client.Event;
19
import com.google.gwt.user.client.Window;
19
import com.google.gwt.user.client.Window;
20
import com.gwtext.client.core.EventObject;
20
import com.gwtext.client.core.EventObject;
21
import com.gwtext.client.core.Ext;
21
import com.gwtext.client.core.Ext;
22
import com.gwtext.client.core.ExtElement;
22
import com.gwtext.client.core.ExtElement;
23
import com.gwtext.client.core.RegionPosition;
23
import com.gwtext.client.core.RegionPosition;
24
import com.gwtext.client.data.Record;
24
import com.gwtext.client.data.Record;
25
import com.gwtext.client.data.Store;
25
import com.gwtext.client.data.Store;
26
import com.gwtext.client.data.Tree;
26
import com.gwtext.client.data.Tree;
27
import com.gwtext.client.widgets.DataView;
27
import com.gwtext.client.widgets.DataView;
28
import com.gwtext.client.widgets.Panel;
28
import com.gwtext.client.widgets.Panel;
29
import com.gwtext.client.widgets.TabPanel;
29
import com.gwtext.client.widgets.TabPanel;
30
import com.gwtext.client.widgets.layout.BorderLayout;
30
import com.gwtext.client.widgets.layout.BorderLayout;
31
import com.gwtext.client.widgets.layout.BorderLayoutData;
31
import com.gwtext.client.widgets.layout.BorderLayoutData;
32
import com.gwtext.client.widgets.layout.FitLayout;
32
import com.gwtext.client.widgets.layout.FitLayout;
33
import com.gwtext.client.widgets.menu.BaseItem;
33
import com.gwtext.client.widgets.menu.BaseItem;
34
import com.gwtext.client.widgets.menu.Item;
34
import com.gwtext.client.widgets.menu.Item;
35
import com.gwtext.client.widgets.menu.Menu;
35
import com.gwtext.client.widgets.menu.Menu;
36
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
36
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
37
import com.gwtext.client.widgets.tree.TreeEditor;
37
import com.gwtext.client.widgets.tree.TreeEditor;
38
import com.gwtext.client.widgets.tree.TreeNode;
38
import com.gwtext.client.widgets.tree.TreeNode;
39
 
39
 
40
/**
40
/**
41
 * Mediateur gérant les interactions entre vues et les echanges de données
41
 * Mediateur gérant les interactions entre vues et les echanges de données
42
 * C'est un singleton. 
42
 * C'est un singleton. 
43
 * @author aurelien
43
 * @author aurelien
44
 *
44
 *
45
 */
45
 */
46
public class ImageMediateur {
46
public class ImageMediateur {
47
	
47
	
48
	/**
48
	/**
49
	 * booleen qui verifie l'unicite de l'instance (donc static)
49
	 * booleen qui verifie l'unicite de l'instance (donc static)
50
	 */
50
	 */
51
	private static boolean estInstancie = false ;  
51
	private static boolean estInstancie = false ;  
52
	
52
	
53
	/**
53
	/**
54
	 * modele de données
54
	 * modele de données
55
	 */
55
	 */
56
	private ImageModele iModele = null ;
56
	private ImageModele iModele = null ;
57
	
57
	
58
	private String identifiant = "0" ;
58
	private String identifiant = "0" ;
59
 
59
 
60
	/**
60
	/**
61
	 * panneau principal des images (onglet "images")
61
	 * panneau principal des images (onglet "images")
62
	 */
62
	 */
63
	private final Panel panneauPrincipalImage = new Panel("Images");
63
	private final Panel panneauPrincipalImage = new Panel("Images");
64
	
64
	
65
	/**
65
	/**
66
	 * panneau a onglet pour la liste, la galerie et la vue en grand
66
	 * panneau a onglet pour la liste, la galerie et la vue en grand
67
	 */ 
67
	 */ 
68
	private TabPanel ongletsImage = null ;
68
	private TabPanel ongletsImage = null ;
69
	
69
	
70
	/**
70
	/**
71
	 * conteneur du panneau a onglets
71
	 * conteneur du panneau a onglets
72
	 */
72
	 */
73
	private Panel panneauMenuEtOngletsImage = null ;
73
	private Panel panneauMenuEtOngletsImage = null ;
74
	
74
	
75
	/**
75
	/**
76
	 * galerie de miniature
76
	 * galerie de miniature
77
	 */
77
	 */
78
	private GalerieImageVue galerieImage = null ;
78
	private GalerieImageVue galerieImage = null ;
79
	
79
	
80
	/**
80
	/**
81
	 * liste détaillée des images
81
	 * liste détaillée des images
82
	 */
82
	 */
83
	private ListeImageVue listeImage = null ;
83
	private ListeImageVue listeImage = null ;
84
	
84
	
85
	/**
85
	/**
86
	 * vue agrandie de la l'image selectionnée
86
	 * vue agrandie de la l'image selectionnée
87
	 */
87
	 */
88
	private ZoomImageVue zoomImage = null ;
88
	private ZoomImageVue zoomImage = null ;
89
	
89
	
90
	/**
90
	/**
91
	 * panneau a onglets affichant les métadonnées et les mots clés
91
	 * panneau a onglets affichant les métadonnées et les mots clés
92
	 */
92
	 */
93
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
93
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
94
	
94
	
95
	/**
95
	/**
96
	 * panneau conteneur pour le panneau a onglet des metadonnées
96
	 * panneau conteneur pour le panneau a onglet des metadonnées
97
	 */
97
	 */
98
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
98
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
99
	
99
	
100
	/**
100
	/**
101
	 * menu contextuel de manipulation des images
101
	 * menu contextuel de manipulation des images
102
	 */
102
	 */
103
	private MenuImageVue menuImageVue = null ;
103
	private MenuImageVue menuImageVue = null ;
104
	
104
	
105
	/**
105
	/**
106
	 * barre d'outils
106
	 * barre d'outils
107
	 */
107
	 */
108
	private BarreOutilsVue barreOutilsVue = null ;
108
	private BarreOutilsVue barreOutilsVue = null ;
109
	
109
	
110
	/**
110
	/**
111
	 * l'indice du dernier onglet sélectionné
111
	 * l'indice du dernier onglet sélectionné
112
	 */
112
	 */
113
	private int dernierIndexOnglet = 0 ; 
113
	private int dernierIndexOnglet = 0 ; 
114
	
114
	
115
	/**
115
	/**
116
	 * booleen explicitant s'il y a une selection en cours
116
	 * booleen explicitant s'il y a une selection en cours
117
	 */
117
	 */
118
	private boolean selection = false ;
118
	private boolean selection = false ;
119
	
119
	
120
	/**
120
	/**
121
	 * Filtre pour les mots cles
121
	 * Filtre pour les mots cles
122
	 */
122
	 */
123
	private ArbreMotsClesFiltreVue filtreMotsCles = null ;
123
	private ArbreMotsClesFiltreVue filtreMotsCles = null ;
124
	
124
	
125
	/**
125
	/**
126
	 * Filtre pour les commentaires
126
	 * Filtre pour les commentaires
127
	 */
127
	 */
128
	private BarreRechercheFiltreVue filtreCommentaires = null ;
128
	private BarreRechercheFiltreVue filtreCommentaires = null ;
129
 
129
 
130
	/**
130
	/**
131
	 * constructeur privé (on accède a la classe par la méthode getInstance
131
	 * constructeur privé (on accède a la classe par la méthode getInstance
132
	 */
132
	 */
133
	private ImageMediateur()
133
	private ImageMediateur()
134
	{
134
	{
135
		// quelques variables de position pour les borderlayouts
135
		// quelques variables de position pour les borderlayouts
136
		final BorderLayoutData regionNord = new BorderLayoutData(
136
		final BorderLayoutData regionNord = new BorderLayoutData(
137
				RegionPosition.NORTH) ;
137
				RegionPosition.NORTH) ;
138
		
138
		
139
		final BorderLayoutData regionCentre = new BorderLayoutData(
139
		final BorderLayoutData regionCentre = new BorderLayoutData(
140
				RegionPosition.CENTER) ;
140
				RegionPosition.CENTER) ;
141
 
141
 
142
		final BorderLayoutData regionEst = new BorderLayoutData(
142
		final BorderLayoutData regionEst = new BorderLayoutData(
143
				RegionPosition.EAST);
143
				RegionPosition.EAST);
144
		regionEst.setSplit(true);
144
		regionEst.setSplit(true);
145
		
145
		
146
		afficherMenuId() ;
146
		afficherMenuId() ;
147
 
147
 
148
		
148
		
149
		// on crée un modèle
149
		// on crée un modèle
150
		iModele = ImageModele.Instance(this);
150
		iModele = ImageModele.Instance(this);
151
		// et on demande l'arbre des mots clés
151
		// et on demande l'arbre des mots clés
152
		iModele.initialiserArbreMotsCles() ;
152
		iModele.initialiserArbreMotsCles() ;
153
		
153
		
154
		// on gère la mise en page du panneau principal
154
		// on gère la mise en page du panneau principal
155
		panneauPrincipalImage.setLayout(new BorderLayout());
155
		panneauPrincipalImage.setLayout(new BorderLayout());
156
		
156
		
157
		// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
157
		// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
158
		panneauMenuEtOngletsImage = new Panel() ;
158
		panneauMenuEtOngletsImage = new Panel() ;
159
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
159
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
160
		
160
		
161
		// le panneau à onglet qui contient les trois vues
161
		// le panneau à onglet qui contient les trois vues
162
		ongletsImage = new TabPanel();
162
		ongletsImage = new TabPanel();
163
		
163
		
164
		// la galerie
164
		// la galerie
165
		galerieImage = new GalerieImageVue(this) ;
165
		galerieImage = new GalerieImageVue(this) ;
166
		
166
		
167
		// la liste des images
167
		// la liste des images
168
		Panel panneauListeImage = new Panel("Liste");
168
		Panel panneauListeImage = new Panel("Liste");
169
		listeImage = new ListeImageVue(this);
169
		listeImage = new ListeImageVue(this);
170
		panneauListeImage.setLayout(new FitLayout());
170
		panneauListeImage.setLayout(new FitLayout());
171
		panneauListeImage.add(listeImage);
171
		panneauListeImage.add(listeImage);
172
		
172
		
173
		// le panneau zoom
173
		// le panneau zoom
174
		zoomImage = new ZoomImageVue(this);
174
		zoomImage = new ZoomImageVue(this);
175
		
175
		
176
		// on ajoute les panneaux au panneau à onglets
176
		// on ajoute les panneaux au panneau à onglets
177
		ongletsImage.add(galerieImage);
177
		ongletsImage.add(galerieImage);
178
		ongletsImage.add(zoomImage);
178
		ongletsImage.add(zoomImage);
179
		ongletsImage.add(panneauListeImage);
179
		ongletsImage.add(panneauListeImage);
180
		
180
		
181
		// on crée les menu et la barre de vue
181
		// on crée les menu et la barre de vue
182
		menuImageVue = new MenuImageVue(this) ;
182
		menuImageVue = new MenuImageVue(this) ;
183
		barreOutilsVue = new BarreOutilsVue(this) ;
183
		barreOutilsVue = new BarreOutilsVue(this) ;
184
		
184
		
185
		// on initialise le volet qui contient les mots clés
185
		// on initialise le volet qui contient les mots clés
186
		detailsEtMotsCles.setWidth("25%");
186
		detailsEtMotsCles.setWidth("25%");
187
		detailsEtMotsCles.setAnimCollapse(true);
187
		detailsEtMotsCles.setAnimCollapse(true);
188
		detailsEtMotsCles.setTitleCollapse(true);
188
		detailsEtMotsCles.setTitleCollapse(true);
189
		detailsEtMotsCles.setCollapsible(true);
189
		detailsEtMotsCles.setCollapsible(true);
190
		
190
		
191
		filtreMotsCles = new ArbreMotsClesFiltreVue(this) ;
191
		filtreMotsCles = new ArbreMotsClesFiltreVue(this) ;
192
		filtreCommentaires = new BarreRechercheFiltreVue(this) ;
192
		filtreCommentaires = new BarreRechercheFiltreVue(this) ;
193
		
193
		
194
		// on crée le panneau conteneur des métadonnées et infos
194
		// on crée le panneau conteneur des métadonnées et infos
195
		metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
195
		metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
196
		// et on l'inclut dans le volet approprié
196
		// et on l'inclut dans le volet approprié
197
		detailsEtMotsCles.add(metadonneesIptcExif) ;
197
		detailsEtMotsCles.add(metadonneesIptcExif) ;
198
			
198
			
199
		// on ajoute la barre de vue au nord du panneau qui contient menu et onglets d'images
199
		// on ajoute la barre de vue au nord du panneau qui contient menu et onglets d'images
200
		panneauMenuEtOngletsImage.add(barreOutilsVue,regionNord) ;
200
		panneauMenuEtOngletsImage.add(barreOutilsVue,regionNord) ;
201
		// les onglets au centre
201
		// les onglets au centre
202
		panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
202
		panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
203
		
203
		
204
		// on ajoute le panneau qui contient le menu et les onglets d'images au centre
204
		// on ajoute le panneau qui contient le menu et les onglets d'images au centre
205
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
205
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
206
		// et le panneau de métadonnées et d'info sur le coté droit
206
		// et le panneau de métadonnées et d'info sur le coté droit
207
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
207
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
208
		
-
 
209
	}
208
	}
210
	
-
 
211
	/**
209
	/**
212
	 * Change la valeur du booleen de selection
210
	 * Change la valeur du booleen de selection
213
	 * @param selection la nouvelle valeur du booléen
211
	 * @param selection la nouvelle valeur du booléen
214
	 */
212
	 */
215
	public void setSelection(boolean selection) {
213
	public void setSelection(boolean selection) {
216
		this.selection = selection;
214
		this.selection = selection;
217
	}
215
	}
218
 
216
 
219
	/**
217
	/**
220
	 * renvoie la valeur du booleen de selection
218
	 * renvoie la valeur du booleen de selection
221
	 * @return la valeur du booleen de selection
219
	 * @return la valeur du booleen de selection
222
	 */
220
	 */
223
	public boolean isSelection() {
221
	public boolean isSelection() {
224
		return selection;
222
		return selection;
225
	}
223
	}
226
 
224
 
227
	/**
225
	/**
228
	 * Retourne une instance de manière unique
226
	 * Retourne une instance de manière unique
229
	 * @return l'instance unique du médiateur
227
	 * @return l'instance unique du médiateur
230
	 */
228
	 */
231
	public static ImageMediateur Instance()
229
	public static ImageMediateur Instance()
232
	{
230
	{
233
			if(!estInstancie)
231
			if(!estInstancie)
234
			{
232
			{
235
				estInstancie = true ;
233
				estInstancie = true ;
236
				return new ImageMediateur() ;
234
				return new ImageMediateur() ;
237
			}
235
			}
238
			else
236
			else
239
			{
237
			{
240
				return null ;
238
				return null ;
241
				
239
				
242
			}
240
			}
243
	}
241
	}
244
	
242
	
245
	/**
243
	/**
246
	 * Renvoie l'identifiant de l'utilisateur en cours
244
	 * Renvoie l'identifiant de l'utilisateur en cours
247
	 * @return l'identifiant de l'utilisateur
245
	 * @return l'identifiant de l'utilisateur
248
	 */
246
	 */
249
	public String getIdentifiant()
247
	public String getIdentifiant()
250
	{
248
	{
251
		return identifiant ;
249
		return identifiant ;
252
	}
250
	}
253
	
251
	
254
	public void setIdentifiant(String id)
252
	public void setIdentifiant(String id)
255
	{
253
	{
256
		identifiant = id ;
254
		identifiant = id ;
257
	}
255
	}
258
	
256
	
259
	public void changerUtilisateur()
257
	public void changerUtilisateur()
260
	{
258
	{
261
		getIModele().initialiserArbreMotsCles() ;
259
		getIModele().initialiserArbreMotsCles() ;
262
		obtenirPhotoGalerie(getGalerieImage()) ;
260
		obtenirPhotoGalerie(getGalerieImage()) ;
263
	}
261
	}
264
 
262
 
265
	/**
263
	/**
266
	 * Accesseur pour le modèle associé au médiateur
264
	 * Accesseur pour le modèle associé au médiateur
267
	 * @return le modèle associé
265
	 * @return le modèle associé
268
	 */
266
	 */
269
	public ImageModele getIModele() {
267
	public ImageModele getIModele() {
270
		return iModele;
268
		return iModele;
271
	}
269
	}
272
 
270
 
273
	/**
271
	/**
274
	 * Accesseur pour le panneau principal
272
	 * Accesseur pour le panneau principal
275
	 * @return le panneau principal
273
	 * @return le panneau principal
276
	 */
274
	 */
277
	public Panel getPanneauPrincipalImage() {
275
	public Panel getPanneauPrincipalImage() {
278
		return panneauPrincipalImage;
276
		return panneauPrincipalImage;
279
	}
277
	}
280
 
278
 
281
	/**
279
	/**
282
	 * Accesseur pour le panneau à onglets
280
	 * Accesseur pour le panneau à onglets
283
	 * @return le panneau à onglets
281
	 * @return le panneau à onglets
284
	 */
282
	 */
285
	public TabPanel getOngletsImage() {
283
	public TabPanel getOngletsImage() {
286
		return ongletsImage;
284
		return ongletsImage;
287
	}
285
	}
288
 
286
 
289
	/**
287
	/**
290
	 * Accesseur pour la galerie d'images 
288
	 * Accesseur pour la galerie d'images 
291
	 * @return la galerie d'image
289
	 * @return la galerie d'image
292
	 */
290
	 */
293
	public GalerieImageVue getGalerieImage() {
291
	public GalerieImageVue getGalerieImage() {
294
		return galerieImage;
292
		return galerieImage;
295
	}
293
	}
296
 
294
 
297
	public ListeImageVue getListeImage() {
295
	public ListeImageVue getListeImage() {
298
		return listeImage;
296
		return listeImage;
299
	}
297
	}
300
 
298
 
301
	/**
299
	/**
302
	 * Accesseur pour le panneau "zoom"
300
	 * Accesseur pour le panneau "zoom"
303
	 * @return le panneau zoom
301
	 * @return le panneau zoom
304
	 */
302
	 */
305
	public ZoomImageVue getZoomImage() {
303
	public ZoomImageVue getZoomImage() {
306
		return zoomImage;
304
		return zoomImage;
307
	}
305
	}
308
 
306
 
309
	/**
307
	/**
310
	 * Accesseur pour le panneau détails et mot clés
308
	 * Accesseur pour le panneau détails et mot clés
311
	 * @return le panneau détails et mots clés
309
	 * @return le panneau détails et mots clés
312
	 */
310
	 */
313
	public Panel getDetailsEtMotsCles() {
311
	public Panel getDetailsEtMotsCles() {
314
		return detailsEtMotsCles;
312
		return detailsEtMotsCles;
315
	}
313
	}
316
	
314
	
317
	/**
315
	/**
318
	 * Accesseur pour le booleen d'instanciation
316
	 * Accesseur pour le booleen d'instanciation
319
	 * @return le booleen d'instanciation
317
	 * @return le booleen d'instanciation
320
	 */
318
	 */
321
	public static boolean isEstInstancie() {
319
	public static boolean isEstInstancie() {
322
		return estInstancie;
320
		return estInstancie;
323
	}
321
	}
324
 
322
 
325
	/**
323
	/**
326
	 * Accesseur pour la panneau contenant le menu et les onglets images
324
	 * Accesseur pour la panneau contenant le menu et les onglets images
327
	 * @return le panneauMenuEtOngletsImage
325
	 * @return le panneauMenuEtOngletsImage
328
	 */
326
	 */
329
	public Panel getPanneauMenuEtOngletsImage() {
327
	public Panel getPanneauMenuEtOngletsImage() {
330
		return panneauMenuEtOngletsImage;
328
		return panneauMenuEtOngletsImage;
331
	}
329
	}
332
 
330
 
333
	/**
331
	/**
334
	 * Accesseur pour le menu image
332
	 * Accesseur pour le menu image
335
	 * @return the menuImageVue
333
	 * @return the menuImageVue
336
	 */
334
	 */
337
	public MenuImageVue getMenuImageVue() {
335
	public MenuImageVue getMenuImageVue() {
338
		return menuImageVue;
336
		return menuImageVue;
339
	}
337
	}
340
 
338
 
341
	/**
339
	/**
342
	 * Accesseur pour la barre d'outils
340
	 * Accesseur pour la barre d'outils
343
	 * @return the barreOutilsVue
341
	 * @return the barreOutilsVue
344
	 */
342
	 */
345
	public BarreOutilsVue getBarreOutilsVue() {
343
	public BarreOutilsVue getBarreOutilsVue() {
346
		return barreOutilsVue;
344
		return barreOutilsVue;
347
	}
345
	}
348
 
346
 
349
	/**
347
	/**
350
	 * Accesseur pour le panneau infos et métadonnées
348
	 * Accesseur pour le panneau infos et métadonnées
351
	 * @return the metadonneesIptcExif
349
	 * @return the metadonneesIptcExif
352
	 */
350
	 */
353
	public PanneauMetadonneesVue getMetadonneesIptcExif() {
351
	public PanneauMetadonneesVue getMetadonneesIptcExif() {
354
		return metadonneesIptcExif;
352
		return metadonneesIptcExif;
355
	}
353
	}
356
 
354
 
357
	/**
355
	/**
358
	 * Renvoie l'index du dernier onglet sélectionné
356
	 * Renvoie l'index du dernier onglet sélectionné
359
	 * @return l'index du dernier onglet
357
	 * @return l'index du dernier onglet
360
	 */
358
	 */
361
	public int getDernierIndexOnglet() {
359
	public int getDernierIndexOnglet() {
362
		return dernierIndexOnglet;
360
		return dernierIndexOnglet;
363
	}
361
	}
364
	
362
	
365
	/**
363
	/**
366
	 * Accesseur pour l'arbre des filtres
364
	 * Accesseur pour l'arbre des filtres
367
	 * @return l'arbre pour filtrer les mots clés
365
	 * @return l'arbre pour filtrer les mots clés
368
	 */
366
	 */
369
	public ArbreMotsClesFiltreVue getFiltreMotsCles()
367
	public ArbreMotsClesFiltreVue getFiltreMotsCles()
370
	{
368
	{
371
		return filtreMotsCles ;
369
		return filtreMotsCles ;
372
	}
370
	}
373
	
371
	
374
	/**
372
	/**
375
	 * Accesseur pour la barre de recherche
373
	 * Accesseur pour la barre de recherche
376
	 * @return la barre de recherche pour filtrer les commentaires
374
	 * @return la barre de recherche pour filtrer les commentaires
377
	 */
375
	 */
378
	public BarreRechercheFiltreVue getFiltreCommentaires()
376
	public BarreRechercheFiltreVue getFiltreCommentaires()
379
	{
377
	{
380
		return filtreCommentaires ;
378
		return filtreCommentaires ;
381
	}
379
	}
382
	
380
	
383
	/**
381
	/**
384
	 * Renvoie la vue sélectionné par l'utilisateur
382
	 * Renvoie la vue sélectionné par l'utilisateur
385
	 * @return la vue selectionnée par l'utilisateur
383
	 * @return la vue selectionnée par l'utilisateur
386
	 */
384
	 */
387
	public VueListable getVueSelectionnee()
385
	public VueListable getVueSelectionnee()
388
	{
386
	{
389
		Panel active = ongletsImage.getActiveTab() ;
387
		Panel active = ongletsImage.getActiveTab() ;
390
		if(active != zoomImage)
388
		if(active != zoomImage)
391
		{
389
		{
392
			if(active == galerieImage)
390
			if(active == galerieImage)
393
			{
391
			{
394
				return galerieImage ;
392
				return galerieImage ;
395
			}
393
			}
396
			else
394
			else
397
			{
395
			{
398
				return listeImage ;
396
				return listeImage ;
399
			}
397
			}
400
			
398
			
401
		}
399
		}
402
		else
400
		else
403
		{
401
		{
404
			if(dernierIndexOnglet == 0)
402
			if(dernierIndexOnglet == 0)
405
			{
403
			{
406
				return galerieImage ;
404
				return galerieImage ;
407
			}
405
			}
408
			else
406
			else
409
			{
407
			{
410
				return listeImage ;
408
				return listeImage ;
411
			}
409
			}
412
 
410
 
413
		}
411
		}
414
		
412
		
415
	}
413
	}
-
 
414
	
-
 
415
	
-
 
416
	public void afficherMenuId()
-
 
417
	{
-
 
418
		IdVue i = new IdVue(this) ;
-
 
419
		i.show() ;
-
 
420
	}
-
 
421
	
416
	
422
	
417
	/**
423
	/**
418
	 * Renvoie l'identifiant de la vue en cours
424
	 * Renvoie l'identifiant de la vue en cours
419
	 * @return l'identifiant de la vue en cours de visualisation
425
	 * @return l'identifiant de la vue en cours de visualisation
420
	 */
426
	 */
421
	public String getIdVueSelectionnee()
427
	public String getIdVueSelectionnee()
422
	{
428
	{
423
		Panel active = ongletsImage.getActiveTab() ;
429
		Panel active = ongletsImage.getActiveTab() ;
424
		if(active != zoomImage)
430
		if(active != zoomImage)
425
		{
431
		{
426
			if(active == galerieImage)
432
			if(active == galerieImage)
427
			{
433
			{
428
				return galerieImage.getId() ;
434
				return galerieImage.getId() ;
429
			}
435
			}
430
			else
436
			else
431
			{
437
			{
432
				return listeImage.getId() ;
438
				return listeImage.getId() ;
433
			}
439
			}
434
			
440
			
435
		}
441
		}
436
		else
442
		else
437
		{
443
		{
438
			if(dernierIndexOnglet == 0)
444
			if(dernierIndexOnglet == 0)
439
			{
445
			{
440
				return galerieImage.getId() ;
446
				return galerieImage.getId() ;
441
			}
447
			}
442
			else
448
			else
443
			{
449
			{
444
				return listeImage.getId() ;
450
				return listeImage.getId() ;
445
			}
451
			}
446
 
452
 
447
		}
453
		}
448
		
454
		
449
	}
455
	}
450
	
456
	
451
	/**
457
	/**
452
	 * Met a jour les données provenant du modèle et synchronise les vues entre elles 
458
	 * Met a jour les données provenant du modèle et synchronise les vues entre elles 
453
	 * @param o données de mises a jour pour les vues
459
	 * @param o données de mises a jour pour les vues
454
	 * @param r le refraichissable qui a demandé la mise a jour
460
	 * @param r le refraichissable qui a demandé la mise a jour
455
	 */
461
	 */
456
	public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r)
462
	public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r)
457
	{		
463
	{		
458
		
464
		
459
		if(o instanceof Store) {
465
		if(o instanceof Store) {
460
		
466
		
461
			Store li = (Store)o ;
467
			Store li = (Store)o ;
462
			
468
			
463
			if(li.getCount() <= 0)
469
			if(li.getCount() <= 0)
464
			{
470
			{
465
				aucuneSelection() ;
471
				aucuneSelection() ;
466
			}
472
			}
467
			else
473
			else
468
			{
474
			{
469
				selection() ;
475
				selection() ;
470
			}
476
			}
471
			
477
			
472
		}
478
		}
473
		
479
		
474
		if(r != getGalerieImage())
480
		if(r != getGalerieImage())
475
		{
481
		{
476
			getGalerieImage().rafraichir(o,false);
482
			getGalerieImage().rafraichir(o,false);
477
		}
483
		}
478
		if(r != getZoomImage())
484
		if(r != getZoomImage())
479
		{
485
		{
480
			getZoomImage().rafraichir(o,false);
486
			getZoomImage().rafraichir(o,false);
481
		}
487
		}
482
		if(r != getListeImage())
488
		if(r != getListeImage())
483
		{
489
		{
484
			getListeImage().rafraichir(o,false);
490
			getListeImage().rafraichir(o,false);
485
		}
491
		}
486
		
492
		
487
		aucuneSelection() ;
493
		aucuneSelection() ;
488
		demasquerChargement() ;
494
		demasquerChargement() ;
489
	}
495
	}
490
	
496
	
491
	/**
497
	/**
492
	 * envoie au modèle une demande de mise a jour
498
	 * envoie au modèle une demande de mise a jour
493
	 * @param r la vue demandeuse de mise a jour
499
	 * @param r la vue demandeuse de mise a jour
494
	 */
500
	 */
495
	public void obtenirPhotoGalerie(Rafraichissable r)
501
	public void obtenirPhotoGalerie(Rafraichissable r)
496
	{
502
	{
497
		getIModele().obtenirPhotoGalerie(r) ;
503
		getIModele().obtenirPhotoGalerie(r) ;
498
	}
504
	}
499
	
505
	
500
	/**
506
	/**
501
	 * demande au modèle les métadonnées associées a une image
507
	 * demande au modèle les métadonnées associées a une image
502
	 * @param r la vue demandeuse de mise a jour
508
	 * @param r la vue demandeuse de mise a jour
503
	 * @param id l'identifiant de l'image
509
	 * @param id l'identifiant de l'image
504
	 */
510
	 */
505
	public void obtenirMetadonnees(Rafraichissable r, String id)
511
	public void obtenirMetadonnees(Rafraichissable r, String id)
506
	{
512
	{
507
		getIModele().obtenirMetadonnees(r, id) ;
513
		getIModele().obtenirMetadonnees(r, id) ;
508
	}
514
	}
509
	
515
	
510
	/**
516
	/**
511
	 * demande au modèle les ids des mots clés associés a une image
517
	 * demande au modèle les ids des mots clés associés a une image
512
	 * @param r la vue demandeuse de mise a jour
518
	 * @param r la vue demandeuse de mise a jour
513
	 * @param id l'identifiant de l'image
519
	 * @param id l'identifiant de l'image
514
	 */
520
	 */
515
	public void obtenirMotsClesId(Rafraichissable r, String id)
521
	public void obtenirMotsClesId(Rafraichissable r, String id)
516
	{
522
	{
517
		getIModele().obtenirMotsClesId(r, id) ;
523
		getIModele().obtenirMotsClesId(r, id) ;
518
	}
524
	}
519
	
525
	
520
	/**
526
	/**
521
	 * Envoie au modèle une demande pour obtenir l'arbre des mots clés 
527
	 * Envoie au modèle une demande pour obtenir l'arbre des mots clés 
522
	 * @param r le raffraichissable qui a demandé la mise à jour
528
	 * @param r le raffraichissable qui a demandé la mise à jour
523
	 */
529
	 */
524
	public void obtenirArbreMotsCles(Rafraichissable r)
530
	public void obtenirArbreMotsCles(Rafraichissable r)
525
	{
531
	{
526
		getIModele().obtenirArbreMotCle(r) ;
532
		getIModele().obtenirArbreMotCle(r) ;
527
	}
533
	}
528
	
534
	
529
	/**
535
	/**
530
	 * envoie au modèle une demande de mise a jour des informations modifiables
536
	 * envoie au modèle une demande de mise a jour des informations modifiables
531
	 * associées a une image
537
	 * associées a une image
532
	 * @param commentaires le commentaire de l'image
538
	 * @param commentaires le commentaire de l'image
533
	 * @param date la date modifiée par l'utilisateur
539
	 * @param date la date modifiée par l'utilisateur
534
	 */
540
	 */
535
	public void mettreAJourInfo(String commentaires, String date, String note)
541
	public void mettreAJourInfo(String commentaires, String date, String note)
536
	{
542
	{
537
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
543
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
538
		
544
		
539
			getIModele().mettreAJourCacheImage(commentaires, date, note, ids) ;
545
			getIModele().mettreAJourCacheImage(commentaires, date, note, ids) ;
540
			getListeImage().mettreAjourInfos(commentaires, date, note) ;
546
			getListeImage().mettreAjourInfos(commentaires, date, note) ;
541
	}
547
	}
542
	
548
	
543
	/**
549
	/**
544
	 * Met à jour l'arbre des mots clés affichés dans le volet de droite à partir de l'arbre passé en paramètre 
550
	 * Met à jour l'arbre des mots clés affichés dans le volet de droite à partir de l'arbre passé en paramètre 
545
	 * @param arbreMC le nouvel arbre des mots clés
551
	 * @param arbreMC le nouvel arbre des mots clés
546
	 */
552
	 */
547
	public void rafraichirArbreMotsCles(Tree arbreMC)
553
	public void rafraichirArbreMotsCles(Tree arbreMC)
548
	{
554
	{
549
		metadonneesIptcExif.getPanneauMotsCles().rafraichir(arbreMC, false) ;
555
		metadonneesIptcExif.getPanneauMotsCles().rafraichir(arbreMC, false) ;
550
	}
556
	}
551
	
557
	
552
	/**
558
	/**
553
	 * envoie au modèle une demande pour lancer le formulaire ou l'application d'upload
559
	 * envoie au modèle une demande pour lancer le formulaire ou l'application d'upload
554
	 */
560
	 */
555
	public void uploaderImages()
561
	public void uploaderImages()
556
	{
562
	{
557
		getIModele().uploaderImages() ;
563
		getIModele().uploaderImages() ;
558
	}
564
	}
559
	
565
	
560
	/**
566
	/**
561
	 * Envoie une demande au modèle pour obtenir toutes les données annexes de l'image (métadonnées, note, etc ...),
567
	 * Envoie une demande au modèle pour obtenir toutes les données annexes de l'image (métadonnées, note, etc ...),
562
	 * on y centralise tous les appels a obtenirQuelqueChose
568
	 * on y centralise tous les appels a obtenirQuelqueChose
563
	 * @param imgNum l'identifiant de l'image
569
	 * @param imgNum l'identifiant de l'image
564
	 */
570
	 */
565
	public void obtenirDonnes(String imgNum)
571
	public void obtenirDonnes(String imgNum)
566
	{
572
	{
567
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
573
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
568
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), imgNum) ;
574
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), imgNum) ;
569
		obtenirNote(metadonneesIptcExif.getNoteVue(), imgNum) ;
575
		obtenirNote(metadonneesIptcExif.getNoteVue(), imgNum) ;
570
	}
576
	}
571
	
577
	
572
	/**
578
	/**
573
	 * Envoie une demande au modèle pour obtenir la note associée à une image
579
	 * Envoie une demande au modèle pour obtenir la note associée à une image
574
	 * @param noteVue le rafraichissable à qui est destiné cette information
580
	 * @param noteVue le rafraichissable à qui est destiné cette information
575
	 * @param imgNum l'identifiant de l'image
581
	 * @param imgNum l'identifiant de l'image
576
	 */
582
	 */
577
	private void obtenirNote(Rafraichissable r, String imgNum) {
583
	private void obtenirNote(Rafraichissable r, String imgNum) {
578
		
584
		
579
		getIModele().obtenirNote(r,imgNum) ;	
585
		getIModele().obtenirNote(r,imgNum) ;	
580
	}
586
	}
581
 
587
 
582
	/**
588
	/**
583
	 * est appelé lors d'un clic de souris sur une vignette dans la galerie
589
	 * est appelé lors d'un clic de souris sur une vignette dans la galerie
584
	 * le médiateur gère alors les conséquences
590
	 * le médiateur gère alors les conséquences
585
	 * @param index l'index du noeud dans la galerie
591
	 * @param index l'index du noeud dans la galerie
586
	 * @param node le noeud selectionné
592
	 * @param node le noeud selectionné
587
	 * @param e l'object source de l'évenement
593
	 * @param e l'object source de l'évenement
588
	 */
594
	 */
589
	public void clicGalerieImage(int index, Element node,
595
	public void clicGalerieImage(int index, Element node,
590
			EventObject e)
596
			EventObject e)
591
	{
597
	{
592
		Record rd = getGalerieImage().getDView().getRecord(node) ;
598
		Record rd = getGalerieImage().getDView().getRecord(node) ;
593
		String imgUrl = rd.getAsString("url_image");
599
		String imgUrl = rd.getAsString("url_image");
594
		
600
		
595
		String[] imgXY = getIModele().obtenirTailleImage(rd.getAsString("num_image")) ;
601
		String[] imgXY = getIModele().obtenirTailleImage(rd.getAsString("num_image")) ;
596
		
602
		
597
		String[] infosImage = {imgUrl , imgXY[0] , imgXY[1] } ; 
603
		String[] infosImage = {imgUrl , imgXY[0] , imgXY[1] } ; 
598
		
604
		
599
		getZoomImage().rafraichir(infosImage,false);
605
		getZoomImage().rafraichir(infosImage,false);
600
		dernierIndexOnglet = 0 ;
606
		dernierIndexOnglet = 0 ;
601
		
607
		
602
		if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
608
		if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
603
		{
609
		{
604
			
610
			
605
			getOngletsImage().setActiveTab(1);
611
			getOngletsImage().setActiveTab(1);
606
		}
612
		}
607
		
613
		
608
		String imgNum = rd.getAsString("num_image");
614
		String imgNum = rd.getAsString("num_image");
609
		obtenirDonnes(imgNum) ;
615
		obtenirDonnes(imgNum) ;
610
		
616
		
611
	}
617
	}
612
	
618
	
613
	/**
619
	/**
614
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste
620
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste
615
	 * le médiateur gère alors les conséquences
621
	 * le médiateur gère alors les conséquences
616
	 * @param rowIndex le numéro de ligne selectionné
622
	 * @param rowIndex le numéro de ligne selectionné
617
	 */
623
	 */
618
	public void clicListeImage(int rowIndex)
624
	public void clicListeImage(int rowIndex)
619
	{
625
	{
620
		Record rd = getListeImage().getSelectionModel().getSelected() ;
626
		Record rd = getListeImage().getSelectionModel().getSelected() ;
621
		String imgUrl = rd.getAsString("url_image");
627
		String imgUrl = rd.getAsString("url_image");
622
		
628
		
623
		String[] imgXY = getIModele().obtenirTailleImage(rd.getAsString("num_image")) ;
629
		String[] imgXY = getIModele().obtenirTailleImage(rd.getAsString("num_image")) ;
624
		
630
		
625
		String[] infosImage = {imgUrl , imgXY[0] , imgXY[1] } ; 
631
		String[] infosImage = {imgUrl , imgXY[0] , imgXY[1] } ; 
626
		
632
		
627
		getZoomImage().rafraichir(infosImage,false);
633
		getZoomImage().rafraichir(infosImage,false);
628
		
634
		
629
		dernierIndexOnglet = 2 ;
635
		dernierIndexOnglet = 2 ;
630
		
636
		
631
		String imgNum = rd.getAsString("num_image");
637
		String imgNum = rd.getAsString("num_image");
632
		obtenirDonnes(imgNum) ;
638
		obtenirDonnes(imgNum) ;
633
	}
639
	}
634
	
640
	
635
	/**
641
	/**
636
	 * gestion du double clic dans la liste
642
	 * gestion du double clic dans la liste
637
	 * @param rowIndex
643
	 * @param rowIndex
638
	 */
644
	 */
639
	public void doubleClicListeImage(int rowIndex)
645
	public void doubleClicListeImage(int rowIndex)
640
	{
646
	{
641
		clicListeImage(rowIndex) ;
647
		clicListeImage(rowIndex) ;
642
		getOngletsImage().setActiveTab(1);
648
		getOngletsImage().setActiveTab(1);
643
	}
649
	}
644
	
650
	
645
	/**
651
	/**
646
	 * envoie une demande de mise a jour des données au modèle
652
	 * envoie une demande de mise a jour des données au modèle
647
	 */
653
	 */
648
	public void rafraichirToutesVues()
654
	public void rafraichirToutesVues()
649
	{
655
	{
650
		obtenirPhotoGalerie(getIModele());
656
		obtenirPhotoGalerie(getIModele());
651
	}
657
	}
652
	
658
	
653
	/**
659
	/**
654
	 * montre le menu au coordonnées indiquées
660
	 * montre le menu au coordonnées indiquées
655
	 * @param e l'objet source de l'évenement
661
	 * @param e l'objet source de l'évenement
656
	 */
662
	 */
657
	public void montrerContextMenu(EventObject e)
663
	public void montrerContextMenu(EventObject e)
658
	{
664
	{
659
		menuImageVue.showAt(e.getXY()) ;
665
		menuImageVue.showAt(e.getXY()) ;
660
	}
666
	}
661
	
667
	
662
	/**
668
	/**
663
	 * appelé lors du double clic sur l'image agrandie
669
	 * appelé lors du double clic sur l'image agrandie
664
	 */
670
	 */
665
	public void doubleClicZoomImage()
671
	public void doubleClicZoomImage()
666
	{
672
	{
667
		getOngletsImage().setActiveTab(dernierIndexOnglet);
673
		getOngletsImage().setActiveTab(dernierIndexOnglet);
668
	}
674
	}
669
	
675
	
670
	/**
676
	/**
671
	 * appelé lors du clic sur un des boutons de la zone zoom
677
	 * appelé lors du clic sur un des boutons de la zone zoom
672
	 * @param arg le nom du bouton qui a cliqué 
678
	 * @param arg le nom du bouton qui a cliqué 
673
	 */
679
	 */
674
	public void clicBoutonZoomImage(String arg)
680
	public void clicBoutonZoomImage(String arg)
675
	{
681
	{
676
		
682
		
677
		Store st ;
683
		Store st ;
678
		int selected ;
684
		int selected ;
679
		int storeIndex ;
685
		int storeIndex ;
680
		Record nRec = null ;
686
		Record nRec = null ;
681
		
687
		
682
		// tout d'abord on obtient les index selectionnés suivant la vue
688
		// tout d'abord on obtient les index selectionnés suivant la vue
683
		if(getVueSelectionnee() == galerieImage)
689
		if(getVueSelectionnee() == galerieImage)
684
		{
690
		{
685
			DataView dv = getGalerieImage().getDView();
691
			DataView dv = getGalerieImage().getDView();
686
			st = getGalerieImage().getSt();
692
			st = getGalerieImage().getSt();
687
			
693
			
688
			if(st.getCount() <= 0)
694
			if(st.getCount() <= 0)
689
			{
695
			{
690
				return ;
696
				return ;
691
			}
697
			}
692
			
698
			
693
			selected = st.indexOf(dv.getSelectedRecords()[0]);
699
			selected = st.indexOf(dv.getSelectedRecords()[0]);
694
			storeIndex = dv.indexOf(selected);
700
			storeIndex = dv.indexOf(selected);
695
		}
701
		}
696
		else
702
		else
697
		{
703
		{
698
			st = listeImage.getSt() ;
704
			st = listeImage.getSt() ;
699
			
705
			
700
			if(st.getCount() <= 0)
706
			if(st.getCount() <= 0)
701
			{
707
			{
702
				return ;
708
				return ;
703
			}
709
			}
704
			
710
			
705
			selected = st.indexOf(listeImage.getSelectionModel().getSelected()) ;
711
			selected = st.indexOf(listeImage.getSelectionModel().getSelected()) ;
706
			storeIndex = selected ;
712
			storeIndex = selected ;
707
		}
713
		}
708
		
714
		
709
		if(arg.equals("prev"))
715
		if(arg.equals("prev"))
710
		{
716
		{
711
			// si la photo séléctionnée est la première, on passe a la
717
			// si la photo séléctionnée est la première, on passe a la
712
			// dernière
718
			// dernière
713
			if (selected == 0) {
719
			if (selected == 0) {
714
				storeIndex = st.getCount() - 1 ;
720
				storeIndex = st.getCount() - 1 ;
715
				nRec = st.getAt(storeIndex);
721
				nRec = st.getAt(storeIndex);
716
	
722
	
717
			} 
723
			} 
718
			else 
724
			else 
719
			{
725
			{
720
				storeIndex = storeIndex - 1 ;
726
				storeIndex = storeIndex - 1 ;
721
				nRec = st.getAt(storeIndex);
727
				nRec = st.getAt(storeIndex);
722
			}
728
			}
723
			
729
			
724
			
730
			
725
		}
731
		}
726
		
732
		
727
		if(arg.equals("suiv"))
733
		if(arg.equals("suiv"))
728
		{
734
		{
729
			// si la photo selectionnée est la dernière on passe a la
735
			// si la photo selectionnée est la dernière on passe a la
730
			// première
736
			// première
731
			if (selected == st.getCount() - 1) {
737
			if (selected == st.getCount() - 1) {
732
				
738
				
733
				storeIndex = 0 ;
739
				storeIndex = 0 ;
734
				nRec = st.getAt(0);
740
				nRec = st.getAt(0);
735
			} 
741
			} 
736
			else 
742
			else 
737
			{
743
			{
738
				storeIndex = storeIndex + 1 ;
744
				storeIndex = storeIndex + 1 ;
739
				nRec = st.getAt(storeIndex);
745
				nRec = st.getAt(storeIndex);
740
			}
746
			}
741
		}
747
		}
742
		
748
		
743
		if(nRec != null)
749
		if(nRec != null)
744
		{
750
		{
745
			String imgUrl = nRec.getAsString("url_image");			
751
			String imgUrl = nRec.getAsString("url_image");			
746
			String[] imgXY = getIModele().obtenirTailleImage(nRec.getAsString("num_image")) ;			
752
			String[] imgXY = getIModele().obtenirTailleImage(nRec.getAsString("num_image")) ;			
747
			String[] infosImage = {imgUrl , imgXY[0] , imgXY[1] } ; 			
753
			String[] infosImage = {imgUrl , imgXY[0] , imgXY[1] } ; 			
748
			getZoomImage().rafraichir(infosImage,false);
754
			getZoomImage().rafraichir(infosImage,false);
749
			
755
			
750
			if(getGalerieImage().isRendered())
756
			if(getGalerieImage().isRendered())
751
			{
757
			{
752
				getGalerieImage().getDView().select(storeIndex);
758
				getGalerieImage().getDView().select(storeIndex);
753
			}
759
			}
754
			
760
			
755
			if(getListeImage().isRendered())
761
			if(getListeImage().isRendered())
756
			{
762
			{
757
				getListeImage().getSelectionModel().selectRecords(nRec) ;
763
				getListeImage().getSelectionModel().selectRecords(nRec) ;
758
			}
764
			}
759
			
765
			
760
			String imgNum = nRec.getAsString("num_image");
766
			String imgNum = nRec.getAsString("num_image");
761
			obtenirDonnes(imgNum) ;
767
			obtenirDonnes(imgNum) ;
762
		}
768
		}
763
	}
769
	}
764
	
770
	
765
 
771
 
766
	/**
772
	/**
767
	 * synchronise la selection entre la galerie et la liste
773
	 * synchronise la selection entre la galerie et la liste
768
	 * @param string le nom de la vue qui doit être synchronisee
774
	 * @param string le nom de la vue qui doit être synchronisee
769
	 */
775
	 */
770
	public void synchroniserSelection(String string) {
776
	public void synchroniserSelection(String string) {
771
		
777
		
772
		if(string.equals("galerie") && getDernierIndexOnglet() != 2)
778
		if(string.equals("galerie") && getDernierIndexOnglet() != 2)
773
		{
779
		{
774
				Record[] sel = getGalerieImage().getDView().getSelectedRecords() ;
780
				Record[] sel = getGalerieImage().getDView().getSelectedRecords() ;
775
				getListeImage().selectionnerEnregistrements(sel) ;
781
				getListeImage().selectionnerEnregistrements(sel) ;
776
		}
782
		}
777
		
783
		
778
		if(string.equals("liste") && getDernierIndexOnglet() != 0)
784
		if(string.equals("liste") && getDernierIndexOnglet() != 0)
779
		{
785
		{
780
		
786
		
781
				Record[] sel = getListeImage().getSelectionModel().getSelections() ;
787
				Record[] sel = getListeImage().getSelectionModel().getSelections() ;
782
				int[] ids = new int[sel.length] ;
788
				int[] ids = new int[sel.length] ;
783
				
789
				
784
				for (int i = 0; i < sel.length; i++) {
790
				for (int i = 0; i < sel.length; i++) {
785
					
791
					
786
					ids[i] = getGalerieImage().getSt().indexOf(sel[i]) ;
792
					ids[i] = getGalerieImage().getSt().indexOf(sel[i]) ;
787
				}
793
				}
788
				
794
				
789
				getGalerieImage().selectionnerImages(ids) ;
795
				getGalerieImage().selectionnerImages(ids) ;
790
		}
796
		}
791
		
797
		
792
	}
798
	}
793
 
799
 
794
	/**
800
	/**
795
	 * fait une demande de suppression des images (en local et en distant)
801
	 * fait une demande de suppression des images (en local et en distant)
796
	 * des images selectionnees
802
	 * des images selectionnees
797
	 */
803
	 */
798
	public void supprimerImages() {
804
	public void supprimerImages() {
799
		
805
		
800
		String[] ids = null ;
806
		String[] ids = null ;
801
		
807
		
802
		
808
		
803
			if(dernierIndexOnglet == 0)
809
			if(dernierIndexOnglet == 0)
804
			{
810
			{
805
				ids = getGalerieImage().getIdSelectionnees() ;
811
				ids = getGalerieImage().getIdSelectionnees() ;
806
			}
812
			}
807
			else
813
			else
808
			{
814
			{
809
				ids = getListeImage().getIdSelectionnees() ;
815
				ids = getListeImage().getIdSelectionnees() ;
810
			}
816
			}
811
			
817
			
812
		if(ids.length > 0)
818
		if(ids.length > 0)
813
		{
819
		{
814
			
820
			
815
			if(com.google.gwt.user.client.Window
821
			if(com.google.gwt.user.client.Window
816
					.confirm("Supprimer les images selectionnees ?"))
822
					.confirm("Supprimer les images selectionnees ?"))
817
			{
823
			{
818
				masquerChargement() ;
824
				masquerChargement() ;
819
				getIModele().supprimerImages(ids) ;
825
				getIModele().supprimerImages(ids) ;
820
				aucuneSelection() ;
826
				aucuneSelection() ;
821
			}
827
			}
822
		}
828
		}
823
		else
829
		else
824
		{
830
		{
825
			Window.alert("Impossible de supprimer : aucune image selectionnee") ;
831
			Window.alert("Impossible de supprimer : aucune image selectionnee") ;
826
		}
832
		}
827
		
833
		
828
	}
834
	}
829
 
835
 
830
	/**
836
	/**
831
	 * desactive les onglets de metadonnees et de zoom (dans le cas ou rien n'est selectionne)
837
	 * desactive les onglets de metadonnees et de zoom (dans le cas ou rien n'est selectionne)
832
	 */
838
	 */
833
	public void aucuneSelection() {
839
	public void aucuneSelection() {
834
		
840
		
835
		if(getListeImage().getSelectionModel().getCount() <= 0 && getGalerieImage().getDView().getSelectionCount() <= 0)
841
		if(getListeImage().getSelectionModel().getCount() <= 0 && getGalerieImage().getDView().getSelectionCount() <= 0)
836
		{
842
		{
837
			getMetadonneesIptcExif().desactiverPanneau() ;
843
			getMetadonneesIptcExif().desactiverPanneau() ;
838
			getZoomImage().desactiverPanneau() ;
844
			getZoomImage().desactiverPanneau() ;
839
			setSelection(false) ;
845
			setSelection(false) ;
840
		}
846
		}
841
		
847
		
842
	}
848
	}
843
	
849
	
844
	/**
850
	/**
845
	 * reactive les onglet metadonnees et zoom (lors d'une selection alors qu'il n'y en avait pas)
851
	 * reactive les onglet metadonnees et zoom (lors d'une selection alors qu'il n'y en avait pas)
846
	 */
852
	 */
847
	public void selection() {
853
	public void selection() {
848
		
854
		
849
		if(!isSelection())
855
		if(!isSelection())
850
		{
856
		{
851
			getMetadonneesIptcExif().activerPanneau() ;
857
			getMetadonneesIptcExif().activerPanneau() ;
852
			getZoomImage().activerPanneau() ;
858
			getZoomImage().activerPanneau() ;
853
			setSelection(true);
859
			setSelection(true);
854
		}
860
		}
855
	}
861
	}
856
 
862
 
857
	/**
863
	/**
858
	 * Fait apparaitre le menu contextuel de l'arbre des mots clés au niveau d'un noeud donné
864
	 * Fait apparaitre le menu contextuel de l'arbre des mots clés au niveau d'un noeud donné
859
	 * @param n le noeud ou le menu doit apparaitre
865
	 * @param n le noeud ou le menu doit apparaitre
860
	 * @param ev l'objet contenant les données sur l'évenement
866
	 * @param ev l'objet contenant les données sur l'évenement
861
	 * @param te l'éditeur associé à l'arbre qui permet de modifier les libellés des noeuds
867
	 * @param te l'éditeur associé à l'arbre qui permet de modifier les libellés des noeuds
862
	 */
868
	 */
863
	public void montrerContextMenuArbre(final TreeNode n, EventObject ev, final TreeEditor te)
869
	public void montrerContextMenuArbre(final TreeNode n, EventObject ev, final TreeEditor te)
864
	{
870
	{
865
		Menu mn = new Menu() ;
871
		Menu mn = new Menu() ;
866
		final com.gwtext.client.widgets.menu.Item ajoutN = new Item("Ajouter mot cle");
872
		final com.gwtext.client.widgets.menu.Item ajoutN = new Item("Ajouter mot cle");
867
		final com.gwtext.client.widgets.menu.Item suppN = new Item("Supprimer mot cle");
873
		final com.gwtext.client.widgets.menu.Item suppN = new Item("Supprimer mot cle");
868
		
874
		
869
		mn.addItem(ajoutN);
875
		mn.addItem(ajoutN);
870
		mn.addItem(suppN);
876
		mn.addItem(suppN);
871
		
877
		
872
		mn.addListener(new MenuListenerAdapter() {
878
		mn.addListener(new MenuListenerAdapter() {
873
			
879
			
874
			
880
			
875
			public void onItemClick(BaseItem item, EventObject e)
881
			public void onItemClick(BaseItem item, EventObject e)
876
			{	
882
			{	
877
				if(item.equals(suppN))
883
				if(item.equals(suppN))
878
				{
884
				{
879
					getMetadonneesIptcExif().getPanneauMotsCles().supprimerNoeud(n) ;
885
					getMetadonneesIptcExif().getPanneauMotsCles().supprimerNoeud(n) ;
880
				}
886
				}
881
				if(item.equals(ajoutN))
887
				if(item.equals(ajoutN))
882
				{
888
				{
883
					getMetadonneesIptcExif().getPanneauMotsCles().ajouterNoeud(n) ;
889
					getMetadonneesIptcExif().getPanneauMotsCles().ajouterNoeud(n) ;
884
				}
890
				}
885
			}
891
			}
886
		});
892
		});
887
		
893
		
888
		mn.showAt(ev.getXY());
894
		mn.showAt(ev.getXY());
889
		
895
		
890
	}
896
	}
891
	
897
	
892
	/**
898
	/**
893
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du mot clé
899
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du mot clé
894
	 * @param text le texte du mot clé
900
	 * @param text le texte du mot clé
895
	 * @param id l'identifiant du mot clé
901
	 * @param id l'identifiant du mot clé
896
	 */
902
	 */
897
	public void mettreAjourMotsClesId(String text, String id) {
903
	public void mettreAjourMotsClesId(String text, String id) {
898
		
904
		
899
		getIModele().mettreAjourMotsClesId(text, id) ;
905
		getIModele().mettreAjourMotsClesId(text, id) ;
900
		
906
		
901
	}
907
	}
902
 
908
 
903
	/**
909
	/**
904
	 * Récupère les identifiants des images selectionnés
910
	 * Récupère les identifiants des images selectionnés
905
	 * et appelle le modèle pour qu'il mette à jour les associations mots clés/images
911
	 * et appelle le modèle pour qu'il mette à jour les associations mots clés/images
906
	 * @param motsClesEnCours les mots clés à associer aux images selectionnés séparés par une ','
912
	 * @param motsClesEnCours les mots clés à associer aux images selectionnés séparés par une ','
907
	 * @param arbreMC l'arbre des mots clés à mettre à jour
913
	 * @param arbreMC l'arbre des mots clés à mettre à jour
908
	 */
914
	 */
909
	public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
915
	public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
910
		
916
		
911
		String[] ids = getGalerieImage().getIdSelectionnees() ;
917
		String[] ids = getGalerieImage().getIdSelectionnees() ;
912
		getIModele().mettreAjourMotsCles(ids,motsClesEnCours,arbreMC) ;
918
		getIModele().mettreAjourMotsCles(ids,motsClesEnCours,arbreMC) ;
913
		
919
		
914
	}
920
	}
915
	
921
	
916
	/**
922
	/**
917
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots clés
923
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots clés
918
	 * @param n le noeud parent pour l'ajout
924
	 * @param n le noeud parent pour l'ajout
919
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
925
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
920
	 */
926
	 */
921
	public void ajouterMotCleDansArbre(TreeNode n,Tree arbreMC)
927
	public void ajouterMotCleDansArbre(TreeNode n,Tree arbreMC)
922
	{
928
	{
923
		getIModele().ajouterMotCleDansArbre(n, arbreMC) ;
929
		getIModele().ajouterMotCleDansArbre(n, arbreMC) ;
924
	}
930
	}
925
 
931
 
926
	/**
932
	/**
927
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre dans l'arbre des mots clés
933
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre dans l'arbre des mots clés
928
	 * @param n le noeud à supprimer
934
	 * @param n le noeud à supprimer
929
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
935
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
930
	 */
936
	 */
931
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
937
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
932
		
938
		
933
		getIModele().supprimerMotCleDansArbre(n,arbreMC) ;
939
		getIModele().supprimerMotCleDansArbre(n,arbreMC) ;
934
		
940
		
935
	}
941
	}
936
 
942
 
937
	/**
943
	/**
938
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots clés
944
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots clés
939
	 * @param n le noeud à modifier
945
	 * @param n le noeud à modifier
940
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
946
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
941
	 */
947
	 */
942
	public void modifierMotCleDansArbre(TreeNode n , Tree arbreMC) {
948
	public void modifierMotCleDansArbre(TreeNode n , Tree arbreMC) {
943
		
949
		
944
		getIModele().modifierMotCleDansArbre(n,arbreMC) ;
950
		getIModele().modifierMotCleDansArbre(n,arbreMC) ;
945
		
951
		
946
	}
952
	}
947
	
953
	
948
	/**
954
	/**
949
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans l'arbre des mots clés
955
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans l'arbre des mots clés
950
	 * @param n le noeud à déplacer
956
	 * @param n le noeud à déplacer
951
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
957
	 * @param arbreMC le nouvel arbre de mots clés à mettre à jour
952
	 */
958
	 */
953
	public void deplacerMotCleDansArbre(TreeNode n , Tree arbreMC) {
959
	public void deplacerMotCleDansArbre(TreeNode n , Tree arbreMC) {
954
		
960
		
955
		getIModele().deplacerMotCleDansArbre(n, arbreMC) ;
961
		getIModele().deplacerMotCleDansArbre(n, arbreMC) ;
956
	}
962
	}
957
 
963
 
958
	/**
964
	/**
959
	 * initialise les mots clés cochés par rapport aux images sélectionnées
965
	 * initialise les mots clés cochés par rapport aux images sélectionnées
960
	 */
966
	 */
961
	public void initialiserMotsCleCoches() {
967
	public void initialiserMotsCleCoches() {
962
		
968
		
963
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), getGalerieImage().getIdSelectionnees()[0]) ;
969
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), getGalerieImage().getIdSelectionnees()[0]) ;
964
	}
970
	}
965
 
971
 
966
	/**
972
	/**
967
	 * Appelle le modèle pour lui demander les données d'une page à afficher
973
	 * Appelle le modèle pour lui demander les données d'une page à afficher
968
	 * @param pageCourante le numéro de page à affciher
974
	 * @param pageCourante le numéro de page à affciher
969
	 */
975
	 */
970
	public void changerNumeroPage(int pageCourante) {
976
	public void changerNumeroPage(int pageCourante) {
971
		
977
		
972
		// on met le mesage d'attente
978
		// on met le mesage d'attente
973
		masquerChargement() ;
979
		masquerChargement() ;
974
		
980
		
975
		// on appelle le modèle
981
		// on appelle le modèle
976
		getIModele().changerNumeroPage(pageCourante) ;
982
		getIModele().changerNumeroPage(pageCourante) ;
977
		
983
		
978
		// et met à jour les numéros de page dans les barre d'outils
984
		// et met à jour les numéros de page dans les barre d'outils
979
		getGalerieImage().getToolBarVue().changerPageCourante(pageCourante);
985
		getGalerieImage().getToolBarVue().changerPageCourante(pageCourante);
980
		getListeImage().getToolBarVue().changerPageCourante(pageCourante);
986
		getListeImage().getToolBarVue().changerPageCourante(pageCourante);
981
	}
987
	}
982
	
988
	
983
	/**
989
	/**
984
	 * Appelle le modèle pour qu'il change la taille de page utilisée
990
	 * Appelle le modèle pour qu'il change la taille de page utilisée
985
	 * @param nouvelleTaillePage la nouvelle taille de page
991
	 * @param nouvelleTaillePage la nouvelle taille de page
986
	 */
992
	 */
987
	public void changerTaillePage(int nouvelleTaillePage)
993
	public void changerTaillePage(int nouvelleTaillePage)
988
	{
994
	{
989
		// on met le message d'attente
995
		// on met le message d'attente
990
		masquerChargement() ;
996
		masquerChargement() ;
991
		
997
		
992
		// on appelle le modèle 
998
		// on appelle le modèle 
993
		getIModele().changerTaillePage(nouvelleTaillePage) ;
999
		getIModele().changerTaillePage(nouvelleTaillePage) ;
994
		
1000
		
995
		// et on met à jour la taille de page dans les barres d'outils
1001
		// et on met à jour la taille de page dans les barres d'outils
996
		getGalerieImage().getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
1002
		getGalerieImage().getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
997
		getListeImage().getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
1003
		getListeImage().getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
998
	}
1004
	}
999
 
1005
 
1000
	/**
1006
	/**
1001
	 * Met à jour les barre d'outils avec des nouvelles valeurs
1007
	 * Met à jour les barre d'outils avec des nouvelles valeurs
1002
	 * @param pageMax le nombre de pages
1008
	 * @param pageMax le nombre de pages
1003
	 * @param pageEncours la page en cours
1009
	 * @param pageEncours la page en cours
1004
	 * @param taillePage la taille de page
1010
	 * @param taillePage la taille de page
1005
	 * @param nbElement le nombre d'élements par page
1011
	 * @param nbElement le nombre d'élements par page
1006
	 */
1012
	 */
1007
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
1013
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
1008
	{
1014
	{
1009
				
1015
				
1010
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
1016
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
1011
		getGalerieImage().getToolBarVue().rafraichir(pages, false) ;
1017
		getGalerieImage().getToolBarVue().rafraichir(pages, false) ;
1012
		getListeImage().getToolBarVue().rafraichir(pages, false) ;
1018
		getListeImage().getToolBarVue().rafraichir(pages, false) ;
1013
		
1019
		
1014
	}
1020
	}
1015
	
1021
	
1016
	/**
1022
	/**
1017
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
1023
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
1018
	 */
1024
	 */
1019
	public void masquerChargement()
1025
	public void masquerChargement()
1020
	{
1026
	{
1021
			ExtElement masked = Ext.get(getIdVueSelectionnee()) ;
1027
			ExtElement masked = Ext.get(getIdVueSelectionnee()) ;
1022
 
1028
 
1023
				masked.mask("Chargement") ;
1029
				masked.mask("Chargement") ;
1024
 
1030
 
1025
	}
1031
	}
1026
	
1032
	
1027
	/**
1033
	/**
1028
	 * Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
1034
	 * Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
1029
	 */
1035
	 */
1030
	public void demasquerChargement()
1036
	public void demasquerChargement()
1031
	{
1037
	{
1032
				ExtElement masked = Ext.get(getIdVueSelectionnee()) ;
1038
				ExtElement masked = Ext.get(getIdVueSelectionnee()) ;
1033
				if(masked.isMasked())
1039
				if(masked.isMasked())
1034
				{
1040
				{
1035
					masked.unmask() ;
1041
					masked.unmask() ;
1036
				}
1042
				}
1037
	}
1043
	}
1038
 
1044
 
1039
	public void afficherFiltreMotsCles() {
1045
	public void afficherFiltreMotsCles() {
1040
		
1046
		
1041
		getIModele().obtenirArbreMotCle(filtreMotsCles) ;
1047
		getIModele().obtenirArbreMotCle(filtreMotsCles) ;
1042
		
1048
		
1043
	}
1049
	}
1044
	
-
 
1045
	public void afficherMenuId()
1050
	
1046
	{
1051
	
1047
		IdVue i = new IdVue(this) ;
-
 
1048
		i.show() ;
1052
	// Lancement identification 
1049
	}
1053
	
1050
	
1054
	
1051
	/**
1055
	/**
1052
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
1056
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
1053
	 * sous forme de tableau [nom, valeur]
1057
	 * sous forme de tableau [nom, valeur]
1054
	 * @return Les noms et valeurs des filtres
1058
	 * @return Les noms et valeurs des filtres
1055
	 */
1059
	 */
1056
	public String[][] renvoyerFiltres()
1060
	public String[][] renvoyerFiltres()
1057
	{
1061
	{
1058
		String[][] valeursFiltres = { filtreMotsCles.renvoyerValeursAFiltrer() , filtreCommentaires.renvoyerValeursAFiltrer() } ;
1062
		String[][] valeursFiltres = { filtreMotsCles.renvoyerValeursAFiltrer() , filtreCommentaires.renvoyerValeursAFiltrer() } ;
1059
		
1063
		
1060
		return valeursFiltres ;
1064
		return valeursFiltres ;
1061
	}
1065
	}
1062
	
1066
	
1063
	/**
1067
	/**
1064
	 * Indique si les filtres ont changés depuis la dernière requête
1068
	 * Indique si les filtres ont changés depuis la dernière requête
1065
	 * (il faut faire un OR sur le résultat de toutes les fonctions
1069
	 * (il faut faire un OR sur le résultat de toutes les fonctions
1066
	 * renvoyerEtatFiltre s'il y a plus d'un filtre)
1070
	 * renvoyerEtatFiltre s'il y a plus d'un filtre)
1067
	 * @return Une indication de changements de filtres
1071
	 * @return Une indication de changements de filtres
1068
	 */
1072
	 */
1069
	public boolean getEtatFiltres()
1073
	public boolean getEtatFiltres()
1070
	{
1074
	{
1071
		System.out.println("les filtres sont modifiés ? "+(filtreMotsCles.renvoyerEtatFiltre() || filtreCommentaires.renvoyerEtatFiltre())) ;
1075
		System.out.println("les filtres sont modifiés ? "+(filtreMotsCles.renvoyerEtatFiltre() || filtreCommentaires.renvoyerEtatFiltre())) ;
1072
		return (filtreMotsCles.renvoyerEtatFiltre() || filtreCommentaires.renvoyerEtatFiltre());
1076
		return (filtreMotsCles.renvoyerEtatFiltre() || filtreCommentaires.renvoyerEtatFiltre());
1073
	}
1077
	}
1074
 
1078
 
1075
	public void afficherFiltreCommentaires() {
1079
	public void afficherFiltreCommentaires() {
1076
		
1080
		
1077
		filtreCommentaires.afficherFiltre() ;
1081
		filtreCommentaires.afficherFiltre() ;
1078
		
1082
		
1079
	}
1083
	}
1080
	
1084
	
1081
	
1085
	
1082
 
1086
 
1083
}
1087
}