Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 55 Rev 60
1
package org.tela_botanica.client.image;
1
package org.tela_botanica.client.image;
2
 
2
 
3
 
3
 
4
import org.tela_botanica.client.CarnetEnLigneMediateur;
4
import org.tela_botanica.client.CarnetEnLigneMediateur;
5
import org.tela_botanica.client.interfaces.IdVue;
5
import org.tela_botanica.client.interfaces.IdVue;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.VueListable;
7
import org.tela_botanica.client.interfaces.VueListable;
8
import org.tela_botanica.client.observation.ObservationMediateur;
8
import org.tela_botanica.client.observation.ObservationMediateur;
9
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
9
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
10
import org.tela_botanica.client.vues.BarreOutilsVue;
10
import org.tela_botanica.client.vues.BarreOutilsVue;
11
import org.tela_botanica.client.vues.BarreRechercheFiltreVue;
11
import org.tela_botanica.client.vues.BarreRechercheFiltreVue;
12
import org.tela_botanica.client.vues.GalerieImageVue;
12
import org.tela_botanica.client.vues.GalerieImageVue;
13
import org.tela_botanica.client.vues.ListeImageVue;
13
import org.tela_botanica.client.vues.ListeImageVue;
14
import org.tela_botanica.client.vues.MenuImageVue;
14
import org.tela_botanica.client.vues.MenuImageVue;
15
import org.tela_botanica.client.vues.MiniListeObservationVue;
15
import org.tela_botanica.client.vues.MiniListeObservationVue;
16
import org.tela_botanica.client.vues.PanneauFiltresVues;
16
import org.tela_botanica.client.vues.PanneauFiltresVues;
17
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
17
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
18
import org.tela_botanica.client.vues.ZoomImageVue;
18
import org.tela_botanica.client.vues.ZoomImageVue;
19
 
19
 
20
import com.google.gwt.core.client.JavaScriptObject;
20
import com.google.gwt.core.client.JavaScriptObject;
21
import com.google.gwt.user.client.DOM;
21
import com.google.gwt.user.client.DOM;
22
import com.google.gwt.user.client.Element;
22
import com.google.gwt.user.client.Element;
23
import com.google.gwt.user.client.Event;
23
import com.google.gwt.user.client.Event;
24
import com.google.gwt.user.client.Window;
24
import com.google.gwt.user.client.Window;
25
import com.gwtext.client.core.EventObject;
25
import com.gwtext.client.core.EventObject;
26
import com.gwtext.client.core.Ext;
26
import com.gwtext.client.core.Ext;
27
import com.gwtext.client.core.ExtElement;
27
import com.gwtext.client.core.ExtElement;
28
import com.gwtext.client.core.RegionPosition;
28
import com.gwtext.client.core.RegionPosition;
29
import com.gwtext.client.data.Record;
29
import com.gwtext.client.data.Record;
30
import com.gwtext.client.data.Store;
30
import com.gwtext.client.data.Store;
31
import com.gwtext.client.data.Tree;
31
import com.gwtext.client.data.Tree;
32
import com.gwtext.client.dd.DragData;
32
import com.gwtext.client.dd.DragData;
33
import com.gwtext.client.dd.DragSource;
33
import com.gwtext.client.dd.DragSource;
34
import com.gwtext.client.widgets.BoxComponent;
34
import com.gwtext.client.widgets.BoxComponent;
35
import com.gwtext.client.widgets.Component;
35
import com.gwtext.client.widgets.Component;
36
import com.gwtext.client.widgets.Container;
36
import com.gwtext.client.widgets.Container;
37
import com.gwtext.client.widgets.DataView;
37
import com.gwtext.client.widgets.DataView;
38
import com.gwtext.client.widgets.Panel;
38
import com.gwtext.client.widgets.Panel;
39
import com.gwtext.client.widgets.TabPanel;
39
import com.gwtext.client.widgets.TabPanel;
40
import com.gwtext.client.widgets.MessageBox.AlertCallback;
40
import com.gwtext.client.widgets.MessageBox.AlertCallback;
41
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
41
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
42
import com.gwtext.client.widgets.event.ContainerListener;
42
import com.gwtext.client.widgets.event.ContainerListener;
43
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
43
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
44
import com.gwtext.client.widgets.event.PanelListener;
44
import com.gwtext.client.widgets.event.PanelListener;
45
import com.gwtext.client.widgets.event.PanelListenerAdapter;
45
import com.gwtext.client.widgets.event.PanelListenerAdapter;
46
import com.gwtext.client.widgets.grid.GridDragData;
46
import com.gwtext.client.widgets.grid.GridDragData;
47
import com.gwtext.client.widgets.layout.BorderLayout;
47
import com.gwtext.client.widgets.layout.BorderLayout;
48
import com.gwtext.client.widgets.layout.BorderLayoutData;
48
import com.gwtext.client.widgets.layout.BorderLayoutData;
49
import com.gwtext.client.widgets.layout.FitLayout;
49
import com.gwtext.client.widgets.layout.FitLayout;
50
import com.gwtext.client.widgets.menu.BaseItem;
50
import com.gwtext.client.widgets.menu.BaseItem;
51
import com.gwtext.client.widgets.menu.Item;
51
import com.gwtext.client.widgets.menu.Item;
52
import com.gwtext.client.widgets.menu.Menu;
52
import com.gwtext.client.widgets.menu.Menu;
53
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
53
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
54
import com.gwtext.client.widgets.tree.TreeEditor;
54
import com.gwtext.client.widgets.tree.TreeEditor;
55
import com.gwtext.client.widgets.tree.TreeNode;
55
import com.gwtext.client.widgets.tree.TreeNode;
56
 
56
 
57
/**
57
/**
58
 * Mediateur gérant les interactions entre vues et les echanges de données C'est
58
 * Mediateur gérant les interactions entre vues et les echanges de données C'est
59
 * un singleton.
59
 * un singleton.
60
 * 
60
 * 
61
 * @author aurelien
61
 * @author aurelien
62
 * 
62
 * 
63
 */
63
 */
