Subversion Repositories eFlore/Archives.cel-v2

Rev

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

Rev 20 Rev 24
1
package org.tela_botanica.client.image;
1
package org.tela_botanica.client.image;
2
 
2
 
3
import org.tela_botanica.client.interfaces.Rafraichissable;
3
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.VueListable;
4
import org.tela_botanica.client.interfaces.VueListable;
5
import org.tela_botanica.client.vues.BarreOutilsVue;
5
import org.tela_botanica.client.vues.BarreOutilsVue;
6
import org.tela_botanica.client.vues.GalerieImageVue;
6
import org.tela_botanica.client.vues.GalerieImageVue;
7
import org.tela_botanica.client.vues.ListeImageVue;
7
import org.tela_botanica.client.vues.ListeImageVue;
8
import org.tela_botanica.client.vues.MenuImageVue;
8
import org.tela_botanica.client.vues.MenuImageVue;
9
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
9
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
10
import org.tela_botanica.client.vues.ZoomImageVue;
10
import org.tela_botanica.client.vues.ZoomImageVue;
11
 
11
 
12
import com.google.gwt.user.client.DOM;
12
import com.google.gwt.user.client.DOM;
13
import com.google.gwt.user.client.Element;
13
import com.google.gwt.user.client.Element;
14
import com.google.gwt.user.client.Event;
14
import com.google.gwt.user.client.Event;
15
import com.google.gwt.user.client.Window;
15
import com.google.gwt.user.client.Window;
16
import com.gwtext.client.core.EventObject;
16
import com.gwtext.client.core.EventObject;
17
import com.gwtext.client.core.RegionPosition;
17
import com.gwtext.client.core.RegionPosition;
18
import com.gwtext.client.data.Record;
18
import com.gwtext.client.data.Record;
19
import com.gwtext.client.data.Store;
19
import com.gwtext.client.data.Store;
20
import com.gwtext.client.widgets.DataView;
20
import com.gwtext.client.widgets.DataView;
21
import com.gwtext.client.widgets.Panel;
21
import com.gwtext.client.widgets.Panel;
22
import com.gwtext.client.widgets.TabPanel;
22
import com.gwtext.client.widgets.TabPanel;
23
import com.gwtext.client.widgets.layout.BorderLayout;
23
import com.gwtext.client.widgets.layout.BorderLayout;
24
import com.gwtext.client.widgets.layout.BorderLayoutData;
24
import com.gwtext.client.widgets.layout.BorderLayoutData;
25
import com.gwtext.client.widgets.layout.FitLayout;
25
import com.gwtext.client.widgets.layout.FitLayout;
26
 
26
 
27
/**
27
/**
28
 * Mediateur gérant les interactions entre vues et les echanges de données
28
 * Mediateur gérant les interactions entre vues et les echanges de données
29
 * C'est un singleton. 
29
 * C'est un singleton. 
30
 * @author aurelien
30
 * @author aurelien
31
 *
31
 *
32
 */
32
 */
