Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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