64
public class ImageMediateur {
64
public class ImageMediateur {
65
 
65
 
66
	/**
66
	/**
67
	 * le mediateur des observations qui lie la partie images au carnet
67
	 * le mediateur des observations qui lie la partie images au carnet
68
	 */
68
	 */
69
	private CarnetEnLigneMediateur cMediateur = null;
69
	private CarnetEnLigneMediateur cMediateur = null;
70
 
70
 
71
	
71
	
72
	private static ImageMediateur thisMediateur = null ;
72
	private static ImageMediateur thisMediateur = null ;
73
	/**
73
	/**
74
	 * booleen qui verifie l'unicite de l'instance (donc static)
74
	 * booleen qui verifie l'unicite de l'instance (donc static)
75
	 */
75
	 */
76
	private static boolean estInstancie = false;
76
	private static boolean estInstancie = false;
77
 
77
 
78
	/**
78
	/**
79
	 * modele de données
79
	 * modele de données
80
	 */
80
	 */
81
	private ImageModele iModele = null;
81
	private ImageModele iModele = null;
82
 
82
 
83
	/**
83
	/**
84
	 * L'identifiant utilisateur. Par défaut, il vaut 0
84
	 * L'identifiant utilisateur. Par défaut, il vaut 0
85
	 */
85
	 */
86
	private String identifiant = "0";
86
	private String identifiant = "0";
87
 
87
 
88
	/**
88
	/**
89
	 * panneau principal des images (onglet "images")
89
	 * panneau principal des images (onglet "images")
90
	 */
90
	 */
91
	private Panel panneauPrincipalImage = null ;
91
	private Panel panneauPrincipalImage = null ;
92
 
92
 
93
	/**
93
	/**
94
	 * panneau a onglet pour la liste, la galerie et la vue en grand
94
	 * panneau a onglet pour la liste, la galerie et la vue en grand
95
	 */
95
	 */
96
	private TabPanel ongletsImage = null;
96
	private TabPanel ongletsImage = null;
97
 
97
 
98
	/**
98
	/**
99
	 * panneau de filtrage
99
	 * panneau de filtrage
100
	 */
100
	 */
101
	private PanneauFiltresVues filtres = null;
101
	private PanneauFiltresVues filtres = null;
102
 
102
 
103
	/**
103
	/**
104
	 * conteneur du panneau a onglets
104
	 * conteneur du panneau a onglets
105
	 */
105
	 */
106
	private Panel panneauMenuEtOngletsImage = null;
106
	private Panel panneauMenuEtOngletsImage = null;
107
 
107
 
108
	/**
108
	/**
109
	 * galerie de miniature
109
	 * galerie de miniature
110
	 */
110
	 */
111
	private GalerieImageVue galerieImage = null;
111
	private GalerieImageVue galerieImage = null;
112
 
112
 
113
	/**
113
	/**
114
	 * liste détaillée des images
114
	 * liste détaillée des images
115
	 */
115
	 */
116
	private ListeImageVue listeImage = null;
116
	private ListeImageVue listeImage = null;
117
 
117
 
118
	/**
118
	/**
119
	 * vue agrandie de la l'image selectionnée
119
	 * vue agrandie de la l'image selectionnée
120
	 */
120
	 */
121
	private ZoomImageVue zoomImage = null;
121
	private ZoomImageVue zoomImage = null;
122
 
122
 
123
	/**
123
	/**
124
	 * panneau a onglets affichant les métadonnées et les mots clés
124
	 * panneau a onglets affichant les métadonnées et les mots clés
125
	 */
125
	 */
126
	private PanneauMetadonneesVue metadonneesIptcExif = null;
126
	private PanneauMetadonneesVue metadonneesIptcExif = null;
127
 
127
 
128
	/**
128
	/**
129
	 * panneau conteneur pour le panneau a onglet des metadonnées
129
	 * panneau conteneur pour le panneau a onglet des metadonnées
130
	 */
130
	 */
131
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
131
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
132
 
132
 
133
	/**
133
	/**
134
	 * menu contextuel de manipulation des images
134
	 * menu contextuel de manipulation des images
135
	 */
135
	 */
136
	private MenuImageVue menuImageVue = null;
136
	private MenuImageVue menuImageVue = null;
137
 
137
 
138
	/**
138
	/**
139
	 * barre d'outils
139
	 * barre d'outils
140
	 */
140
	 */
141
	private BarreOutilsVue barreOutilsVue = null;
141
	private BarreOutilsVue barreOutilsVue = null;
142
 
142
 
143
	/**
143
	/**
144
	 * l'indice du dernier onglet sélectionné
144
	 * l'indice du dernier onglet sélectionné
145
	 */
145
	 */
146
	private int dernierIndexOnglet = 0;
146
	private int dernierIndexOnglet = 0;
147
 
147
 
148
	/**
148
	/**
149
	 * booleen explicitant s'il y a une selection en cours
149
	 * booleen explicitant s'il y a une selection en cours
150
	 */
150
	 */
151
	private boolean selection = false;
151
	private boolean selection = false;
152
 
152
 
153
	/**
153
	/**
154
	 * Filtre pour les mots cles
154
	 * Filtre pour les mots cles
155
	 */
155
	 */
156
	private ArbreMotsClesFiltreVue filtreMotsCles = null;
156
	private ArbreMotsClesFiltreVue filtreMotsCles = null;
157
 
157
 
158
	/**
158
	/**
159
	 * Filtre pour les commentaires
159
	 * Filtre pour les commentaires
160
	 */
160
	 */
161
	private BarreRechercheFiltreVue filtreCommentaires = null;
161
	private BarreRechercheFiltreVue filtreCommentaires = null;
162
 
162
 
163
	/**
163
	/**
164
	 * constructeur privé (on accède a la classe par la méthode getInstance)
164
	 * constructeur privé (on accède a la classe par la méthode getInstance)
165
	 */
165
	 */
166
	private ImageMediateur() {
166
	private ImageMediateur() {
167
				
167
				
168
				initialiser() ;
168
				initialiser() ;
169
 
169
 
170
	}
170
	}
171
 
171
 
172
	/**
172
	/**
173
	 * constructeur avec paramètres privé (on accède a la classe par la méthode
173
	 * constructeur avec paramètres privé (on accède a la classe par la méthode
174
	 * getInstance)
174
	 * getInstance)
175
	 * 
175
	 * 
176
	 * @param cm
176
	 * @param cm
177
	 *            le médiateur du carnet à associer à la partie image
177
	 *            le médiateur du carnet à associer à la partie image
178
	 */
178
	 */
179
	private ImageMediateur(CarnetEnLigneMediateur cm) {
179
	private ImageMediateur(CarnetEnLigneMediateur cm) {
180
		
180
		
181
		cMediateur = cm;
181
		cMediateur = cm;
182
		initialiser() ;
182
		initialiser() ;
183
 
183
 
184
	}
184
	}
185
 
185
 
186
	/**
186
	/**
187
	 * Change la valeur du booleen de selection
187
	 * Change la valeur du booleen de selection
188
	 * 
188
	 * 
189
	 * @param selection
189
	 * @param selection
190
	 *            la nouvelle valeur du booléen
190
	 *            la nouvelle valeur du booléen
191
	 */
191
	 */
192
	public void setSelection(boolean selection) {
192
	public void setSelection(boolean selection) {
193
		this.selection = selection;
193
		this.selection = selection;
194
	}
194
	}
195
 
195
 
196
	/**
196
	/**
197
	 * renvoie la valeur du booleen de selection
197
	 * renvoie la valeur du booleen de selection
198
	 * 
198
	 * 
199
	 * @return la valeur du booleen de selection
199
	 * @return la valeur du booleen de selection
200
	 */
200
	 */
201
	public boolean isSelection() {
201
	public boolean isSelection() {
202
		return selection;
202
		return selection;
203
	}
203
	}
204
 
204
 
205
	/**
205
	/**
206
	 * Retourne une instance de manière unique
206
	 * Retourne une instance de manière unique
207
	 * 
207
	 * 
208
	 * @return l'instance unique du médiateur
208
	 * @return l'instance unique du médiateur
209
	 */
209
	 */
210
	public static ImageMediateur Instance() {
210
	public static ImageMediateur Instance() {
211
		if (!estInstancie && thisMediateur == null) {
211
		if (!estInstancie && thisMediateur == null) {
212
			// on en crée un nouveau
212
			// on en crée un nouveau
213
			estInstancie = true;
213
			estInstancie = true;
214
			thisMediateur = new ImageMediateur();
214
			thisMediateur = new ImageMediateur();
215
		}
215
		}
216
		// sinon on retourne le "pointeur" vers le médiateur lui-même
216
		// sinon on retourne le "pointeur" vers le médiateur lui-même
217
		return thisMediateur;
217
		return thisMediateur;
218
	}
218
	}
219
 
219
 
220
	/**
220
	/**
221
	 * Retourne une instance de manière unique en lui associant un médiateur
221
	 * Retourne une instance de manière unique en lui associant un médiateur
222
	 * pour les observations
222
	 * pour les observations
223
	 * 
223
	 * 
224
	 * @param cm le médiateur de carnet à associer
224
	 * @param cm le médiateur de carnet à associer
225
	 * @return l'instance unique du médiateur
225
	 * @return l'instance unique du médiateur
226
	 */
226
	 */
227
	public static ImageMediateur Instance(CarnetEnLigneMediateur cm) {
227
	public static ImageMediateur Instance(CarnetEnLigneMediateur cm) {
228
		if (!estInstancie && thisMediateur == null) {
228
		if (!estInstancie && thisMediateur == null) {
229
			// on en crée un nouveau
229
			// on en crée un nouveau
230
			estInstancie = true;
230
			estInstancie = true;
231
			thisMediateur = new ImageMediateur(cm);
231
			thisMediateur = new ImageMediateur(cm);
232
		}
232
		}
233
		// sinon on retourne le "pointeur" vers le médiateur lui-même
233
		// sinon on retourne le "pointeur" vers le médiateur lui-même
234
		return thisMediateur;
234
		return thisMediateur;
235
	}
235
	}
236
	
236
	
237
	private void initialiser()
237
	private void initialiser()
238
	{
238
	{
239
		// quelques variables de position pour les borderlayouts
239
		// quelques variables de position pour les borderlayouts
240
		final BorderLayoutData regionNord = new BorderLayoutData(
240
		final BorderLayoutData regionNord = new BorderLayoutData(
241
				RegionPosition.NORTH);
241
				RegionPosition.NORTH);
242
 
242
 
243
		final BorderLayoutData regionCentre = new BorderLayoutData(
243
		final BorderLayoutData regionCentre = new BorderLayoutData(
244
				RegionPosition.CENTER);
244
				RegionPosition.CENTER);
245
 
245
 
246
		final BorderLayoutData regionEst = new BorderLayoutData(
246
		final BorderLayoutData regionEst = new BorderLayoutData(
247
				RegionPosition.EAST);
247
				RegionPosition.EAST);
248
		regionEst.setSplit(true);
248
		regionEst.setSplit(true);
249
 
249
 
250
		final BorderLayoutData regionOuest = new BorderLayoutData(
250
		final BorderLayoutData regionOuest = new BorderLayoutData(
251
				RegionPosition.WEST);
251
				RegionPosition.WEST);
252
		regionOuest.setSplit(true);
252
		regionOuest.setSplit(true);
253
		
253
		
254
		panneauPrincipalImage = new Panel("Images") ;
254
		panneauPrincipalImage = new Panel("Images") ;
255
		panneauPrincipalImage.setSize(cMediateur.getPanneauPrincipalCarnetEnLigne().getWidth(), cMediateur.getPanneauPrincipalCarnetEnLigne().getHeight()) ;
255
		panneauPrincipalImage.setSize(cMediateur.getPanneauPrincipalCarnetEnLigne().getWidth(), cMediateur.getPanneauPrincipalCarnetEnLigne().getHeight()) ;
256
		panneauPrincipalImage.setLayout(new BorderLayout()) ;
256
		panneauPrincipalImage.setLayout(new BorderLayout()) ;
257
 
257
 
258
		// on crée un modèle
258
		// on crée un modèle
259
		iModele = ImageModele.Instance(this);
259
		iModele = ImageModele.Instance(this);
260
		// et on demande l'arbre des mots clés
260
		// et on demande l'arbre des mots clés
261
 
261
 
262
		// on gère la mise en page du panneau principal
262
		// on gère la mise en page du panneau principal
263
 
263
 
264
		// on crée le panneau des filtres
264
		// on crée le panneau des filtres
265
		filtres = new PanneauFiltresVues(this);
265
		filtres = new PanneauFiltresVues(this);
266
		//filtres.setWidth(200);
266
		filtres.setWidth("15%");
267
 
267
 
268
		// le panneau à onglet qui contient les trois vues
268
		// le panneau à onglet qui contient les trois vues
269
		ongletsImage = new TabPanel();
269
		ongletsImage = new TabPanel();
270
 
270
 
271
		// la galerie
271
		// la galerie
272
		galerieImage = new GalerieImageVue(this);
272
		galerieImage = new GalerieImageVue(this);
273
 
273
 
274
		// la liste des images
274
		// la liste des images
275
		listeImage = new ListeImageVue(this);
275
		listeImage = new ListeImageVue(this);
276
		listeImage.setTitle("Liste") ;
276
		listeImage.setTitle("Liste") ;
277
 
277
 
278
		// le panneau zoom
278
		// le panneau zoom
279
		zoomImage = new ZoomImageVue(this);
279
		zoomImage = new ZoomImageVue(this);
280
 
280
 
281
		// on ajoute les panneaux au panneau à onglets
281
		// on ajoute les panneaux au panneau à onglets
282
		ongletsImage.add(galerieImage);
282
		ongletsImage.add(galerieImage);
283
		ongletsImage.add(listeImage);
283
		ongletsImage.add(listeImage);
284
		ongletsImage.add(zoomImage);
284
		ongletsImage.add(zoomImage);
285
 
285
 
286
		// on crée les menu et la barre de vue
286
		// on crée les menu et la barre de vue
287
		menuImageVue = new MenuImageVue(this);
287
		menuImageVue = new MenuImageVue(this);
288
		barreOutilsVue = new BarreOutilsVue(this);
288
		barreOutilsVue = new BarreOutilsVue(this);
289
 
289
 
290
		// on initialise le volet qui contient les mots clés
290
		// on initialise le volet qui contient les mots clés
291
		detailsEtMotsCles.setWidth("15%");
291
		detailsEtMotsCles.setWidth("15%");
292
		detailsEtMotsCles.setAnimCollapse(true);
292
		detailsEtMotsCles.setAnimCollapse(true);
293
		detailsEtMotsCles.setTitleCollapse(true);
293
		detailsEtMotsCles.setTitleCollapse(true);
294
		detailsEtMotsCles.setCollapsible(true);
294
		detailsEtMotsCles.setCollapsible(true);
295
 
295
 
296
		// on crée le panneau conteneur des métadonnées et infos
296
		// on crée le panneau conteneur des métadonnées et infos
297
		metadonneesIptcExif = new PanneauMetadonneesVue(this);
297
		metadonneesIptcExif = new PanneauMetadonneesVue(this);
298
		// et on l'inclut dans le volet approprié
298
		// et on l'inclut dans le volet approprié
299
		detailsEtMotsCles.add(metadonneesIptcExif);
299
		detailsEtMotsCles.add(metadonneesIptcExif);
300
 
300
 
301
		panneauMenuEtOngletsImage = new Panel() ;
301
		panneauMenuEtOngletsImage = new Panel() ;
302
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
302
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
303
		// on ajoute la barre de vue au nord du panneau qui contient menu et
303
		// on ajoute la barre de vue au nord du panneau qui contient menu et
304
		// onglets d'images
304
		// onglets d'images
305
		panneauMenuEtOngletsImage.add(barreOutilsVue, regionNord);
305
		panneauMenuEtOngletsImage.add(barreOutilsVue, regionNord);
306
		// les onglets au centre
306
		// les onglets au centre
307
		panneauMenuEtOngletsImage.add(ongletsImage, regionCentre);
307
		panneauMenuEtOngletsImage.add(ongletsImage, regionCentre);
308
		
308
		
309
		// et le panneau de métadonnées et d'info sur le coté droit
309
		// et le panneau de métadonnées et d'info sur le coté droit
310
		panneauPrincipalImage.add(detailsEtMotsCles, regionEst);
310
		panneauPrincipalImage.add(detailsEtMotsCles, regionEst);
311
		
311
		
312
		// on ajoute le panneau qui contient le menu et les onglets d'images au
312
		// on ajoute le panneau qui contient le menu et les onglets d'images au
313
		// centre
313
		// centre
314
		panneauPrincipalImage.add(panneauMenuEtOngletsImage, regionCentre);
314
		panneauPrincipalImage.add(panneauMenuEtOngletsImage, regionCentre);
315
		
315
		
316
		// on ajoute les filtres au panneau gauche
316
		// on ajoute les filtres au panneau gauche
317
		panneauPrincipalImage.add(filtres,regionOuest) ;
317
		panneauPrincipalImage.add(filtres,regionOuest) ;
318
		
318
		
319
		// filtres.setCollapsed(false) ;
319
		// filtres.setCollapsed(false) ;
320
		thisMediateur = this ;
320
		thisMediateur = this ;
321
		
321
		
322
	}
322
	}
323
 
323
 
324
	/**
324
	/**
325
	 * Renvoie l'identifiant de l'utilisateur en cours
325
	 * Renvoie l'identifiant de l'utilisateur en cours
326
	 * 
326
	 * 
327
	 * @return l'identifiant de l'utilisateur
327
	 * @return l'identifiant de l'utilisateur
328
	 */
328
	 */
329
	public String getIdentifiant() {
329
	public String getIdentifiant() {
330
		return identifiant;
330
		return identifiant;
331
	}
331
	}
332
 
332
 
333
	/**
333
	/**
334
	 * . Setteur pour l'identifiant de l'utilisateur en cours
334
	 * . Setteur pour l'identifiant de l'utilisateur en cours
335
	 * 
335
	 * 
336
	 * @param id
336
	 * @param id
337
	 *            le nouvel identifiant utilisateur
337
	 *            le nouvel identifiant utilisateur
338
	 */
338
	 */
339
	public void setIdentifiant(String id) {
339
	public void setIdentifiant(String id) {
340
		identifiant = id;
340
		identifiant = id;
341
	}
341
	}
342
 
342
 
343
	/**
343
	/**
344
	 * Appelle les fonctions de chargement de données, suit généralement un
344
	 * Appelle les fonctions de chargement de données, suit généralement un
345
	 * appel à setIdentifiant, pour obtenir l'arbre des mots clés et les images
345
	 * appel à setIdentifiant, pour obtenir l'arbre des mots clés et les images
346
	 * du nouvel utilisateur
346
	 * du nouvel utilisateur
347
	 */
347
	 */
348
	public void changerUtilisateur() {
348
	public void changerUtilisateur() {
349
		getIModele().initialiserArbreMotsCles();
349
		getIModele().initialiserArbreMotsCles();
350
		obtenirPhotoGalerie(getGalerieImage());
350
		obtenirPhotoGalerie(getGalerieImage());
351
	}
351
	}
352
 
352
 
353
	/**
353
	/**
354
	 * Accesseur pour le modèle associé au médiateur
354
	 * Accesseur pour le modèle associé au médiateur
355
	 * 
355
	 * 
356
	 * @return le modèle associé
356
	 * @return le modèle associé
357
	 */
357
	 */
358
	public ImageModele getIModele() {
358
	public ImageModele getIModele() {
359
		return iModele;
359
		return iModele;
360
	}
360
	}
361
 
361
 
362
	/**
362
	/**
363
	 * Accesseur pour le panneau principal
363
	 * Accesseur pour le panneau principal
364
	 * 
364
	 * 
365
	 * @return le panneau principal
365
	 * @return le panneau principal
366
	 */
366
	 */
367
	public Panel getPanneauPrincipalImage() {
367
	public Panel getPanneauPrincipalImage() {
368
		return panneauPrincipalImage;
368
		return panneauPrincipalImage;
369
	}
369
	}
370
 
370
 
371
	/**
371
	/**
372
	 * Accesseur pour le panneau à onglets
372
	 * Accesseur pour le panneau à onglets
373
	 * 
373
	 * 
374
	 * @return le panneau à onglets
374
	 * @return le panneau à onglets
375
	 */
375
	 */
376
	public TabPanel getOngletsImage() {
376
	public TabPanel getOngletsImage() {
377
		return ongletsImage;
377
		return ongletsImage;
378
	}
378
	}
379
 
379
 
380
	/**
380
	/**
381
	 * Accesseur pour la galerie d'images
381
	 * Accesseur pour la galerie d'images
382
	 * 
382
	 * 
383
	 * @return la galerie d'image
383
	 * @return la galerie d'image
384
	 */
384
	 */
385
	public GalerieImageVue getGalerieImage() {
385
	public GalerieImageVue getGalerieImage() {
386
		return galerieImage;
386
		return galerieImage;
387
	}
387
	}
388
 
388
 
389
	public ListeImageVue getListeImage() {
389
	public ListeImageVue getListeImage() {
390
		return listeImage;
390
		return listeImage;
391
	}
391
	}
392
 
392
 
393
	/**
393
	/**
394
	 * Accesseur pour le panneau "zoom"
394
	 * Accesseur pour le panneau "zoom"
395
	 * 
395
	 * 
396
	 * @return le panneau zoom
396
	 * @return le panneau zoom
397
	 */
397
	 */
398
	public ZoomImageVue getZoomImage() {
398
	public ZoomImageVue getZoomImage() {
399
		return zoomImage;
399
		return zoomImage;
400
	}
400
	}
401
 
401
 
402
	/**
402
	/**
403
	 * Accesseur pour le panneau détails et mot clés
403
	 * Accesseur pour le panneau détails et mot clés
404
	 * 
404
	 * 
405
	 * @return le panneau détails et mots clés
405
	 * @return le panneau détails et mots clés
406
	 */
406
	 */
407
	public Panel getDetailsEtMotsCles() {
407
	public Panel getDetailsEtMotsCles() {
408
		return detailsEtMotsCles;
408
		return detailsEtMotsCles;
409
	}
409
	}
410
 
410
 
411
	/**
411
	/**
412
	 * Accesseur pour le booleen d'instanciation
412
	 * Accesseur pour le booleen d'instanciation
413
	 * 
413
	 * 
414
	 * @return le booleen d'instanciation
414
	 * @return le booleen d'instanciation
415
	 */
415
	 */
416
	public static boolean isEstInstancie() {
416
	public static boolean isEstInstancie() {
417
		return estInstancie;
417
		return estInstancie;
418
	}
418
	}
419
 
419
 
420
	/**
420
	/**
421
	 * Accesseur pour la panneau contenant le menu et les onglets images
421
	 * Accesseur pour la panneau contenant le menu et les onglets images
422
	 * 
422
	 * 
423
	 * @return le panneauMenuEtOngletsImage
423
	 * @return le panneauMenuEtOngletsImage
424
	 */
424
	 */
425
	public Panel getPanneauMenuEtOngletsImage() {
425
	public Panel getPanneauMenuEtOngletsImage() {
426
		return panneauMenuEtOngletsImage;
426
		return panneauMenuEtOngletsImage;
427
	}
427
	}
428
 
428
 
429
	/**
429
	/**
430
	 * Accesseur pour le menu image
430
	 * Accesseur pour le menu image
431
	 * 
431
	 * 
432
	 * @return the menuImageVue
432
	 * @return the menuImageVue
433
	 */
433
	 */
434
	public MenuImageVue getMenuImageVue() {
434
	public MenuImageVue getMenuImageVue() {
435
		return menuImageVue;
435
		return menuImageVue;
436
	}
436
	}
437
 
437
 
438
	/**
438
	/**
439
	 * Accesseur pour la barre d'outils
439
	 * Accesseur pour la barre d'outils
440
	 * 
440
	 * 
441
	 * @return the barreOutilsVue
441
	 * @return the barreOutilsVue
442
	 */
442
	 */
443
	public BarreOutilsVue getBarreOutilsVue() {
443
	public BarreOutilsVue getBarreOutilsVue() {
444
		return barreOutilsVue;
444
		return barreOutilsVue;
445
	}
445
	}
446
 
446
 
447
	/**
447
	/**
448
	 * Accesseur pour le panneau infos et métadonnées
448
	 * Accesseur pour le panneau infos et métadonnées
449
	 * 
449
	 * 
450
	 * @return the metadonneesIptcExif
450
	 * @return the metadonneesIptcExif
451
	 */
451
	 */
452
	public PanneauMetadonneesVue getMetadonneesIptcExif() {
452
	public PanneauMetadonneesVue getMetadonneesIptcExif() {
453
		return metadonneesIptcExif;
453
		return metadonneesIptcExif;
454
	}
454
	}
455
 
455
 
456
	/**
456
	/**
457
	 * Renvoie l'index du dernier onglet sélectionné
457
	 * Renvoie l'index du dernier onglet sélectionné
458
	 * 
458
	 * 
459
	 * @return l'index du dernier onglet
459
	 * @return l'index du dernier onglet
460
	 */
460
	 */
461
	public int getDernierIndexOnglet() {
461
	public int getDernierIndexOnglet() {
462
		return dernierIndexOnglet;
462
		return dernierIndexOnglet;
463
	}
463
	}
464
 
464
 
465
	/**
465
	/**
466
	 * Accesseur pour l'arbre des filtres
466
	 * Accesseur pour l'arbre des filtres
467
	 * 
467
	 * 
468
	 * @return l'arbre pour filtrer les mots clés
468
	 * @return l'arbre pour filtrer les mots clés
469
	 */
469
	 */
470
	public ArbreMotsClesFiltreVue getFiltreMotsCles() {
470
	public ArbreMotsClesFiltreVue getFiltreMotsCles() {
471
		return filtreMotsCles;
471
		return filtreMotsCles;
472
	}
472
	}
473
 
473
 
474
	/**
474
	/**
475
	 * Accesseur pour la barre de recherche
475
	 * Accesseur pour la barre de recherche
476
	 * 
476
	 * 
477
	 * @return la barre de recherche pour filtrer les commentaires
477
	 * @return la barre de recherche pour filtrer les commentaires
478
	 */
478
	 */
479
	public BarreRechercheFiltreVue getFiltreCommentaires() {
479
	public BarreRechercheFiltreVue getFiltreCommentaires() {
480
		return filtreCommentaires;
480
		return filtreCommentaires;
481
	}
481
	}
482
 
482
 
483
	/**
483
	/**
484
	 * Renvoie la vue sélectionné par l'utilisateur
484
	 * Renvoie la vue sélectionné par l'utilisateur
485
	 * 
485
	 * 
486
	 * @return la vue selectionnée par l'utilisateur
486
	 * @return la vue selectionnée par l'utilisateur
487
	 */
487
	 */
488
	public VueListable getVueSelectionnee() {
488
	public VueListable getVueSelectionnee() {
489
		Panel active = ongletsImage.getActiveTab();
489
		Panel active = ongletsImage.getActiveTab();
490
		if (active != zoomImage) {
490
		if (active != zoomImage) {
491
			if (active == galerieImage) {
491
			if (active == galerieImage) {
492
				return galerieImage;
492
				return galerieImage;
493
			} else {
493
			} else {
494
				return listeImage;
494
				return listeImage;
495
			}
495
			}
496
 
496
 
497
		} else {
497
		} else {
498
			if (dernierIndexOnglet == 0) {
498
			if (dernierIndexOnglet == 0) {
499
				return galerieImage;
499
				return galerieImage;
500
			} else {
500
			} else {
501
				return listeImage;
501
				return listeImage;
502
			}
502
			}
503
 
503
 
504
		}
504
		}
505
 
505
 
506
	}
506
	}
507
 
507
 
508
	/**
508
	/**
509
	 * Renvoie l'identifiant de la vue en cours
509
	 * Renvoie l'identifiant de la vue en cours
510
	 * 
510
	 * 
511
	 * @return l'identifiant de la vue en cours de visualisation
511
	 * @return l'identifiant de la vue en cours de visualisation
512
	 */
512
	 */
513
	public String getIdVueSelectionnee() {
513
	public String getIdVueSelectionnee() {
514
		Panel active = ongletsImage.getActiveTab();
514
		Panel active = ongletsImage.getActiveTab();
515
		if (active != zoomImage) {
515
		if (active != zoomImage) {
516
			if (active == galerieImage) {
516
			if (active == galerieImage) {
517
				return galerieImage.getId();
517
				return galerieImage.getId();
518
			} else {
518
			} else {
519
				return listeImage.getId();
519
				return listeImage.getId();
520
			}
520
			}
521
 
521
 
522
		} else {
522
		} else {
523
			if (dernierIndexOnglet == 0) {
523
			if (dernierIndexOnglet == 0) {
524
				return galerieImage.getId();
524
				return galerieImage.getId();
525
			} else {
525
			} else {
526
				return listeImage.getId();
526
				return listeImage.getId();
527
			}
527
			}
528
 
528
 
529
		}
529
		}
530
 
530
 
531
	}
531
	}
532
 
532
 
533
	/**
533
	/**
534
	 * Met a jour les données provenant du modèle et synchronise les vues entre
534
	 * Met a jour les données provenant du modèle et synchronise les vues entre
535
	 * elles
535
	 * elles
536
	 * 
536
	 * 
537
	 * @param o
537
	 * @param o
538
	 *            données de mises a jour pour les vues
538
	 *            données de mises a jour pour les vues
539
	 * @param r
539
	 * @param r
540
	 *            le refraichissable qui a demandé la mise a jour
540
	 *            le refraichissable qui a demandé la mise a jour
541
	 */
541
	 */
542
	public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r) {
542
	public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r) {
543
 
543
 
544
		if (o instanceof Store) {
544
		if (o instanceof Store) {
545
 
545
 
546
			Store li = (Store) o;
546
			Store li = (Store) o;
547
 
547
 
548
			if (li.getCount() <= 0) {
548
			if (li.getCount() <= 0) {
549
				aucuneSelection();
549
				aucuneSelection();
550
			} else {
550
			} else {
551
				selection();
551
				selection();
552
			}
552
			}
553
 
553
 
554
		}
554
		}
555
 
555
 
556
		if (r != getGalerieImage()) {
556
		if (r != getGalerieImage()) {
557
			getGalerieImage().rafraichir(o, false);
557
			getGalerieImage().rafraichir(o, false);
558
		}
558
		}
559
		if (r != getZoomImage()) {
559
		if (r != getZoomImage()) {
560
			getZoomImage().rafraichir(o, false);
560
			getZoomImage().rafraichir(o, false);
561
		}
561
		}
562
		if (r != getListeImage()) {
562
		if (r != getListeImage()) {
563
			getListeImage().rafraichir(o, false);
563
			getListeImage().rafraichir(o, false);
564
		}
564
		}
565
 
565
 
566
		aucuneSelection();
566
		aucuneSelection();
567
		demasquerChargement();
567
		demasquerChargement();
568
	}
568
	}
