Subversion Repositories eFlore/Applications.cel

Rev

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

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