Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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