569
 
569
 
570
	/**
570
	/**
571
	 * envoie au modèle une demande de mise a jour
571
	 * envoie au modèle une demande de mise a jour
572
	 * 
572
	 * 
573
	 * @param r
573
	 * @param r
574
	 *            la vue demandeuse de mise a jour
574
	 *            la vue demandeuse de mise a jour
575
	 */
575
	 */
576
	public void obtenirPhotoGalerie(Rafraichissable r) {
576
	public void obtenirPhotoGalerie(Rafraichissable r) {
577
		masquerChargement();
577
		masquerChargement();
578
		getIModele().obtenirNombrePhotoGalerie(r);
578
		getIModele().obtenirNombrePhotoGalerie(r);
579
	}
579
	}
580
 
580
 
581
	/**
581
	/**
582
	 * demande au modèle les métadonnées associées a une image
582
	 * demande au modèle les métadonnées associées a une image
583
	 * 
583
	 * 
584
	 * @param r
584
	 * @param r
585
	 *            la vue demandeuse de mise a jour
585
	 *            la vue demandeuse de mise a jour
586
	 * @param id
586
	 * @param id
587
	 *            l'identifiant de l'image
587
	 *            l'identifiant de l'image
588
	 */
588
	 */
589
	public void obtenirMetadonnees(Rafraichissable r, String id) {
589
	public void obtenirMetadonnees(Rafraichissable r, String id) {
590
		getIModele().obtenirMetadonnees(r, id);
590
		getIModele().obtenirMetadonnees(r, id);
591
	}
591
	}
