Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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