33
public class ImageMediateur {
33
public class ImageMediateur {
-
 
34
	
34
	
35
	/**
-
 
36
	 * booleen qui verifie l'unicite de l'instance
35
	// cette classe est un singleton
37
	 */
-
 
38
	private static boolean estInstancie = false ;  
36
	private static boolean estInstancie = false ;  
39
	
-
 
40
	/**
37
	
41
	 * modele de données
38
	// controleur
-
 
-
 
42
	 */
-
 
43
	private ImageModele iModele = null ;
39
	private ImageModele iModele = null ;
44
	
-
 
45
	
40
	
46
	// Widget crées par le médiateur
-
 
47
	/**
41
	//widgets
48
	 * panneau principal des images (onglet "images")
-
 
49
	 */
42
	
50
	private final Panel panneauPrincipalImage = new Panel("Images");
-
 
51
	
-
 
52
	/**
-
 
53
	 * panneau à onglet pour la liste, la galerie et la vue en grand
-
 
54
	 */ 
43
	//Panneau principal des images (onglet "images")
55
	private TabPanel ongletsImage = null ;
-
 
56
	
-
 
57
	/**
-
 
58
	 * conteneur du panneau à onglets
44
	private final Panel panneauPrincipalImage = new Panel("Images");
59
	 */
-
 
60
	private Panel panneauMenuEtOngletsImage = null ;
-
 
61
	
-
 
62
	/**
-
 
63
	 * galerie de miniature
45
	
64
	 */
-
 
65
	private GalerieImageVue galerieImage = null ;
-
 
66
	
-
 
67
	/**
-
 
68
	 * liste détaillée des images
46
	// Panneau à onglet pour la liste, la galerie et la vue en grand
69
	 */
-
 
70
	private ListeImageVue listeImage = null ;
47
	private TabPanel ongletsImage = null ;
71
	
-
 
72
	/**
-
 
73
	 * vue agrandie de la l'image selectionnée
-
 
74
	 */
-
 
75
	private ZoomImageVue zoomImage = null ;
-
 
76
	
-
 
77
	/**
48
	private Panel panneauMenuEtOngletsImage = null ;
78
	 * panneau à onglets affichant les métadonnées et les mots clés
-
 
79
	 */
-
 
80
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
-
 
81
	
49
	
82
	/**
-
 
83
	 * panneau conteneur pour le panneau à onglet des metadonnées
-
 
84
	 */
-
 
85
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
50
	private GalerieImageVue galerieImage = null ;
86
	
-
 
87
	/**
51
	private ListeImageVue listeImage = null ;
88
	 * menu contextuel de manipulation des images
52
	private ZoomImageVue zoomImage = null ;
89
	 */
53
	
90
	private MenuImageVue menuImageVue = null ;
54
	// panneau details et mots clés
-
 
55
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
-
 
56
	
91
	
57
	private MenuImageVue menuImageVue = null ;
92
	/**
58
	
93
	 * barre d'outils
59
	private BarreOutilsVue barreOutilsVue = null ;
-
 
60
	
94
	 */
61
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
-
 
62
	
95
	private BarreOutilsVue barreOutilsVue = null ;
63
	private int dernierIndexOnglet = 0 ; 
96
	
64
	
97
	/**
65
	private boolean selection = false ;
98
	 * l'indice du dernier onglet sélectionné
66
	
-
 
67
	/**
-
 
68
	 * @param selection the selection to set
-
 
69
	 */
-
 
70
	public void setSelection(boolean selection) {
-
 
71
		this.selection = selection;
-
 
72
	}
-
 
73
 
-
 
74
	/**
-
 
75
	 * @return the selection
-
 
76
	 */
-
 
77
	public boolean isSelection() {
-
 
78
		return selection;
-
 
79
	}
-
 
80
 
-
 
81
	public static ImageMediateur Instance()
-
 
82
	{
-
 
83
			if(!estInstancie)
99
	 */
84
			{
100
	private int dernierIndexOnglet = 0 ; 
85
				estInstancie = true ;
101
	
86
				return new ImageMediateur() ;
102
	/**
87
			}
103
	 * booleen explicitant s'il y a une selection en cours
88
			else
104
	 */
89
			{
105
	private boolean selection = false ;
90
				return null ;
106
	
91
			}
107
	/**
92
	}
108
	 * constructeur privé (on accède à la classe par la méthode getInstance
93
	
109
	 */
94
	private ImageMediateur()
110
	private ImageMediateur()
95
	{
111
	{
96
		final BorderLayoutData regionNord = new BorderLayoutData(
112
		final BorderLayoutData regionNord = new BorderLayoutData(
97
				RegionPosition.NORTH) ;
113
				RegionPosition.NORTH) ;
98
		
114
		
99
		final BorderLayoutData regionCentre = new BorderLayoutData(
115
		final BorderLayoutData regionCentre = new BorderLayoutData(
100
				RegionPosition.CENTER) ;
116
				RegionPosition.CENTER) ;
101
 
117
 
102
		final BorderLayoutData regionEst = new BorderLayoutData(
118
		final BorderLayoutData regionEst = new BorderLayoutData(
103
				RegionPosition.EAST);
119
				RegionPosition.EAST);
104
		regionEst.setSplit(true);
120
		regionEst.setSplit(true);
105
 
121
 
106
		
122
		
107
		iModele = ImageModele.Instance(this);
123
		iModele = ImageModele.Instance(this);
108
		
124
		
109
		panneauPrincipalImage.setLayout(new BorderLayout());
125
		panneauPrincipalImage.setLayout(new BorderLayout());
110
		panneauMenuEtOngletsImage = new Panel() ;
126
		panneauMenuEtOngletsImage = new Panel() ;
111
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
127
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
112
		
128
		
113
		ongletsImage = new TabPanel();
129
		ongletsImage = new TabPanel();
114
		galerieImage = new GalerieImageVue(this) ;
130
		galerieImage = new GalerieImageVue(this) ;
115
		
131
		
116
		Panel panneauListeImage = new Panel("Liste");
132
		Panel panneauListeImage = new Panel("Liste");
117
		listeImage = new ListeImageVue(this);
133
		listeImage = new ListeImageVue(this);
118
		panneauListeImage.setLayout(new FitLayout());
134
		panneauListeImage.setLayout(new FitLayout());
119
		panneauListeImage.add(listeImage);
135
		panneauListeImage.add(listeImage);
120
		
136
		
121
		zoomImage = new ZoomImageVue(this);
137
		zoomImage = new ZoomImageVue(this);
122
		
138
		
123
		ongletsImage.add(galerieImage);
139
		ongletsImage.add(galerieImage);
124
		ongletsImage.add(zoomImage);
140
		ongletsImage.add(zoomImage);
125
		ongletsImage.add(panneauListeImage);
141
		ongletsImage.add(panneauListeImage);
126
		
142
		
127
		menuImageVue = new MenuImageVue(this) ;
143
		menuImageVue = new MenuImageVue(this) ;
128
		barreOutilsVue = new BarreOutilsVue(this) ;
144
		barreOutilsVue = new BarreOutilsVue(this) ;
129
		
145
		
130
		detailsEtMotsCles.setWidth("20%");
146
		detailsEtMotsCles.setWidth("20%");
131
		detailsEtMotsCles.setAnimCollapse(true);
147
		detailsEtMotsCles.setAnimCollapse(true);
132
		detailsEtMotsCles.setTitleCollapse(true);
148
		detailsEtMotsCles.setTitleCollapse(true);
133
		detailsEtMotsCles.setCollapsible(true);
149
		detailsEtMotsCles.setCollapsible(true);
134
		
150
		
135
		metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
151
		metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
136
		detailsEtMotsCles.add(metadonneesIptcExif) ;
152
		detailsEtMotsCles.add(metadonneesIptcExif) ;
137
			
153
			
138
		
154
		
139
		panneauMenuEtOngletsImage.add(barreOutilsVue,regionNord) ;
155
		panneauMenuEtOngletsImage.add(barreOutilsVue,regionNord) ;
140
		panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
156
		panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
141
		
157
		
142
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
158
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
143
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
159
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
144
		
160
		
145
	}
161
	}
-
 
162
	
-
 
163
	/**
-
 
164
	 * @param selection the selection to set
-
 
165
	 */
-
 
166
	public void setSelection(boolean selection) {
-
 
167
		this.selection = selection;
-
 
168
	}
-
 
169
 
-
 
170
	/**
-
 
171
	 * @return the selection
-
 
172
	 */
-
 
173
	public boolean isSelection() {
-
 
174
		return selection;
-
 
175
	}
-
 
176
 
-
 
177
	public static ImageMediateur Instance()
-
 
178
	{
-
 
179
			if(!estInstancie)
-
 
180
			{
-
 
181
				estInstancie = true ;
-
 
182
				return new ImageMediateur() ;
-
 
183
			}
-
 
184
			else
-
 
185
			{
-
 
186
				return null ;
-
 
187
			}
-
 
188
	}
146
	
189
	
147
	public String getIdentifiant()
190
	public String getIdentifiant()
148
	{
191
	{
149
		return "0" ;
192
		return "0" ;
150
	}
193
	}
151
 
194
 
152
	public ImageModele getIModele() {
195
	public ImageModele getIModele() {
153
		return iModele;
196
		return iModele;
154
	}
197
	}
155
 
198
 
156
	public Panel getPanneauPrincipalImage() {
199
	public Panel getPanneauPrincipalImage() {
157
		return panneauPrincipalImage;
200
		return panneauPrincipalImage;
158
	}
201
	}
159
 
202
 
160
	public TabPanel getOngletsImage() {
203
	public TabPanel getOngletsImage() {
161
		return ongletsImage;
204
		return ongletsImage;
162
	}
205
	}
163
 
206
 
164
	public GalerieImageVue getGalerieImage() {
207
	public GalerieImageVue getGalerieImage() {
165
		return galerieImage;
208
		return galerieImage;
166
	}
209
	}
167
 
210
 
168
	public ListeImageVue getListeImage() {
211
	public ListeImageVue getListeImage() {
169
		return listeImage;
212
		return listeImage;
170
	}
213
	}
171
 
214
 
172
	public ZoomImageVue getZoomImage() {
215
	public ZoomImageVue getZoomImage() {
173
		return zoomImage;
216
		return zoomImage;
174
	}
217
	}
175
 
218
 
176
	public Panel getDetailsEtMotsCles() {
219
	public Panel getDetailsEtMotsCles() {
177
		return detailsEtMotsCles;
220
		return detailsEtMotsCles;
178
	}
221
	}
179
	
222
	
180
	/**
223
	/**
181
	 * @return the estInstancie
224
	 * @return the estInstancie
182
	 */
225
	 */
183
	public static boolean isEstInstancie() {
226
	public static boolean isEstInstancie() {
184
		return estInstancie;
227
		return estInstancie;
185
	}
228
	}
186
 
229
 
187
	/**
230
	/**
188
	 * @return the panneauMenuEtOngletsImage
231
	 * @return the panneauMenuEtOngletsImage
189
	 */
232
	 */
190
	public Panel getPanneauMenuEtOngletsImage() {
233
	public Panel getPanneauMenuEtOngletsImage() {
191
		return panneauMenuEtOngletsImage;
234
		return panneauMenuEtOngletsImage;
192
	}
235
	}
193
 
236
 
194
	/**
237
	/**
195
	 * @return the menuImageVue
238
	 * @return the menuImageVue
196
	 */
239
	 */
197
	public MenuImageVue getMenuImageVue() {
240
	public MenuImageVue getMenuImageVue() {
198
		return menuImageVue;
241
		return menuImageVue;
199
	}
242
	}
200
 
243
 
201
	/**
244
	/**
202
	 * @return the barreOutilsVue
245
	 * @return the barreOutilsVue
203
	 */
246
	 */
204
	public BarreOutilsVue getBarreOutilsVue() {
247
	public BarreOutilsVue getBarreOutilsVue() {
205
		return barreOutilsVue;
248
		return barreOutilsVue;
206
	}
249
	}
207
 
250
 
208
	/**
251
	/**
209
	 * @return the metadonneesIptcExif
252
	 * @return the metadonneesIptcExif
210
	 */
253
	 */
211
	public PanneauMetadonneesVue getMetadonneesIptcExif() {
254
	public PanneauMetadonneesVue getMetadonneesIptcExif() {
212
		return metadonneesIptcExif;
255
		return metadonneesIptcExif;
213
	}
256
	}
214
 
257
 
215
	/**
258
	/**
216
	 * @return the dernierIndexOnglet
259
	 * @return the dernierIndexOnglet
217
	 */
260
	 */
218
	public int getDernierIndexOnglet() {
261
	public int getDernierIndexOnglet() {
219
		return dernierIndexOnglet;
262
		return dernierIndexOnglet;
220
	}
263
	}
-
 
264
	
-
 
265
	/**
-
 
266
	 * 
-
 
267
	 * @return la vue selectionnée par l'utilisateur
221
	
268
	 */
222
	public VueListable getVueSelectionnee()
269
	public VueListable getVueSelectionnee()
223
	{
270
	{
224
		Panel active = ongletsImage.getActiveTab() ;
271
		Panel active = ongletsImage.getActiveTab() ;
225
		if(active != zoomImage)
272
		if(active != zoomImage)
226
		{
273
		{
227
			if(active == galerieImage)
274
			if(active == galerieImage)
228
			{
275
			{
229
				return galerieImage ;
276
				return galerieImage ;
230
			}
277
			}
231
			else
278
			else
232
			{
279
			{
233
				return listeImage ;
280
				return listeImage ;
234
			}
281
			}
235
			
282
			
236
		}
283
		}
237
		else
284
		else
238
		{
285
		{
239
			if(dernierIndexOnglet == 0)
286
			if(dernierIndexOnglet == 0)
240
			{
287
			{
241
				return galerieImage ;
288
				return galerieImage ;
242
			}
289
			}
243
			else
290
			else
244
			{
291
			{
245
				return listeImage ;
292
				return listeImage ;
246
			}
293
			}
247
 
294
 
248
		}
295
		}
249
		
296
		
250
	}
297
	}
-
 
298
	
-
 
299
	/**
-
 
300
	 * met à jour les données provenant du modèle et synchronise les vues entre elles 
-
 
301
	 * @param o données de mises à jour pour les vues
-
 
302
	 * @param r le refraichissable qui a demandé la mise à jour
251
	
303
	 */
252
	public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r)
304
	public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r)
253
	{		
305
	{		
254
		
306
		
255
		if(o instanceof Store) {
307
		if(o instanceof Store) {
256
		
308
		
257
			Store li = (Store)o ;
309
			Store li = (Store)o ;
258
			
310
			
259
			if(li.getCount() <= 0)
311
			if(li.getCount() <= 0)
260
			{
312
			{
261
				aucuneSelection() ;
313
				aucuneSelection() ;
262
			}
314
			}
263
			else
315
			else
264
			{
316
			{
265
				selection() ;
317
				selection() ;
266
			}
318
			}
267
			
319
			
268
		}
320
		}
269
		
321
		
270
		if(r != getGalerieImage())
322
		if(r != getGalerieImage())
271
		{
323
		{
272
			getGalerieImage().rafraichir(o,false);
324
			getGalerieImage().rafraichir(o,false);
273
		}
325
		}
274
		if(r != getZoomImage())
326
		if(r != getZoomImage())
275
		{
327
		{
276
			getZoomImage().rafraichir(o,false);
328
			getZoomImage().rafraichir(o,false);
277
		}
329
		}
278
		if(r != getListeImage())
330
		if(r != getListeImage())
279
		{
331
		{
280
			getListeImage().rafraichir(o,false);
332
			getListeImage().rafraichir(o,false);
281
		}
333
		}
282
		
334
		
283
		aucuneSelection() ;
335
		aucuneSelection() ;
284
	}
336
	}
-
 
337
	
-
 
338
	/**
-
 
339
	 * envoie au modèle une demande de mise à jour
285
	
340
	 * @param r la vue demandeuse de mise à jour
286
	
341
	 */
287
	public void obtenirPhotoGalerie(Rafraichissable r)
342
	public void obtenirPhotoGalerie(Rafraichissable r)
288
	{
343
	{
289
		getIModele().obtenirPhotoGalerie(r) ;
344
		getIModele().obtenirPhotoGalerie(r) ;
290
	}
345
	}
-
 
346
	
-
 
347
	/**
-
 
348
	 * demande au modèle les métadonnées associées à une image
-
 
349
	 * @param r la vue demandeuse de mise à jour
-
 
350
	 * @param id l'identifiant de l'image
291
	
351
	 */
292
	public void obtenirMetadonnees(Rafraichissable r, String id)
352
	public void obtenirMetadonnees(Rafraichissable r, String id)
293
	{
353
	{
294
		getIModele().obtenirMetadonnees(r, id) ;
354
		getIModele().obtenirMetadonnees(r, id) ;
295
	}
355
	}
-
 
356
	
-
 
357
	/**
-
 
358
	 * envoie au modèle une demande de mise à jour des informations modifiables
-
 
359
	 * associées à une image
-
 
360
	 * @param commentaires le commentaire de l'image
-
 
361
	 * @param date la date modifiée par l'utilisateur
296
	
362
	 */
297
	public void mettreAJourInfo(String commentaires, String date)
363
	public void mettreAJourInfo(String commentaires, String date)
298
	{
364
	{
299
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
365
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
300
		
366
		
301
			getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
367
			getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
302
	}
368
	}
-
 
369
	
-
 
370
	/**
-
 
371
	 * envoie au modèle une demande pour lancer le formulaire ou l'application d'upload
303
	
372
	 */
304
	public void uploaderImages()
373
	public void uploaderImages()
305
	{
374
	{
306
		getIModele().uploaderImages() ;
375
		getIModele().uploaderImages() ;
307
	}
376
	}
-
 
377
	
-
 
378
	/**
-
 
379
	 * est appelé lors d'un clic de souris sur une vignette dans la galerie
-
 
380
	 * le médiateur gère alors les conséquences
-
 
381
	 * @param index l'index du noeud dans la galerie
-
 
382
	 * @param node le noeud selectionné
-
 
383
	 * @param e l'object source de l'évenement
308
	
384
	 */
309
	public void clicGalerieImage(int index, Element node,
385
	public void clicGalerieImage(int index, Element node,
310
			EventObject e)
386
			EventObject e)
311
	{
387
	{
312
		Record rd = getGalerieImage().getDView().getRecord(node) ;
388
		Record rd = getGalerieImage().getDView().getRecord(node) ;
313
		String imgUrl = rd.getAsString("url_image"); 
389
		String imgUrl = rd.getAsString("url_image"); 
314
		
390
		
315
		getZoomImage().rafraichir(imgUrl,false);
391
		getZoomImage().rafraichir(imgUrl,false);
316
		dernierIndexOnglet = 0 ;
392
		dernierIndexOnglet = 0 ;
317
		
393
		
318
		if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
394
		if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
319
		{
395
		{
320
 
396
 
321
			getOngletsImage().setActiveTab(1);
397
			getOngletsImage().setActiveTab(1);
322
		}
398
		}
323
		
399
		
324
		String imgNum = rd.getAsString("num_image");
400
		String imgNum = rd.getAsString("num_image");
325
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
401
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
326
	}
402
	}
-
 
403
	
-
 
404
	/**
-
 
405
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste
-
 
406
	 * le médiateur gère alors les conséquences
-
 
407
	 * @param rowIndex le numéro de ligne selectionné
327
	
408
	 */
328
	public void clicListeImage(int rowIndex)
409
	public void clicListeImage(int rowIndex)
329
	{
410
	{
330
		Record rd = getListeImage().getSelectionModel().getSelected() ;
411
		Record rd = getListeImage().getSelectionModel().getSelected() ;
331
		String imgUrl = rd.getAsString("url_image");
412
		String imgUrl = rd.getAsString("url_image");
332
		
413
		
333
		getZoomImage().rafraichir(imgUrl,false);
414
		getZoomImage().rafraichir(imgUrl,false);
334
		
415
		
335
		dernierIndexOnglet = 2 ;
416
		dernierIndexOnglet = 2 ;
336
		
417
		
337
		String imgNum = rd.getAsString("num_image");
418
		String imgNum = rd.getAsString("num_image");
338
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
419
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
339
	}
420
	}
-
 
421
	
-
 
422
	/**
-
 
423
	 * gestion du double clic dans la liste
-
 
424
	 * @param rowIndex
340
	
425
	 */
341
	public void doubleClicListeImage(int rowIndex)
426
	public void doubleClicListeImage(int rowIndex)
342
	{
427
	{
343
		clicListeImage(rowIndex) ;
428
		clicListeImage(rowIndex) ;
344
		getOngletsImage().setActiveTab(1);
429
		getOngletsImage().setActiveTab(1);
345
	}
430
	}
-
 
431
	
-
 
432
	/**
-
 
433
	 * envoie une demande de mise à jour des données au modèle
346
	
434
	 */
347
	public void rafraichirToutesVues()
435
	public void rafraichirToutesVues()
348
	{
436
	{
349
		obtenirPhotoGalerie(getGalerieImage());
437
		obtenirPhotoGalerie(getIModele());
-
 
438
	}
-
 
439
	
-
 
440
	/**
-
 
441
	 * montre le menu au coordonnées indiquées
350
	}
442
	 * @param e l'objet source de l'évenement
351
	
443
	 */
352
	public void montrerContextMenu(EventObject e)
444
	public void montrerContextMenu(EventObject e)
353
	{
445
	{
354
		menuImageVue.showAt(e.getXY()) ;
446
		menuImageVue.showAt(e.getXY()) ;
355
	}
447
	}
-
 
448
	
-
 
449
	/**
-
 
450
	 * appelé lors du double clic sur l'image agrandie
356
	
451
	 */
357
	public void doubleClicZoomImage()
452
	public void doubleClicZoomImage()
358
	{
453
	{
359
		getOngletsImage().setActiveTab(dernierIndexOnglet);
454
		getOngletsImage().setActiveTab(dernierIndexOnglet);
360
	}
455
	}
-
 
456
	
-
 
457
	/**
-
 
458
	 * appelé lors du clic sur un des boutons de la zone zoom
-
 
459
	 * @param arg le nom du bouton qui a cliqué 
361
	
460
	 */
362
	public void clicBoutonZoomImage(String arg)
461
	public void clicBoutonZoomImage(String arg)
363
	{
462
	{
364
		
463
		
365
		Store st ;
464
		Store st ;
366
		int selected ;
465
		int selected ;
367
		int storeIndex ;
466
		int storeIndex ;
368
		Record nRec = null ;
467
		Record nRec = null ;
369
		
468
		
370
		if(getVueSelectionnee() == galerieImage)
469
		if(getVueSelectionnee() == galerieImage)
371
		{
470
		{
372
			DataView dv = getGalerieImage().getDView();
471
			DataView dv = getGalerieImage().getDView();
373
			st = getGalerieImage().getSt();
472
			st = getGalerieImage().getSt();
374
			
473
			
375
			if(st.getCount() <= 0)
474
			if(st.getCount() <= 0)
376
			{
475
			{
377
				return ;
476
				return ;
378
			}
477
			}
379
			
478
			
380
			selected = st.indexOf(dv.getSelectedRecords()[0]);
479
			selected = st.indexOf(dv.getSelectedRecords()[0]);
381
			storeIndex = dv.indexOf(selected);
480
			storeIndex = dv.indexOf(selected);
382
		}
481
		}
383
		else
482
		else
384
		{
483
		{
385
			st = listeImage.getSt() ;
484
			st = listeImage.getSt() ;
386
			
485
			
387
			if(st.getCount() <= 0)
486
			if(st.getCount() <= 0)
388
			{
487
			{
389
				return ;
488
				return ;
390
			}
489
			}
391
			
490
			
392
			selected = st.indexOf(listeImage.getSelectionModel().getSelected()) ;
491
			selected = st.indexOf(listeImage.getSelectionModel().getSelected()) ;
393
			storeIndex = selected ;
492
			storeIndex = selected ;
394
		}
493
		}
395
		
494
		
396
		if(arg.equals("prev"))
495
		if(arg.equals("prev"))
397
		{
496
		{
398
			// si la photo séléctionnée est la première, on passe à la
497
			// si la photo séléctionnée est la première, on passe à la
399
			// dernière
498
			// dernière
400
			if (selected == 0) {
499
			if (selected == 0) {
401
				storeIndex = st.getCount() - 1 ;
500
				storeIndex = st.getCount() - 1 ;
402
				nRec = st.getAt(storeIndex);
501
				nRec = st.getAt(storeIndex);
403
	
502
	
404
			} 
503
			} 
405
			else 
504
			else 
406
			{
505
			{
407
				storeIndex = storeIndex - 1 ;
506
				storeIndex = storeIndex - 1 ;
408
				nRec = st.getAt(storeIndex);
507
				nRec = st.getAt(storeIndex);
409
			}
508
			}
410
			
509
			
411
			
510
			
412
		}
511
		}
413
		
512
		
414
		if(arg.equals("suiv"))
513
		if(arg.equals("suiv"))
415
		{
514
		{
416
			// si la photo selectionnée est la dernière on passe à la
515
			// si la photo selectionnée est la dernière on passe à la
417
			// première
516
			// première
418
			if (selected == st.getCount() - 1) {
517
			if (selected == st.getCount() - 1) {
419
				
518
				
420
				storeIndex = 0 ;
519
				storeIndex = 0 ;
421
				nRec = st.getAt(0);
520
				nRec = st.getAt(0);
422
			} 
521
			} 
423
			else 
522
			else 
424
			{
523
			{
425
				storeIndex = storeIndex + 1 ;
524
				storeIndex = storeIndex + 1 ;
426
				nRec = st.getAt(storeIndex);
525
				nRec = st.getAt(storeIndex);
427
			}
526
			}
428
		}
527
		}
429
		
528
		
430
		if(nRec != null)
529
		if(nRec != null)
431
		{
530
		{
432
			
531
			
433
			getZoomImage().rafraichir(nRec.getAsString("url_image"),false);
532
			getZoomImage().rafraichir(nRec.getAsString("url_image"),false);
434
			if(getGalerieImage().isRendered())
533
			if(getGalerieImage().isRendered())
435
			{
534
			{
436
				getGalerieImage().getDView().select(storeIndex);
535
				getGalerieImage().getDView().select(storeIndex);
437
			}
536
			}
438
			
537
			
439
			if(getListeImage().isRendered())
538
			if(getListeImage().isRendered())
440
			{
539
			{
441
				getListeImage().getSelectionModel().selectRecords(nRec) ;
540
				getListeImage().getSelectionModel().selectRecords(nRec) ;
442
			}
541
			}
443
			
542
			
444
			String imgNum = nRec.getAsString("num_image");
543
			String imgNum = nRec.getAsString("num_image");
445
			obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
544
			obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
446
		}
545
		}
447
	}
546
	}
448
	
-
 
449
	public void obtenirSelection(String nomVue)
-
 
450
	{
-
 
451
		
-
 
452
	}
-
 
-
 
547
	
-
 
548
 
-
 
549
	/**
-
 
550
	 * synchronise la selection entre la galerie et la liste
453
 
551
	 * @param string le nom de la vue qui doit être synchronisée
454
 
552
	 */
455
	public void synchroniserSelection(String string) {
553
	public void synchroniserSelection(String string) {
456
		
554
		
457
		if(string.equals("galerie") && getDernierIndexOnglet() != 2)
555
		if(string.equals("galerie") && getDernierIndexOnglet() != 2)
458
		{
556
		{
459
				Record[] sel = getGalerieImage().getDView().getSelectedRecords() ;
557
				Record[] sel = getGalerieImage().getDView().getSelectedRecords() ;
460
				getListeImage().selectionnerEnregistrements(sel) ;
558
				getListeImage().selectionnerEnregistrements(sel) ;
461
		}
559
		}
462
		
560
		
463
		if(string.equals("liste") && getDernierIndexOnglet() != 0)
561
		if(string.equals("liste") && getDernierIndexOnglet() != 0)
464
		{
562
		{
465
		
563
		
466
				Record[] sel = getListeImage().getSelectionModel().getSelections() ;
564
				Record[] sel = getListeImage().getSelectionModel().getSelections() ;
467
				int[] ids = new int[sel.length] ;
565
				int[] ids = new int[sel.length] ;
468
				
566
				
469
				for (int i = 0; i < sel.length; i++) {
567
				for (int i = 0; i < sel.length; i++) {
470
					
568
					
471
					ids[i] = getGalerieImage().getSt().indexOf(sel[i]) ;
569
					ids[i] = getGalerieImage().getSt().indexOf(sel[i]) ;
472
				}
570
				}
473
				
571
				
474
				getGalerieImage().selectionnerImages(ids) ;
572
				getGalerieImage().selectionnerImages(ids) ;
475
		}
573
		}
476
		
574
		
477
	}
575
	}
-
 
576
 
-
 
577
	/**
-
 
578
	 * fait une demande de suppression des images (en local et en distant)
-
 
579
	 * des images selectionnées
478
 
580
	 */
479
	public void supprimerImages() {
581
	public void supprimerImages() {
480
		
582
		
481
		String[] ids = null ;
583
		String[] ids = null ;
482
		
584
		
483
		
585
		
484
			if(dernierIndexOnglet == 0)
586
			if(dernierIndexOnglet == 0)
485
			{
587
			{
486
				ids = getGalerieImage().getIdSelectionnees() ;
588
				ids = getGalerieImage().getIdSelectionnees() ;
487
			}
589
			}
488
			else
590
			else
489
			{
591
			{
490
				ids = getListeImage().getIdSelectionnees() ;
592
				ids = getListeImage().getIdSelectionnees() ;
491
			}
593
			}
492
			
594
			
493
		if(ids.length > 0)
595
		if(ids.length > 0)
494
		{
596
		{
495
			
597
			
496
			if(com.google.gwt.user.client.Window
598
			if(com.google.gwt.user.client.Window
497
					.confirm("Supprimer les images sélectionnées ?"))
599
					.confirm("Supprimer les images sélectionnées ?"))
498
			{
600
			{
499
				getIModele().supprimerImages(ids) ;
601
				getIModele().supprimerImages(ids) ;
500
				aucuneSelection() ;
602
				aucuneSelection() ;
501
			}
603
			}
502
		}
604
		}
503
		else
605
		else
504
		{
606
		{
505
			Window.alert("Impossible de supprimer : aucune image selectionnée") ;
607
			Window.alert("Impossible de supprimer : aucune image selectionnée") ;
506
		}
608
		}
507
		
609
		
508
	}
610
	}
-
 
611
 
-
 
612
	/**
-
 
613
	 * désactive les onglets de métadonnées et de zoom (dans le cas ou rien n'est selectionné)
509
 
614
	 */
510
	public void aucuneSelection() {
615
	public void aucuneSelection() {
511
		
616
		
512
		if(getListeImage().getSelectionModel().getCount() <= 0 && getGalerieImage().getDView().getSelectionCount() <= 0)
617
		if(getListeImage().getSelectionModel().getCount() <= 0 && getGalerieImage().getDView().getSelectionCount() <= 0)
513
		{
618
		{
514
			getMetadonneesIptcExif().desactiverPanneau() ;
619
			getMetadonneesIptcExif().desactiverPanneau() ;
515
			getZoomImage().desactiverPanneau() ;
620
			getZoomImage().desactiverPanneau() ;
516
			setSelection(false) ;
621
			setSelection(false) ;
517
		}
622
		}
518
		
623
		
519
	}
624
	}
-
 
625
	
-
 
626
	/**
-
 
627
	 * réacative les onglet métadonnées et zoom (lors d'une sélection alors qu'il n'y en avait pas)
520
	
628
	 */
521
	public void selection() {
629
	public void selection() {
522
		
630
		
523
		if(!isSelection())
631
		if(!isSelection())
524
		{
632
		{
525
			getMetadonneesIptcExif().activerPanneau() ;
633
			getMetadonneesIptcExif().activerPanneau() ;
526
			getZoomImage().activerPanneau() ;
634
			getZoomImage().activerPanneau() ;
527
			setSelection(true);
635
			setSelection(true);
528
		}
636
		}
529
	}
637
	}
530
	
638
	
531
	
639
	
532
 
640
 
533
}
641
}