592
 
592
 
593
	/**
593
	/**
594
	 * demande au modèle les ids des mots clés associés a une image
594
	 * demande au modèle les ids des mots clés associés a une image
595
	 * 
595
	 * 
596
	 * @param r
596
	 * @param r
597
	 *            la vue demandeuse de mise a jour
597
	 *            la vue demandeuse de mise a jour
598
	 * @param id
598
	 * @param id
599
	 *            l'identifiant de l'image
599
	 *            l'identifiant de l'image
600
	 */
600
	 */
601
	public void obtenirMotsClesId(Rafraichissable r, String id) {
601
	public void obtenirMotsClesId(Rafraichissable r, String id) {
602
		getIModele().obtenirMotsClesId(r, id);
602
		getIModele().obtenirMotsClesId(r, id);
603
	}
603
	}
604
 
604
 
605
	/**
605
	/**
606
	 * Envoie au modèle une demande pour obtenir l'arbre des mots clés
606
	 * Envoie au modèle une demande pour obtenir l'arbre des mots clés
607
	 * 
607
	 * 
608
	 * @param r
608
	 * @param r
609
	 *            le raffraichissable qui a demandé la mise à jour
609
	 *            le raffraichissable qui a demandé la mise à jour
610
	 */
610
	 */
611
	public void obtenirArbreMotsCles(Rafraichissable r) {
611
	public void obtenirArbreMotsCles(Rafraichissable r) {
612
		getIModele().obtenirArbreMotCle(r);
612
		getIModele().obtenirArbreMotCle(r);
613
	}
613
	}
614
 
614
 
615
	/**
615
	/**
616
	 * envoie au modèle une demande de mise a jour des informations modifiables
616
	 * envoie au modèle une demande de mise a jour des informations modifiables
617
	 * associées a une image
617
	 * associées a une image
618
	 * 
618
	 * 
619
	 * @param commentaires
619
	 * @param commentaires
620
	 *            le commentaire de l'image
620
	 *            le commentaire de l'image
621
	 * @param date
621
	 * @param date
622
	 *            la date modifiée par l'utilisateur
622
	 *            la date modifiée par l'utilisateur
623
	 */
623
	 */
624
	public void mettreAJourInfo(String commentaires, String date, String note) {
624
	public void mettreAJourInfo(String commentaires, String date, String note) {
625
		String ids[] = getVueSelectionnee().getIdSelectionnees();
625
		String ids[] = getVueSelectionnee().getIdSelectionnees();
626
 
626
 
627
		getIModele().mettreAJourCacheImage(commentaires, date, note, ids);
627
		getIModele().mettreAJourCacheImage(commentaires, date, note, ids);
628
		getListeImage().mettreAjourInfos(commentaires, date, note);
628
		getListeImage().mettreAjourInfos(commentaires, date, note);
629
	}
629
	}
630
 
630
 
631
	/**
631
	/**
632
	 * Met à jour l'arbre des mots clés affichés dans le volet de droite à
632
	 * Met à jour l'arbre des mots clés affichés dans le volet de droite à
633
	 * partir de l'arbre passé en paramètre
633
	 * partir de l'arbre passé en paramètre
634
	 * 
634
	 * 
635
	 * @param arbreMC
635
	 * @param arbreMC
636
	 *            le nouvel arbre des mots clés
636
	 *            le nouvel arbre des mots clés
637
	 */
637
	 */
638
	public void rafraichirArbreMotsCles(Tree arbreMC) {
638
	public void rafraichirArbreMotsCles(Tree arbreMC) {
639
		metadonneesIptcExif.getPanneauMotsCles().rafraichir(arbreMC, false);
639
		metadonneesIptcExif.getPanneauMotsCles().rafraichir(arbreMC, false);
640
		filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
640
		filtres.getMotsClesFiltre().rafraichir(arbreMC, false);
641
	}
641
	}
642
 
642
 
643
	/**
643
	/**
644
	 * envoie au modèle une demande pour lancer le formulaire ou l'application
644
	 * envoie au modèle une demande pour lancer le formulaire ou l'application
645
	 * d'upload
645
	 * d'upload
646
	 */
646
	 */
647
	public void uploaderImages() {
647
	public void uploaderImages() {
648
		getIModele().uploaderImages();
648
		getIModele().uploaderImages();
649
	}
649
	}
650
 
650
 
651
	/**
651
	/**
652
	 * Envoie une demande au modèle pour obtenir toutes les données annexes de
652
	 * Envoie une demande au modèle pour obtenir toutes les données annexes de
653
	 * l'image (métadonnées, note, etc ...), on y centralise tous les appels a
653
	 * l'image (métadonnées, note, etc ...), on y centralise tous les appels a
654
	 * obtenirQuelqueChose
654
	 * obtenirQuelqueChose
655
	 * 
655
	 * 
656
	 * @param imgNum
656
	 * @param imgNum
657
	 *            l'identifiant de l'image
657
	 *            l'identifiant de l'image
658
	 */
658
	 */
659
	public void obtenirDonnes(String imgNum) {
659
	public void obtenirDonnes(String imgNum) {
660
		obtenirMetadonnees(metadonneesIptcExif, imgNum);
660
		obtenirMetadonnees(metadonneesIptcExif, imgNum);
661
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), imgNum);
661
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), imgNum);
662
		obtenirNote(metadonneesIptcExif.getNoteVue(), imgNum);
662
		obtenirNote(metadonneesIptcExif.getNoteVue(), imgNum);
663
	}
663
	}
664
 
664
 
665
	/**
665
	/**
666
	 * Envoie une demande au modèle pour obtenir la note associée à une image
666
	 * Envoie une demande au modèle pour obtenir la note associée à une image
667
	 * 
667
	 * 
668
	 * @param noteVue
668
	 * @param noteVue
669
	 *            le rafraichissable à qui est destiné cette information
669
	 *            le rafraichissable à qui est destiné cette information
670
	 * @param imgNum
670
	 * @param imgNum
671
	 *            l'identifiant de l'image
671
	 *            l'identifiant de l'image
672
	 */
672
	 */
673
	private void obtenirNote(Rafraichissable r, String imgNum) {
673
	private void obtenirNote(Rafraichissable r, String imgNum) {
674
 
674
 
675
		getIModele().obtenirNote(r, imgNum);
675
		getIModele().obtenirNote(r, imgNum);
676
	}
676
	}
677
 
677
 
678
	/**
678
	/**
679
	 * est appelé lors d'un clic de souris sur une vignette dans la galerie le
679
	 * est appelé lors d'un clic de souris sur une vignette dans la galerie le
680
	 * médiateur gère alors les conséquences
680
	 * médiateur gère alors les conséquences
681
	 * 
681
	 * 
682
	 * @param index
682
	 * @param index
683
	 *            l'index du noeud dans la galerie
683
	 *            l'index du noeud dans la galerie
684
	 * @param node
684
	 * @param node
685
	 *            le noeud selectionné
685
	 *            le noeud selectionné
686
	 * @param e
686
	 * @param e
687
	 *            l'object source de l'évenement
687
	 *            l'object source de l'évenement
688
	 */
688
	 */
689
	public void clicGalerieImage(int index, Element node, EventObject e) {
689
	public void clicGalerieImage(int index, Element node, EventObject e) {
690
		Record rd = getGalerieImage().getDView().getRecord(node);
690
		Record rd = getGalerieImage().getDView().getRecord(node);
691
		String imgUrl = rd.getAsString("url_image");
691
		String imgUrl = rd.getAsString("url_image");
692
		String imgNum = rd.getAsString("num_image");
692
		String imgNum = rd.getAsString("num_image");
693
		String[] imgXY = getIModele().obtenirTailleImage(
693
		String[] imgXY = getIModele().obtenirTailleImage(
694
				rd.getAsString("num_image"));
694
				rd.getAsString("num_image"));
695
		String[] infosImage = { imgUrl, imgXY[0], imgXY[1], imgNum };
695
		String[] infosImage = { imgUrl, imgXY[0], imgXY[1], imgNum };
696
 
696
 
697
		getZoomImage().rafraichir(infosImage, false);
697
		getZoomImage().rafraichir(infosImage, false);
698
		dernierIndexOnglet = 0;
698
		dernierIndexOnglet = 0;
699
 
699
 
700
		if (DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK) {
700
		if (DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK) {
701
 
701
 
702
			getOngletsImage().setActiveTab(2);
702
			getOngletsImage().setActiveTab(2);
703
		}
703
		}
704
 
704
 
705
		obtenirDonnes(imgNum);
705
		obtenirDonnes(imgNum);
706
 
706
 
707
	}
707
	}
708
 
708
 
709
	/**
709
	/**
710
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
710
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
711
	 * médiateur gère alors les conséquences
711
	 * médiateur gère alors les conséquences
712
	 * 
712
	 * 
713
	 * @param rowIndex
713
	 * @param rowIndex
714
	 *            le numéro de ligne selectionné
714
	 *            le numéro de ligne selectionné
715
	 */
715
	 */
716
	public void clicListeImage(int rowIndex) {
716
	public void clicListeImage(int rowIndex) {
717
		Record rd = getListeImage().getSelectionModel().getSelected();
717
		Record rd = getListeImage().getSelectionModel().getSelected();
718
		String imgUrl = rd.getAsString("url_image");
718
		String imgUrl = rd.getAsString("url_image");
719
		String imgNum = rd.getAsString("num_image");
719
		String imgNum = rd.getAsString("num_image");
720
		String[] imgXY = getIModele().obtenirTailleImage(
720
		String[] imgXY = getIModele().obtenirTailleImage(
721
				rd.getAsString("num_image"));
721
				rd.getAsString("num_image"));
722
		String[] infosImage = { imgUrl, imgXY[0], imgXY[1], imgNum };
722
		String[] infosImage = { imgUrl, imgXY[0], imgXY[1], imgNum };
723
 
723
 
724
		getZoomImage().rafraichir(infosImage, false);
724
		getZoomImage().rafraichir(infosImage, false);
725
 
725
 
726
		dernierIndexOnglet = 1;
726
		dernierIndexOnglet = 1;
727
 
727
 
728
		obtenirDonnes(imgNum);
728
		obtenirDonnes(imgNum);
729
	}
729
	}
730
 
730
 
731
	/**
731
	/**
732
	 * gestion du double clic dans la liste
732
	 * gestion du double clic dans la liste
733
	 * 
733
	 * 
734
	 * @param rowIndex
734
	 * @param rowIndex
735
	 */
735
	 */
