Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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