Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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