736
	public void doubleClicListeImage(int rowIndex) {
736
	public void doubleClicListeImage(int rowIndex) {
737
		clicListeImage(rowIndex);
737
		clicListeImage(rowIndex);
738
		getOngletsImage().setActiveTab(2);
738
		getOngletsImage().setActiveTab(2);
739
	}
739
	}
740
 
740
 
741
	/**
741
	/**
742
	 * envoie une demande de mise a jour des données au modèle
742
	 * envoie une demande de mise a jour des données au modèle
743
	 */
743
	 */
744
	public void rafraichirToutesVues() {
744
	public void rafraichirToutesVues() {
745
		obtenirPhotoGalerie(getIModele());
745
		obtenirPhotoGalerie(getIModele());
746
	}
746
	}
747
 
747
 
748
	/**
748
	/**
749
	 * montre le menu au coordonnées indiquées
749
	 * montre le menu au coordonnées indiquées
750
	 * 
750
	 * 
751
	 * @param e
751
	 * @param e
752
	 *            l'objet source de l'évenement
752
	 *            l'objet source de l'évenement
753
	 */
753
	 */
754
	public void montrerContextMenu(EventObject e) {
754
	public void montrerContextMenu(EventObject e) {
755
		menuImageVue.showAt(e.getXY());
755
		menuImageVue.showAt(e.getXY());
756
	}
756
	}
757
 
757
 
758
	/**
758
	/**
759
	 * appelé lors du double clic sur l'image agrandie
759
	 * appelé lors du double clic sur l'image agrandie
760
	 */
760
	 */
761
	public void doubleClicZoomImage() {
761
	public void doubleClicZoomImage() {
762
		getOngletsImage().setActiveTab(dernierIndexOnglet);
762
		getOngletsImage().setActiveTab(dernierIndexOnglet);
763
	}
763
	}
764
 
764
 
765
	/**
765
	/**
766
	 * appelé lors du clic sur un des boutons de la zone zoom
766
	 * appelé lors du clic sur un des boutons de la zone zoom
767
	 * 
767
	 * 
768
	 * @param arg
768
	 * @param arg
769
	 *            le nom du bouton qui a cliqué
769
	 *            le nom du bouton qui a cliqué
770
	 */
770
	 */
771
	public void clicBoutonZoomImage(String arg) {
771
	public void clicBoutonZoomImage(String arg) {
772
 
772
 
773
		Store st;
773
		Store st;
774
		int selected;
774
		int selected;
775
		int storeIndex;
775
		int storeIndex;
776
		Record nRec = null;
776
		Record nRec = null;
777
 
777
 
778
		// tout d'abord on obtient les index selectionnés suivant la vue
778
		// tout d'abord on obtient les index selectionnés suivant la vue
779
		if (getVueSelectionnee() == galerieImage) {
779
		if (getVueSelectionnee() == galerieImage) {
780
			DataView dv = getGalerieImage().getDView();
780
			DataView dv = getGalerieImage().getDView();
781
			st = getGalerieImage().getSt();
781
			st = getGalerieImage().getSt();
782
 
782
 
783
			if (st.getCount() <= 0) {
783
			if (st.getCount() <= 0) {
784
				return;
784
				return;
785
			}
785
			}
786
 
786
 
787
			selected = st.indexOf(dv.getSelectedRecords()[0]);
787
			selected = st.indexOf(dv.getSelectedRecords()[0]);
788
			storeIndex = dv.indexOf(selected);
788
			storeIndex = dv.indexOf(selected);
789
		} else {
789
		} else {
790
			st = listeImage.getSt();
790
			st = listeImage.getSt();
791
 
791
 
792
			if (st.getCount() <= 0) {
792
			if (st.getCount() <= 0) {
793
				return;
793
				return;
794
			}
794
			}
795
 
795
 
796
			selected = st.indexOf(listeImage.getSelectionModel().getSelected());
796
			selected = st.indexOf(listeImage.getSelectionModel().getSelected());
797
			storeIndex = selected;
797
			storeIndex = selected;
798
		}
798
		}
799
 
799
 
800
		if (arg.equals("prev")) {
800
		if (arg.equals("prev")) {
801
			// si la photo séléctionnée est la première, on passe a la
801
			// si la photo séléctionnée est la première, on passe a la
802
			// dernière
802
			// dernière
803
			if (selected == 0) {
803
			if (selected == 0) {
804
				storeIndex = st.getCount() - 1;
804
				storeIndex = st.getCount() - 1;
805
				nRec = st.getAt(storeIndex);
805
				nRec = st.getAt(storeIndex);
806
 
806
 
807
			} else {
807
			} else {
808
				storeIndex = storeIndex - 1;
808
				storeIndex = storeIndex - 1;
809
				nRec = st.getAt(storeIndex);
809
				nRec = st.getAt(storeIndex);
810
			}
810
			}
811
 
811
 
812
		}
812
		}
813
 
813
 
814
		if (arg.equals("suiv")) {
814
		if (arg.equals("suiv")) {
815
			// si la photo selectionnée est la dernière on passe a la
815
			// si la photo selectionnée est la dernière on passe a la
816
			// première
816
			// première
817
			if (selected == st.getCount() - 1) {
817
			if (selected == st.getCount() - 1) {
818
 
818
 
819
				storeIndex = 0;
819
				storeIndex = 0;
820
				nRec = st.getAt(0);
820
				nRec = st.getAt(0);
821
			} else {
821
			} else {
822
				storeIndex = storeIndex + 1;
822
				storeIndex = storeIndex + 1;
823
				nRec = st.getAt(storeIndex);
823
				nRec = st.getAt(storeIndex);
824
			}
824
			}
825
		}
825
		}
826
 
826
 
827
		if (nRec != null) {
827
		if (nRec != null) {
828
			String imgUrl = nRec.getAsString("url_image");
828
			String imgUrl = nRec.getAsString("url_image");
829
			String imgNum = nRec.getAsString("num_image");
829
			String imgNum = nRec.getAsString("num_image");
830
			String[] imgXY = getIModele().obtenirTailleImage(
830
			String[] imgXY = getIModele().obtenirTailleImage(
831
					nRec.getAsString("num_image"));
831
					nRec.getAsString("num_image"));
832
			String[] infosImage = { imgUrl, imgXY[0], imgXY[1], imgNum };
832
			String[] infosImage = { imgUrl, imgXY[0], imgXY[1], imgNum };
833
			getZoomImage().rafraichir(infosImage, false);
833
			getZoomImage().rafraichir(infosImage, false);
834
 
834
 
835
			if (getGalerieImage().isRendered()) {
835
			if (getGalerieImage().isRendered()) {
836
				getGalerieImage().getDView().select(storeIndex);
836
				getGalerieImage().getDView().select(storeIndex);
837
			}
837
			}
838
 
838
 
839
			if (getListeImage().isRendered()) {
839
			if (getListeImage().isRendered()) {
840
				getListeImage().getSelectionModel().selectRecords(nRec);
840
				getListeImage().getSelectionModel().selectRecords(nRec);
841
			}
841
			}
842
 
842
 
843
			obtenirDonnes(imgNum);
843
			obtenirDonnes(imgNum);
844
		}
844
		}
845
	}
845
	}
846
 
846
 
847
	/**
847
	/**
848
	 * synchronise la selection entre la galerie et la liste
848
	 * synchronise la selection entre la galerie et la liste
849
	 * 
849
	 * 
850
	 * @param string
850
	 * @param string
851
	 *            le nom de la vue qui doit être synchronisee
851
	 *            le nom de la vue qui doit être synchronisee
852
	 */
852
	 */
853
	public void synchroniserSelection(String string) {
853
	public void synchroniserSelection(String string) {
854
 
854
 
855
		if (string.equals("galerie") && getDernierIndexOnglet() != 2) {
855
		if (string.equals("galerie") && getDernierIndexOnglet() != 2) {
856
			Record[] sel = getGalerieImage().getDView().getSelectedRecords();
856
			Record[] sel = getGalerieImage().getDView().getSelectedRecords();
857
			getListeImage().selectionnerEnregistrements(sel);
857
			getListeImage().selectionnerEnregistrements(sel);
858
		}
858
		}
859
 
859
 
860
		if (string.equals("liste") && getDernierIndexOnglet() != 0) {
860
		if (string.equals("liste") && getDernierIndexOnglet() != 0) {
861
 
861
 
862
			Record[] sel = getListeImage().getSelectionModel().getSelections();
862
			Record[] sel = getListeImage().getSelectionModel().getSelections();
863
			int[] ids = new int[sel.length];
863
			int[] ids = new int[sel.length];
864
 
864
 
865
			for (int i = 0; i < sel.length; i++) {
865
			for (int i = 0; i < sel.length; i++) {
866
 
866
 
867
				ids[i] = getGalerieImage().getSt().indexOf(sel[i]);
867
				ids[i] = getGalerieImage().getSt().indexOf(sel[i]);
868
			}
868
			}
869
 
869
 
870
			getGalerieImage().selectionnerImages(ids);
870
			getGalerieImage().selectionnerImages(ids);
871
		}
871
		}
872
 
872
 
873
	}
873
	}
874
 
874
 
875
	/**
875
	/**
876
	 * fait une demande de suppression des images (en local et en distant) des
876
	 * fait une demande de suppression des images (en local et en distant) des
877
	 * images selectionnees
877
	 * images selectionnees
878
	 */
878
	 */
879
	public void supprimerImages() {
879
	public void supprimerImages() {
880
 
880
 
881
		String[] ids = null;
881
		String[] ids = null;
882
 
882
 
883
		if (dernierIndexOnglet == 0) {
883
		if (dernierIndexOnglet == 0) {
884
			ids = getGalerieImage().getIdSelectionnees();
884
			ids = getGalerieImage().getIdSelectionnees();
885
		} else {
885
		} else {
886
			ids = getListeImage().getIdSelectionnees();
886
			ids = getListeImage().getIdSelectionnees();
887
		}
887
		}
888
 
888
 
889
		if (ids.length > 0) {
889
		if (ids.length > 0) {
890
 
890
 
891
			if (com.google.gwt.user.client.Window
891
			if (com.google.gwt.user.client.Window
892
					.confirm("Supprimer les images selectionnees ?")) {
892
					.confirm("Supprimer les images selectionnees ?")) {
893
				masquerChargement();
893
				masquerChargement();
894
				getIModele().supprimerImages(ids);
894
				getIModele().supprimerImages(ids);
895
				aucuneSelection();
895
				aucuneSelection();
896
			}
896
			}
897
		} else {
897
		} else {
898
			Window.alert("Impossible de supprimer : aucune image selectionnee");
898
			Window.alert("Impossible de supprimer : aucune image selectionnee");
899
		}
899
		}
900
 
900
 
901
	}
901
	}
902
 
902
 
903
	/**
903
	/**
904
	 * desactive les onglets de metadonnees et de zoom (dans le cas ou rien
904
	 * desactive les onglets de metadonnees et de zoom (dans le cas ou rien
905
	 * n'est selectionne)
905
	 * n'est selectionne)
906
	 */
906
	 */
907
	public void aucuneSelection() {
907
	public void aucuneSelection() {
908
 
908
 
909
		if (getListeImage().getSelectionModel().getCount() <= 0
909
		if (getListeImage().getSelectionModel().getCount() <= 0
910
				&& getGalerieImage().getDView().getSelectionCount() <= 0) {
910
				&& getGalerieImage().getDView().getSelectionCount() <= 0) {
911
			getZoomImage().disable();
911
			getZoomImage().disable();
912
			getMetadonneesIptcExif().desactiverPanneau();
912
			getMetadonneesIptcExif().desactiverPanneau();
913
			getZoomImage().desactiverPanneau();
913
			getZoomImage().desactiverPanneau();
914
			setSelection(false);
914
			setSelection(false);
915
		}
915
		}
916
 
916
 
917
	}
917
	}
918
 
918
 
919
	/**
919
	/**
920
	 * reactive les onglet metadonnees et zoom (lors d'une selection alors qu'il
920
	 * reactive les onglet metadonnees et zoom (lors d'une selection alors qu'il
921
	 * n'y en avait pas)
921
	 * n'y en avait pas)
922
	 */
922
	 */
