Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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