Subversion Repositories eFlore/Applications.cel

Rev

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

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