923
	public void selection() {
923
	public void selection() {
924
 
924
 
925
		if (!isSelection()) {
925
		if (!isSelection()) {
926
			getMetadonneesIptcExif().activerPanneau();
926
			getMetadonneesIptcExif().activerPanneau();
927
			getZoomImage().activerPanneau();
927
			getZoomImage().activerPanneau();
928
			getZoomImage().enable();
928
			getZoomImage().enable();
929
			setSelection(true);
929
			setSelection(true);
930
		}
930
		}
931
	}
931
	}
932
 
932
 
933
	/**
933
	/**
934
	 * Fait apparaitre le menu contextuel de l'arbre des mots clés au niveau
934
	 * Fait apparaitre le menu contextuel de l'arbre des mots clés au niveau
935
	 * d'un noeud donné
935
	 * d'un noeud donné
936
	 * 
936
	 * 
937
	 * @param n
937
	 * @param n
938
	 *            le noeud ou le menu doit apparaitre
938
	 *            le noeud ou le menu doit apparaitre
939
	 * @param ev
939
	 * @param ev
940
	 *            l'objet contenant les données sur l'évenement
940
	 *            l'objet contenant les données sur l'évenement
941
	 * @param te
941
	 * @param te
942
	 *            l'éditeur associé à l'arbre qui permet de modifier les
942
	 *            l'éditeur associé à l'arbre qui permet de modifier les
943
	 *            libellés des noeuds
943
	 *            libellés des noeuds
944
	 */
944
	 */
945
	public void montrerContextMenuArbre(final TreeNode n, EventObject ev,
945
	public void montrerContextMenuArbre(final TreeNode n, EventObject ev,
946
			final TreeEditor te) {
946
			final TreeEditor te) {
947
		Menu mn = new Menu();
947
		Menu mn = new Menu();
948
		final com.gwtext.client.widgets.menu.Item ajoutN = new Item(
948
		final com.gwtext.client.widgets.menu.Item ajoutN = new Item(
949
				"Ajouter mot cle");
949
				"Ajouter mot cle");
950
		final com.gwtext.client.widgets.menu.Item suppN = new Item(
950
		final com.gwtext.client.widgets.menu.Item suppN = new Item(
951
				"Supprimer mot cle");
951
				"Supprimer mot cle");
952
 
952
 
953
		mn.addItem(ajoutN);
953
		mn.addItem(ajoutN);
954
		mn.addItem(suppN);
954
		mn.addItem(suppN);
955
 
955
 
956
		mn.addListener(new MenuListenerAdapter() {
956
		mn.addListener(new MenuListenerAdapter() {
957
 
957
 
958
			public void onItemClick(BaseItem item, EventObject e) {
958
			public void onItemClick(BaseItem item, EventObject e) {
959
				if (item.equals(suppN)) {
959
				if (item.equals(suppN)) {
960
					getMetadonneesIptcExif().getPanneauMotsCles()
960
					getMetadonneesIptcExif().getPanneauMotsCles()
961
							.supprimerNoeud(n);
961
							.supprimerNoeud(n);
962
				}
962
				}
963
				if (item.equals(ajoutN)) {
963
				if (item.equals(ajoutN)) {
964
					getMetadonneesIptcExif().getPanneauMotsCles().ajouterNoeud(
964
					getMetadonneesIptcExif().getPanneauMotsCles().ajouterNoeud(
965
							n);
965
							n);
966
				}
966
				}
967
			}
967
			}
968
		});
968
		});
969
 
969
 
970
		mn.showAt(ev.getXY());
970
		mn.showAt(ev.getXY());
971
 
971
 
972
	}
972
	}
973
 
973
 
974
	/**
974
	/**
975
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du
975
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du
976
	 * mot clé
976
	 * mot clé
977
	 * 
977
	 * 
978
	 * @param text
978
	 * @param text
979
	 *            le texte du mot clé
979
	 *            le texte du mot clé
980
	 * @param id
980
	 * @param id
981
	 *            l'identifiant du mot clé
981
	 *            l'identifiant du mot clé
982
	 */
982
	 */
983
	public void mettreAjourMotsClesId(String text, String id) {
983
	public void mettreAjourMotsClesId(String text, String id) {
984
 
984
 
985
		getIModele().mettreAjourMotsClesId(text, id);
985
		getIModele().mettreAjourMotsClesId(text, id);
986
 
986
 
987
	}
987
	}
988
 
988
 
989
	/**
989
	/**
990
	 * Récupère les identifiants des images selectionnés et appelle le modèle
990
	 * Récupère les identifiants des images selectionnés et appelle le modèle
991
	 * pour qu'il mette à jour les associations mots clés/images
991
	 * pour qu'il mette à jour les associations mots clés/images
992
	 * 
992
	 * 
993
	 * @param motsClesEnCours
993
	 * @param motsClesEnCours
994
	 *            les mots clés à associer aux images selectionnés séparés par
994
	 *            les mots clés à associer aux images selectionnés séparés par
995
	 *            une ','
995
	 *            une ','
996
	 * @param arbreMC
996
	 * @param arbreMC
997
	 *            l'arbre des mots clés à mettre à jour
997
	 *            l'arbre des mots clés à mettre à jour
998
	 */
998
	 */
999
	public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
999
	public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
1000
 
1000
 
1001
		String[] ids = getGalerieImage().getIdSelectionnees();
1001
		String[] ids = getGalerieImage().getIdSelectionnees();
1002
		getIModele().mettreAjourMotsCles(ids, motsClesEnCours, arbreMC);
1002
		getIModele().mettreAjourMotsCles(ids, motsClesEnCours, arbreMC);
1003
 
1003
 
1004
	}
1004
	}
1005
 
1005
 
1006
	/**
1006
	/**
1007
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots
1007
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots
1008
	 * clés
1008
	 * clés
1009
	 * 
1009
	 * 
1010
	 * @param n
1010
	 * @param n
1011
	 *            le noeud à ajouter à l'arbre
1011
	 *            le noeud à ajouter à l'arbre
1012
	 * @param arbreMC
1012
	 * @param arbreMC
1013
	 *            le nouvel arbre de mots clés à mettre à jour
1013
	 *            le nouvel arbre de mots clés à mettre à jour
1014
	 */
1014
	 */
1015
	public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
1015
	public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
1016
		getIModele().ajouterMotCleDansArbre(n, arbreMC);
1016
		getIModele().ajouterMotCleDansArbre(n, arbreMC);
1017
		filtres.getMotsClesFiltre().rafraichir(n, false);
1017
		filtres.getMotsClesFiltre().rafraichir(n, false);
1018
 
1018
 
1019
	}
1019
	}
1020
 
1020
 
1021
	/**
1021
	/**
1022
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre
1022
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre
1023
	 * dans l'arbre des mots clés
1023
	 * dans l'arbre des mots clés
1024
	 * 
1024
	 * 
1025
	 * @param n
1025
	 * @param n
1026
	 *            le noeud à supprimer
1026
	 *            le noeud à supprimer
1027
	 * @param arbreMC
1027
	 * @param arbreMC
1028
	 *            le nouvel arbre de mots clés à mettre à jour
1028
	 *            le nouvel arbre de mots clés à mettre à jour
1029
	 */
1029
	 */
1030
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1030
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1031
 
1031
 
1032
		getIModele().supprimerMotCleDansArbre(n, arbreMC);
1032
		getIModele().supprimerMotCleDansArbre(n, arbreMC);
1033
		filtres.getMotsClesFiltre().rafraichir(n.getId(), false);
1033
		filtres.getMotsClesFiltre().rafraichir(n.getId(), false);
1034
 
1034
 
1035
	}
1035
	}
1036
 
1036
 
1037
	/**
1037
	/**
1038
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots
1038
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots
1039
	 * clés
1039
	 * clés
1040
	 * 
1040
	 * 
1041
	 * @param n
1041
	 * @param n
1042
	 *            le noeud à modifier
1042
	 *            le noeud à modifier
1043
	 * @param arbreMC
1043
	 * @param arbreMC
1044
	 *            le nouvel arbre de mots clés à mettre à jour
1044
	 *            le nouvel arbre de mots clés à mettre à jour
1045
	 */
1045
	 */
1046
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
1046
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
1047
 
1047
 
1048
		getIModele().modifierMotCleDansArbre(n, arbreMC);
1048
		getIModele().modifierMotCleDansArbre(n, arbreMC);
1049
		filtres.getMotsClesFiltre().rafraichir(n, false);
1049
		filtres.getMotsClesFiltre().rafraichir(n, false);
1050
 
1050
 
1051
	}
1051
	}
1052
 
1052
 
1053
	/**
1053
	/**
1054
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans
1054
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans
1055
	 * l'arbre des mots clés
1055
	 * l'arbre des mots clés
1056
	 * 
1056
	 * 
1057
	 * @param n
1057
	 * @param n
1058
	 *            le noeud à déplacer
1058
	 *            le noeud à déplacer
1059
	 * @param arbreMC
1059
	 * @param arbreMC
1060
	 *            le nouvel arbre de mots clés à mettre à jour
1060
	 *            le nouvel arbre de mots clés à mettre à jour
1061
	 */
1061
	 */
1062
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1062
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1063
 
1063
 
1064
		getIModele().deplacerMotCleDansArbre(n, arbreMC);
1064
		getIModele().deplacerMotCleDansArbre(n, arbreMC);
1065
		filtres.getMotsClesFiltre().rafraichir(n, false);
1065
		filtres.getMotsClesFiltre().rafraichir(n, false);
1066
	}
1066
	}
1067
 
1067
 
1068
	/**
1068
	/**
1069
	 * initialise les mots clés cochés par rapport aux images sélectionnées
1069
	 * initialise les mots clés cochés par rapport aux images sélectionnées
1070
	 */
1070
	 */
1071
	public void initialiserMotsCleCoches() {
1071
	public void initialiserMotsCleCoches() {
1072
 
1072
 
1073
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(),
1073
		obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(),
1074
				getGalerieImage().getIdSelectionnees()[0]);
1074
				getGalerieImage().getIdSelectionnees()[0]);
1075
	}
1075
	}
1076
 
1076
 
1077
	/**
1077
	/**
1078
	 * Appelle le modèle pour lui demander les données d'une page à afficher
1078
	 * Appelle le modèle pour lui demander les données d'une page à afficher
1079
	 * 
1079
	 * 
1080
	 * @param pageCourante
1080
	 * @param pageCourante
1081
	 *            le numéro de page à affciher
1081
	 *            le numéro de page à affciher
1082
	 */
1082
	 */
1083
	public void changerNumeroPage(int pageCourante) {
1083
	public void changerNumeroPage(int pageCourante) {
1084
 
1084
 
1085
		// on met le mesage d'attente
1085
		// on met le mesage d'attente
1086
		masquerChargement();
1086
		masquerChargement();
1087
 
1087
 
1088
		// on appelle le modèle
1088
		// on appelle le modèle
1089
		getIModele().changerNumeroPage(pageCourante);
1089
		getIModele().changerNumeroPage(pageCourante);
1090
 
1090
 
1091
		// et met à jour les numéros de page dans les barre d'outils
1091
		// et met à jour les numéros de page dans les barre d'outils
1092
		getGalerieImage().getToolBarVue().changerPageCourante(pageCourante);
1092
		getGalerieImage().getToolBarVue().changerPageCourante(pageCourante);
1093
		getListeImage().getToolBarVue().changerPageCourante(pageCourante);
1093
		getListeImage().getToolBarVue().changerPageCourante(pageCourante);
1094
	}
1094
	}
1095
 
1095
 
1096
	/**
1096
	/**
1097
	 * Appelle le modèle pour qu'il change la taille de page utilisée
1097
	 * Appelle le modèle pour qu'il change la taille de page utilisée
1098
	 * 
1098
	 * 
1099
	 * @param nouvelleTaillePage
1099
	 * @param nouvelleTaillePage
1100
	 *            la nouvelle taille de page
1100
	 *            la nouvelle taille de page
1101
	 */
1101
	 */
