Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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