1102
	public void changerTaillePage(int nouvelleTaillePage) {
1102
	public void changerTaillePage(int nouvelleTaillePage) {
1103
		// on met le message d'attente
1103
		// on met le message d'attente
1104
		masquerChargement();
1104
		masquerChargement();
1105
 
1105
 
1106
		// on appelle le modèle
1106
		// on appelle le modèle
1107
		getIModele().changerTaillePage(nouvelleTaillePage);
1107
		getIModele().changerTaillePage(nouvelleTaillePage);
1108
 
1108
 
1109
		// et on met à jour la taille de page dans les barres d'outils
1109
		// et on met à jour la taille de page dans les barres d'outils
1110
		getGalerieImage().getToolBarVue().selectionnerTaillePage(
1110
		getGalerieImage().getToolBarVue().selectionnerTaillePage(
1111
				nouvelleTaillePage);
1111
				nouvelleTaillePage);
1112
		getListeImage().getToolBarVue().selectionnerTaillePage(
1112
		getListeImage().getToolBarVue().selectionnerTaillePage(
1113
				nouvelleTaillePage);
1113
				nouvelleTaillePage);
1114
	}
1114
	}
1115
 
1115
 
1116
	/**
1116
	/**
1117
	 * Met à jour les barre d'outils avec des nouvelles valeurs
1117
	 * Met à jour les barre d'outils avec des nouvelles valeurs
1118
	 * 
1118
	 * 
1119
	 * @param pageMax
1119
	 * @param pageMax
1120
	 *            le nombre de pages
1120
	 *            le nombre de pages
1121
	 * @param pageEncours
1121
	 * @param pageEncours
1122
	 *            la page en cours
1122
	 *            la page en cours
1123
	 * @param taillePage
1123
	 * @param taillePage
1124
	 *            la taille de page
1124
	 *            la taille de page
1125
	 * @param nbElement
1125
	 * @param nbElement
1126
	 *            le nombre d'élements par page
1126
	 *            le nombre d'élements par page
1127
	 */
1127
	 */
1128
	public void changerPageMaxEtCourante(int pageMax, int pageEncours,
1128
	public void changerPageMaxEtCourante(int pageMax, int pageEncours,
1129
			int taillePage, int nbElement) {
1129
			int taillePage, int nbElement) {
1130
 
1130
 
1131
		int[] pages = { pageMax, pageEncours, taillePage, nbElement };
1131
		int[] pages = { pageMax, pageEncours, taillePage, nbElement };
1132
		getGalerieImage().getToolBarVue().rafraichir(pages, false);
1132
		getGalerieImage().getToolBarVue().rafraichir(pages, false);
1133
		getListeImage().getToolBarVue().rafraichir(pages, false);
1133
		getListeImage().getToolBarVue().rafraichir(pages, false);
1134
 
1134
 
1135
	}
1135
	}
1136
 
1136
 
1137
	/**
1137
	/**
1138
	 * Recherche l'élement actuellement affiché et affiche son message de
1138
	 * Recherche l'élement actuellement affiché et affiche son message de
1139
	 * chargement
1139
	 * chargement
1140
	 */
1140
	 */
1141
	public void masquerChargement() {
1141
	public void masquerChargement() {
1142
		ExtElement masked = Ext.get(getIdVueSelectionnee());
1142
		ExtElement masked = Ext.get(getIdVueSelectionnee());
1143
 
1143
 
1144
		if (masked != null && !masked.isMasked()) {
1144
		if (masked != null && !masked.isMasked()) {
1145
			masked.mask("Chargement", true);
1145
			masked.mask("Chargement", true);
1146
		}
1146
		}
1147
	}
1147
	}
1148
 
1148
 
1149
	/**
1149
	/**
1150
	 * Recherche l'élement actuellement affiché et retire son message de
1150
	 * Recherche l'élement actuellement affiché et retire son message de
1151
	 * chargement si l'était affiché
1151
	 * chargement si l'était affiché
1152
	 */
1152
	 */
1153
	public void demasquerChargement() {
1153
	public void demasquerChargement() {
1154
		ExtElement masked = Ext.get(getIdVueSelectionnee());
1154
		ExtElement masked = Ext.get(getIdVueSelectionnee());
1155
		if (masked != null && masked.isMasked()) {
1155
		if (masked != null && masked.isMasked()) {
1156
			masked.unmask();
1156
			masked.unmask();
1157
		}
1157
		}
1158
	}
1158
	}
1159
 
1159
 
1160
	public void afficherMenuId() {
1160
	public void afficherMenuId() {
1161
		IdVue i = new IdVue(this);
1161
		IdVue i = new IdVue(this);
1162
		i.show();
1162
		i.show();
1163
	}
1163
	}
1164
 
1164
 
1165
	/**
1165
	/**
1166
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des
1166
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des
1167
	 * filtres sous forme de tableau [nom, valeur]
1167
	 * filtres sous forme de tableau [nom, valeur]
1168
	 * 
1168
	 * 
1169
	 * @return Les noms et valeurs des filtres
1169
	 * @return Les noms et valeurs des filtres
1170
	 */
1170
	 */
1171
	public String[][] renvoyerFiltres() {
1171
	public String[][] renvoyerFiltres() {
1172
		String[][] valeursFiltres = filtres.renvoyerValeursAFiltrer();
1172
		String[][] valeursFiltres = filtres.renvoyerValeursAFiltrer();
1173
		
1173
		
1174
		for (int i = 0; i < valeursFiltres.length; i++) {
1174
		for (int i = 0; i < valeursFiltres.length; i++) {
1175
			
1175
			
1176
			if(valeursFiltres[i].equals(null))
1176
			if(valeursFiltres[i].equals(null))
1177
			{
1177
			{
1178
				Window.alert("Le filtre "+i+" est nul") ;
1178
				Window.alert("Le filtre "+i+" est nul") ;
1179
			}
1179
			}
1180
			else
1180
			else
1181
			{
1181
			{
1182
				if(valeursFiltres[i][0].equals(null))
1182
				if(valeursFiltres[i][0].equals(null))
1183
				{
1183
				{
1184
					Window.alert("Le nom du filtre "+i+" est nul") ;
1184
					Window.alert("Le nom du filtre "+i+" est nul") ;
1185
				}
1185
				}
1186
				
1186
				
1187
				if(valeursFiltres[i][1].equals(null))
1187
				if(valeursFiltres[i][1].equals(null))
1188
				{
1188
				{
1189
					Window.alert("La valeur du filtre "+i+" est nulle") ;
1189
					Window.alert("La valeur du filtre "+i+" est nulle") ;
1190
				}
1190
				}
1191
			}
1191
			}
1192
		}
1192
		}
1193
 
1193
 
1194
		return valeursFiltres;
1194
		return valeursFiltres;
1195
	}
1195
	}
1196
 
1196
 
1197
	/**
1197
	/**
1198
	 * Indique si les filtres ont changés depuis la dernière requête (il faut
1198
	 * Indique si les filtres ont changés depuis la dernière requête (il faut
1199
	 * faire un OR sur le résultat de toutes les fonctions renvoyerEtatFiltre
1199
	 * faire un OR sur le résultat de toutes les fonctions renvoyerEtatFiltre
1200
	 * s'il y a plus d'un filtre)
1200
	 * s'il y a plus d'un filtre)
1201
	 * 
1201
	 * 
1202
	 * @return true si au moins un des filtres a changé, false sinon
1202
	 * @return true si au moins un des filtres a changé, false sinon
1203
	 */
1203
	 */
1204
	public boolean getEtatFiltres() {
1204
	public boolean getEtatFiltres() {
1205
		return (filtres.renvoyerEtatFiltre());
1205
		return (filtres.renvoyerEtatFiltre());
1206
	}
1206
	}
1207
 
1207
 
1208
	/**
1208
	/**
1209
	 * Accesseur pour le panneau de droite contenant les filtres
1209
	 * Accesseur pour le panneau de droite contenant les filtres
1210
	 * 
1210
	 * 
1211
	 * @return le panneau contenant les filtres
1211
	 * @return le panneau contenant les filtres
1212
	 */
1212
	 */
1213
	public PanneauFiltresVues getPanneauFiltres() {
1213
	public PanneauFiltresVues getPanneauFiltres() {
1214
		return filtres;
1214
		return filtres;
1215
	}
1215
	}
1216
 
1216
 
1217
	/**
1217
	/**
1218
	 * ajoute les images séléctionnées dans la vue courante au tampon
1218
	 * ajoute les images séléctionnées dans la vue courante au tampon
1219
	 */
1219
	 */
1220
	public void ajouterImagesSelection() {
1220
	public void ajouterImagesSelection() {
1221
		String[] ids = getVueSelectionnee().getIdSelectionnees();
1221
		String[] ids = getVueSelectionnee().getIdSelectionnees();
1222
		String id = "";
1222
		String id = "";
1223
		for (int i = 0; i < ids.length; i++) {
1223
		for (int i = 0; i < ids.length; i++) {
1224
			id += " - " + ids[i];
1224
			id += " - " + ids[i];
1225
		}
1225
		}
1226
		getIModele().ajouterImagesSelection(ids);
1226
		getIModele().ajouterImagesSelection(ids);
1227
 
1227
 
1228
		Window.alert(ids.length + " image(s) ajoutées au tampon ");
1228
		Window.alert(ids.length + " image(s) ajoutées au tampon ");
1229
 
1229
 
1230
	}
1230
	}
1231
	
1231
	
1232
	/**
1232
	/**
1233
	 * Affiche les ids des images contenues dans le tampon
1233
	 * Affiche les ids des images contenues dans le tampon
1234
	 */
1234
	 */
1235
	public void afficherIdSelectionImages() {
1235
	public void afficherIdSelectionImages() {
1236
 
1236
 
1237
		Window.alert("Contenu du tampon : " + getIModele().renvoyerSelection());
1237
		Window.alert("Contenu du tampon : " + getIModele().renvoyerSelection());
1238
 
1238
 
1239
	}
1239
	}
1240
	
1240
	
1241
	/**
1241
	/**
1242
	 * Renvoie les ids des images contenues dans le tampon en une seule string
1242
	 * Renvoie les ids des images contenues dans le tampon en une seule string
1243
	 * @return une string de la forme id1, id2, id3
1243
	 * @return une string de la forme id1, id2, id3
1244
	 */
1244
	 */
1245
	public String renvoyerSelection() {
1245
	public String renvoyerSelection() {
1246
		return getIModele().renvoyerSelection();
1246
		return getIModele().renvoyerSelection();
1247
	}
1247
	}
1248
	
1248
	
1249
	/**
1249
	/**
1250
	 * Vide le tampon d'images
1250
	 * Vide le tampon d'images
1251
	 */
1251
	 */
1252
	public void viderSelection() {
1252
	public void viderSelection() {
1253
 
1253
 
1254
		getIModele().viderSelection();
1254
		getIModele().viderSelection();
1255
		Window.alert("Le tampon a été vidé ");
1255
		Window.alert("Le tampon a été vidé ");
1256
 
1256
 
1257
	}
1257
	}
1258
 
1258
 
1259
	/**
1259
	/**
1260
	 * Fonction appelée lors du drag 'n drop d'une image sur une observation
1260
	 * Fonction appelée lors du drag 'n drop d'une image sur une observation
1261
	 * @param source la source du drag
1261
	 * @param source la source du drag
1262
	 * @param e l'objet sur lequel on a fait le drop
1262
	 * @param e l'objet sur lequel on a fait le drop
1263
	 * @param data les données
1263
	 * @param data les données
1264
	 * @return une booleen indiquant le succès ou l'échec de l'opération
1264
	 * @return une booleen indiquant le succès ou l'échec de l'opération
1265
	 */
1265
	 */
1266
	public boolean lierImagesDD(DragSource source, EventObject e, DragData data) {
1266
	public boolean lierImagesDD(DragSource source, EventObject e, DragData data) {
1267
		
1267
		
1268
		// on peut convertir directement les données car on a testé avant le type de données
1268
		// on peut convertir directement les données car on a testé avant le type de données
1269
		GridDragData gdd = (GridDragData)data ;
1269
		GridDragData gdd = (GridDragData)data ;
1270
		// les ids des images sont initialisées 
1270
		// les ids des images sont initialisées 
1271
  		String idsImg = "" ;
1271
  		String idsImg = "" ;
1272
  		
1272
  		
1273
  		// on obtient la liste des selections dans la source
1273
  		// on obtient la liste des selections dans la source
1274
  		Record[] aLier =  gdd.getSelections() ;
1274
  		Record[] aLier =  gdd.getSelections() ;
1275
  		for (int i = 0; i < aLier.length; i++) 
1275
  		for (int i = 0; i < aLier.length; i++) 
1276
  		{
1276
  		{
1277
			// on les concatènes en une seule chaine	
1277
			// on les concatènes en une seule chaine	
1278
  			idsImg += aLier[i].getAsString("id_image")+"," ;
1278
  			idsImg += aLier[i].getAsString("id_image")+"," ;
1279
		}
1279
		}
1280
  		
1280
  		
1281
  		MiniListeObservationVue mv = getMetadonneesIptcExif().getMiniListeObservation() ;
1281
  		MiniListeObservationVue mv = getMetadonneesIptcExif().getMiniListeObservation() ;
1282
  		// on cherche quel est la ligne sur laquelle on a fait le drop dans la la liste des observations
1282
  		// on cherche quel est la ligne sur laquelle on a fait le drop dans la la liste des observations
1283
  		int index = mv.getView().findRowIndex(e) ;
1283
  		int index = mv.getView().findRowIndex(e) ;
1284
  		Record rddrop = mv.getStore().getRecordAt(index) ;
1284
  		Record rddrop = mv.getStore().getRecordAt(index) ;
1285
  		
1285
  		
1286
  		// SI l'enregistrement existe bel et bien
1286
  		// SI l'enregistrement existe bel et bien
1287
  		if(rddrop != null)
1287
  		if(rddrop != null)
1288
  		{
1288
  		{
1289
  			String idObs = rddrop.getAsString("id_obs")+"," ;
1289
  			String idObs = rddrop.getAsString("id_obs")+"," ;
1290
  			// on lie les observations
1290
  			// on lie les observations
1291
  			lierImagesObservation(idObs, idsImg) ;
1291
  			lierImagesObservation(idObs, idsImg) ;
1292
  		}
1292
  		}
1293
  		
1293
  		
1294
  		return true ;	  
1294
  		return true ;	  
1295
	}
1295
	}
1296
	
1296
	
1297
	/**
1297
	/**
1298
	 * Fonction appelée lors du drag 'n drop d'une observation sur une image
1298
	 * Fonction appelée lors du drag 'n drop d'une observation sur une image
1299
	 * @param source la source du drag
1299
	 * @param source la source du drag
1300
	 * @param e l'objet sur lequel on a fait le drop
1300
	 * @param e l'objet sur lequel on a fait le drop
1301
	 * @param data les données
1301
	 * @param data les données
1302
	 * @return une booleen indiquant le succès ou l'échec de l'opération
1302
	 * @return une booleen indiquant le succès ou l'échec de l'opération
1303
	 */
1303
	 */
1304
	public boolean lierObsDD(DragSource source, EventObject e, DragData data, String idDest) {
1304
	public boolean lierObsDD(DragSource source, EventObject e, DragData data, String idDest) {
1305
		
1305
		
1306
		// on peut convertir directement les données car on a testé avant le type de données
1306
		// on peut convertir directement les données car on a testé avant le type de données
1307
		GridDragData gdd = (GridDragData)data ;
1307
		GridDragData gdd = (GridDragData)data ;
1308
		// les ids des images sont initialisées 
1308
		// les ids des images sont initialisées 
1309
  		String idsObs = "" ;
1309
  		String idsObs = "" ;
1310
  		
1310
  		
1311
  		// on obtient la liste des selections dans la source
1311
  		// on obtient la liste des selections dans la source
1312
  		Record[] aLier =  gdd.getSelections() ;
1312
  		Record[] aLier =  gdd.getSelections() ;
1313
  		for (int i = 0; i < aLier.length; i++) 
1313
  		for (int i = 0; i < aLier.length; i++) 
1314
  		{
1314
  		{
1315
  			// on les concatènes en une seule chaine		
1315
  			// on les concatènes en une seule chaine		
1316
  			idsObs += aLier[i].getAsString("id_obs")+"," ;
1316
  			idsObs += aLier[i].getAsString("id_obs")+"," ;
1317
		}
1317
		}
1318
  		
1318
  		
1319
  		Record rddrop = null ;
1319
  		Record rddrop = null ;
1320
  		
1320
  		
1321
  		// si la destination est la galerie d'images
1321
  		// si la destination est la galerie d'images
1322
  		if(idDest.equals(getGalerieImage().getId()))
1322
  		if(idDest.equals(getGalerieImage().getId()))
1323
  		{
1323
  		{
1324
  			GalerieImageVue gv = getGalerieImage() ;
1324
  			GalerieImageVue gv = getGalerieImage() ;
1325
  			
1325
  			
1326
  			// alors l'élément sur lequel on a fait le drop n'est pas le bon
1326
  			// alors l'élément sur lequel on a fait le drop n'est pas le bon
1327
  			int index = gv.getDView().indexOf(e.getTarget()) ;
1327
  			int index = gv.getDView().indexOf(e.getTarget()) ;
1328
  			Element el = e.getTarget() ;
1328
  			Element el = e.getTarget() ;
1329
  			
1329
  			
1330
  			// alors on cherche son parent tant que celui-ci n'est pas présent dans la dataview
1330
  			// alors on cherche son parent tant que celui-ci n'est pas présent dans la dataview
1331
  			while(index == -1 && el != null)
1331
  			while(index == -1 && el != null)
1332
  			{
1332
  			{
1333
  				index = gv.getDView().indexOf(el) ;
1333
  				index = gv.getDView().indexOf(el) ;
1334
  				el = (Element) el.getParentElement() ;
1334
  				el = (Element) el.getParentElement() ;
1335
  			}
1335
  			}
1336
  			
1336
  			
1337
  			// si on l'a trouvé, on obtient l'enregistrement qui correspond
1337
  			// si on l'a trouvé, on obtient l'enregistrement qui correspond
1338
  			if(index != -1)
1338
  			if(index != -1)
1339
  			{
1339
  			{
1340
  				rddrop = gv.getSt().getAt(index) ;
1340
  				rddrop = gv.getSt().getAt(index) ;
1341
  			}
1341
  			}
1342
				
1342
				
1343
  		}
1343
  		}
1344
  		
1344
  		
1345
  		// si la destination est la liste d'images
1345
  		// si la destination est la liste d'images
1346
  		if(idDest.equals(getListeImage().getId()))
1346
  		if(idDest.equals(getListeImage().getId()))
1347
  		{
1347
  		{
1348
  			// on obtient directement l'enregistrement correspondant à l'élément sur lequel on a fait le drop
1348
  			// on obtient directement l'enregistrement correspondant à l'élément sur lequel on a fait le drop
1349
  			ListeImageVue lv = getListeImage() ;
1349
  			ListeImageVue lv = getListeImage() ;
1350
  			int index = lv.getView().findRowIndex(e) ;
1350
  			int index = lv.getView().findRowIndex(e) ;
1351
  			rddrop = lv.getSt().getAt(index) ;
1351
  			rddrop = lv.getSt().getAt(index) ;
1352
  		}
1352
  		}
1353
  		
1353
  		
1354
  		// si on a bien obtenu un enregistrement 
1354
  		// si on a bien obtenu un enregistrement 
1355
  		if(rddrop != null)
1355
  		if(rddrop != null)
1356
  		{
1356
  		{
1357
  			// on récupère l'id de l'image et alors on appelle la fonction de liaison
1357
  			// on récupère l'id de l'image et alors on appelle la fonction de liaison
1358
  			String idImg = rddrop.getAsString("id_image")+"," ;
1358
  			String idImg = rddrop.getAsString("id_image")+"," ;
1359
  			lierImagesObservation(idsObs, idImg) ;
1359
  			lierImagesObservation(idsObs, idImg) ;
1360
  			
1360
  			
1361
  			return true ;
1361
  			return true ;
1362
  		}
1362
  		}
1363
	
1363
	
1364
  		
1364
  		
1365
  		// si la destination est l'image zoomée
1365
  		// si la destination est l'image zoomée
1366
  		if(idDest.equals(getZoomImage().getId()))
1366
  		if(idDest.equals(getZoomImage().getId()))
1367
  		{
1367
  		{
1368
  			// on obtient directement l'id correspondant
1368
  			// on obtient directement l'id correspondant
1369
  			ZoomImageVue zv = getZoomImage() ;
1369
  			ZoomImageVue zv = getZoomImage() ;
1370
  			String idImg = zv.getIdImage() ;
1370
  			String idImg = zv.getIdImage() ;
1371
  			lierImagesObservation(idsObs, idImg) ;
1371
  			lierImagesObservation(idsObs, idImg) ;
1372
  			
1372
  			
1373
  			return true ; 			
1373
  			return true ; 			
1374
  		}
1374
  		}
1375
  		
1375
  		
1376
  		return false ;
1376
  		return false ;
1377
  		  
1377
  		  
1378
	}
1378
	}
1379
	
1379
	
1380
	/**
1380
	/**
1381
	 * Lie une ou plusieurs images à une ou plusieurs observations
1381
	 * Lie une ou plusieurs images à une ou plusieurs observations
1382
	 * @param idsObs les identifiants des observations séparés par des ","
1382
	 * @param idsObs les identifiants des observations séparés par des ","
1383
	 * @param idsImg les identifiants des images séparés par des ","
1383
	 * @param idsImg les identifiants des images séparés par des ","
1384
	 */
1384
	 */
1385
	public void lierImagesObservation(String idsObs, String idsImg)
1385
	public void lierImagesObservation(String idsObs, String idsImg)
1386
	{
1386
	{
1387
		// TODO: faire une vraie liaison dans la base de données avec des vraies observations
1387
		// TODO: faire une vraie liaison dans la base de données avec des vraies observations
1388
		getIModele().lierImagesObervations(idsObs,idsImg) ;
1388
		getIModele().lierImagesObervations(idsObs,idsImg) ;
1389
	}
1389
	}
1390
 
1390
 
1391
	public void deconnecterUtilisateur() {
1391
	public void deconnecterUtilisateur() {
1392
		
1392
		
1393
		if(panneauPrincipalImage.isVisible())
1393
		if(panneauPrincipalImage.isVisible())
1394
		{
1394
		{
1395
			setIdentifiant("0") ;
1395
			setIdentifiant("0") ;
1396
			changerUtilisateur() ;
1396
			changerUtilisateur() ;
1397
		}
1397
		}
1398
		else
1398
		else
1399
		{
1399
		{
1400
			panneauPrincipalImage.addListener(new ContainerListenerAdapter()
1400
			panneauPrincipalImage.addListener(new ContainerListenerAdapter()
1401
			{
1401
			{
1402
				public void onShow(Component component)
1402
				public void onShow(Component component)
1403
				{
1403
				{
1404
					deconnecterUtilisateur() ;
1404
					deconnecterUtilisateur() ;
1405
					panneauPrincipalImage.purgeListeners() ;
1405
					panneauPrincipalImage.purgeListeners() ;
1406
				}
1406
				}
1407
				
1407
				
1408
			}) ;
1408
			}) ;
1409
		}
1409
		}
1410
		
1410
		
1411
	}
1411
	}
1412
	
1412
	
1413
	public void connecterUtilisateur() {
1413
	public void connecterUtilisateur() {
1414
		
1414
		
1415
		if(panneauPrincipalImage.isVisible())
1415
		if(panneauPrincipalImage.isVisible())
1416
		{
1416
		{
1417
			setIdentifiant(cMediateur.getUtilisateur().getIdentifiant()) ;
1417
			setIdentifiant(cMediateur.getUtilisateur().getIdentifiant()) ;
1418
			changerUtilisateur() ;
1418
			changerUtilisateur() ;
1419
		}
1419
		}
1420
		else
1420
		else
1421
		{
1421
		{
1422
			panneauPrincipalImage.addListener(new ContainerListenerAdapter()
1422
			panneauPrincipalImage.addListener(new ContainerListenerAdapter()
1423
			{
1423
			{
1424
				public void onShow(Component component)
1424
				public void onShow(Component component)
1425
				{
1425
				{
1426
					setIdentifiant(cMediateur.getUtilisateur().getIdentifiant()) ;
1426
					setIdentifiant(cMediateur.getUtilisateur().getIdentifiant()) ;
1427
					changerUtilisateur() ;
1427
					changerUtilisateur() ;
1428
					panneauPrincipalImage.purgeListeners() ;
1428
					panneauPrincipalImage.purgeListeners() ;
1429
				}
1429
				}
1430
				
1430
				
1431
			}) ;
1431
			}) ;
1432
		}
1432
		}
1433
		
1433
		
1434
	}
1434
	}
1435
 
1435
 
1436
}
1436
}