Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1018 Rev 1292
1
package org.tela_botanica.client.vues.image;
1
package org.tela_botanica.client.vues.image;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.vues.image.ImageMotsClesVue;
5
import org.tela_botanica.client.vues.image.ImageMotsClesVue;
6
import org.tela_botanica.client.vues.image.filtres.RechercheFiltreTaxonVue;
6
import org.tela_botanica.client.vues.image.filtres.RechercheFiltreTaxonVue;
7
 
7
 
8
import com.google.gwt.user.client.Timer;
8
import com.google.gwt.user.client.Timer;
9
import com.google.gwt.user.client.Window;
9
import com.google.gwt.user.client.Window;
10
import com.google.gwt.user.client.ui.Label;
10
import com.google.gwt.user.client.ui.Label;
11
import com.gwtext.client.core.EventObject;
11
import com.gwtext.client.core.EventObject;
12
import com.gwtext.client.core.Ext;
12
import com.gwtext.client.core.Ext;
13
import com.gwtext.client.core.NameValuePair;
13
import com.gwtext.client.core.NameValuePair;
14
import com.gwtext.client.widgets.BoxComponent;
14
import com.gwtext.client.widgets.BoxComponent;
15
import com.gwtext.client.widgets.Button;
15
import com.gwtext.client.widgets.Button;
16
import com.gwtext.client.widgets.Component;
16
import com.gwtext.client.widgets.Component;
17
import com.gwtext.client.widgets.Panel;
17
import com.gwtext.client.widgets.Panel;
18
import com.gwtext.client.widgets.TabPanel;
18
import com.gwtext.client.widgets.TabPanel;
19
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
19
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
20
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
20
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
21
import com.gwtext.client.widgets.event.PanelListenerAdapter;
21
import com.gwtext.client.widgets.event.PanelListenerAdapter;
22
import com.gwtext.client.widgets.form.DateField;
22
import com.gwtext.client.widgets.form.DateField;
23
import com.gwtext.client.widgets.form.TextArea;
23
import com.gwtext.client.widgets.form.TextArea;
24
import com.gwtext.client.widgets.form.TextField;
24
import com.gwtext.client.widgets.form.TextField;
25
import com.gwtext.client.widgets.grid.GridPanel;
25
import com.gwtext.client.widgets.grid.GridPanel;
26
import com.gwtext.client.widgets.grid.GridView;
26
import com.gwtext.client.widgets.grid.GridView;
27
import com.gwtext.client.widgets.grid.PropertyGridPanel;
27
import com.gwtext.client.widgets.grid.PropertyGridPanel;
28
import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter;
28
import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter;
29
import com.gwtext.client.widgets.layout.RowLayout;
29
import com.gwtext.client.widgets.layout.RowLayout;
30
import com.gwtext.client.widgets.layout.RowLayoutData;
30
import com.gwtext.client.widgets.layout.RowLayoutData;
31
import com.gwtext.client.widgets.layout.VerticalLayout;
31
import com.gwtext.client.widgets.layout.VerticalLayout;
32
 
32
 
33
/**
33
/**
34
 * Panneau contenant les infos, les métadonnées et l'arbre des mots clés, il
34
 * Panneau contenant les infos, les métadonnées et l'arbre des mots clés, il
35
 * implémente l'interface rafraichissable
35
 * implémente l'interface rafraichissable
36
 * 
36
 * 
37
 * @author aurelien
37
 * @author aurelien
38
 * 
38
 * 
39
 */
39
 */
40
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable {
40
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable {
41
 
41
 
42
	/**
42
	/**
43
	 * Le médiateur associé à la vue
43
	 * Le médiateur associé à la vue
44
	 */
44
	 */
45
	private ImageMediateur imediateur = null;
45
	private ImageMediateur imediateur = null;
46
	/**
46
	/**
47
	 * Le panneau des Exifs
47
	 * Le panneau des Exifs
48
	 */
48
	 */
49
	private PropertyGridPanel ExifGrid = null;
49
	private PropertyGridPanel ExifGrid = null;
50
	/**
50
	/**
51
	 * Le panneau des Iptc
51
	 * Le panneau des Iptc
52
	 */
52
	 */
53
	private PropertyGridPanel IptcGrid = null;
53
	private PropertyGridPanel IptcGrid = null;
54
 
54
 
55
	/**
55
	/**
56
	 * La grille pour le panneau des Exifs
56
	 * La grille pour le panneau des Exifs
57
	 */
57
	 */
58
	private GridView gViewExif = null;
58
	private GridView gViewExif = null;
59
	/**
59
	/**
60
	 * La grille pour le panneau de Iptc
60
	 * La grille pour le panneau de Iptc
61
	 */
61
	 */
62
	private GridView gViewIptc = null;
62
	private GridView gViewIptc = null;
63
 
63
 
64
	/**
64
	/**
65
	 * L'onglet des Exifs
65
	 * L'onglet des Exifs
66
	 */
66
	 */
67
	private Panel panneauExifGrid = null;
67
	private Panel panneauExifGrid = null;
68
	/**
68
	/**
69
	 * L'onglet des Iptc
69
	 * L'onglet des Iptc
70
	 */
70
	 */
71
	private Panel panneauIptcGrid = null;
71
	private Panel panneauIptcGrid = null;
72
	/**
72
	/**
73
	 * L'onglet des infos
73
	 * L'onglet des infos
74
	 */
74
	 */
75
	private Panel panneauInfoGrid = null;
75
	private Panel panneauInfoGrid = null;
76
	/**
76
	/**
77
	 * L'onglet des mots clés
77
	 * L'onglet des mots clés
78
	 */
78
	 */
79
	private ImageMotsClesVue panneauMotsCles = null;
79
	private ImageMotsClesVue panneauMotsCles = null;
80
	
80
	
81
	/**
81
	/**
82
	 * l'onglet des observations
82
	 * l'onglet des observations
83
	 */
83
	 */
84
	private Panel panneauMiniListeObservation = null;
84
	private Panel panneauMiniListeObservation = null;
85
 
85
 
86
	/**
86
	/**
87
	 * Le champ commentaire
87
	 * Le champ commentaire
88
	 */
88
	 */
89
	private TextField commentaireGeneral = null;
89
	private TextField commentaireGeneral = null;
90
	/**
90
	/**
91
	 * Le champ date
91
	 * Le champ date
92
	 */
92
	 */
93
	private DateField dateImage = null;
93
	private DateField dateImage = null;
94
	
94
	
95
	/**
95
	/**
96
	 * La barre de recherche rapide des taxons
96
	 * La barre de recherche rapide des taxons
97
	 */
97
	 */
98
	private RechercheFiltreTaxonVue rechercheFiltreTaxonVue = null; 
98
	private RechercheFiltreTaxonVue rechercheFiltreTaxonVue = null; 
99
	
99
	
100
	/**
100
	/**
101
	 * La mini liste des observations
101
	 * La mini liste des observations
102
	 */
102
	 */
103
	private MiniListeObservationVue miniListeObservation = null ;
103
	private MiniListeObservationVue miniListeObservation = null ;
104
	/**
104
	/**
105
	 * Le bouton de validation
105
	 * Le bouton de validation
106
	 */
106
	 */
107
	Button validerInfo = null;
107
	Button validerInfo = null;
108
 
108
 
109
	/**
109
	/**
110
	 * Barre de notation
110
	 * Barre de notation
111
	 */
111
	 */
112
	BarreNotationVue noteVue = null;
112
	BarreNotationVue noteVue = null;
113
 
113
 
114
	/**
114
	/**
115
	 * Booleen d'instanciation
115
	 * Booleen d'instanciation
116
	 */
116
	 */
117
	boolean estInstancie = false;
117
	boolean estInstancie = false;
118
	
118
	
119
	Timer timerRedimensionnement = null;
119
	Timer timerRedimensionnement = null;
120
 
120
 
121
	/**
121
	/**
122
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
122
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
123
	 */
123
	 */
124
	@SuppressWarnings("unused")
124
	@SuppressWarnings("unused")
125
	private PanneauMetadonneesVue() {
125
	private PanneauMetadonneesVue() {
126
		super();
126
		super();
127
	}
127
	}
128
 
128
 
129
	/**
129
	/**
130
	 * Constructeur avec argument
130
	 * Constructeur avec argument
131
	 * 
131
	 * 
132
	 * @param im
132
	 * @param im
133
	 */
133
	 */
134
	public PanneauMetadonneesVue(ImageMediateur im) {
134
	public PanneauMetadonneesVue(ImageMediateur im) {
135
		super();
135
		super();
136
 
136
 
137
		// on associe le médiateur
137
		// on associe le médiateur
138
		imediateur = im;
138
		imediateur = im;
139
 
139
 
140
		// on crée et dispose les panneaux et les champs
140
		// on crée et dispose les panneaux et les champs
141
		panneauExifGrid = new Panel("Exif");
141
		panneauExifGrid = new Panel("Exif");
142
		panneauIptcGrid = new Panel("Iptc");
142
		panneauIptcGrid = new Panel("Iptc");
143
		panneauInfoGrid = new Panel("Infos");
143
		panneauInfoGrid = new Panel("Infos");
144
		panneauMotsCles = new ImageMotsClesVue(im);
144
		panneauMotsCles = new ImageMotsClesVue(im);
145
		panneauMotsCles.setHeight("50%");
145
		panneauMotsCles.setHeight("50%");
146
 
146
 
147
		Panel sousPanneauInfosGenerales = new Panel("Infos Générales");
147
		Panel sousPanneauInfosGenerales = new Panel("Infos Générales");
148
		sousPanneauInfosGenerales.setLayout(new VerticalLayout());
148
		sousPanneauInfosGenerales.setLayout(new VerticalLayout());
149
		sousPanneauInfosGenerales.setBorder(false);
149
		sousPanneauInfosGenerales.setBorder(false);
150
		sousPanneauInfosGenerales.setHeight(200);
150
		sousPanneauInfosGenerales.setHeight(200);
151
		sousPanneauInfosGenerales.setAutoWidth(true);
151
		sousPanneauInfosGenerales.setAutoWidth(true);
152
		sousPanneauInfosGenerales.setMargins(5);
152
		sousPanneauInfosGenerales.setMargins(5);
153
		sousPanneauInfosGenerales.setPaddings(5);
153
		sousPanneauInfosGenerales.setPaddings(5);
154
		sousPanneauInfosGenerales.setCollapsible(true);
154
		sousPanneauInfosGenerales.setCollapsible(true);
155
 
155
 
156
		Label labelComm = new Label("Commentaires :");
156
		Label labelComm = new Label("Commentaires :");
157
		labelComm.setHeight("20px");
157
		labelComm.setHeight("20px");
158
		commentaireGeneral = new TextArea();
158
		commentaireGeneral = new TextArea();
159
		commentaireGeneral.setWidth("90%");
159
		commentaireGeneral.setWidth("90%");
160
		Label labelDate = new Label("Date :");
160
		Label labelDate = new Label("Date :");
161
		Label labelNote = new Label("Note :");
161
		Label labelNote = new Label("Note :");
162
 
162
 
163
		panneauMotsCles.setBorder(false);
163
		panneauMotsCles.setBorder(false);
164
 
164
 
165
		labelDate.setHeight("20px");
165
		labelDate.setHeight("20px");
166
 
166
 
167
		dateImage = new DateField();
167
		dateImage = new DateField();
168
		dateImage.setAutoWidth(true);
168
		dateImage.setAutoWidth(true);
169
		dateImage.setFormat("d/m/Y");
169
		dateImage.setFormat("d/m/Y");
170
 
170
 
171
		validerInfo = new Button("OK");
171
		validerInfo = new Button("OK");
172
 
172
 
173
		noteVue = new BarreNotationVue(im, 5);
173
		noteVue = new BarreNotationVue(im, 5);
174
		panneauMiniListeObservation = new Panel("Observations") ;
174
		panneauMiniListeObservation = new Panel("Observations") ;
175
		
175
		
176
		if(!Ext.isIE()) {
176
		if(!Ext.isIE()) {
177
			panneauMiniListeObservation.setLayout(new RowLayout());
177
			panneauMiniListeObservation.setLayout(new RowLayout());
178
		}
178
		}
179
		
179
		
180
		miniListeObservation = new MiniListeObservationVue(im);
180
		miniListeObservation = new MiniListeObservationVue(im);
181
		rechercheFiltreTaxonVue = new RechercheFiltreTaxonVue(im);
181
		rechercheFiltreTaxonVue = new RechercheFiltreTaxonVue(im);
182
		rechercheFiltreTaxonVue.setTitle("Recherche dans les observations");
182
		rechercheFiltreTaxonVue.setTitle("Recherche dans les observations");
183
		if(Ext.isIE()) {
183
		if(Ext.isIE()) {
184
			panneauMiniListeObservation.add(rechercheFiltreTaxonVue);
184
			panneauMiniListeObservation.add(rechercheFiltreTaxonVue);
185
			rechercheFiltreTaxonVue.setHeight(90);
185
			rechercheFiltreTaxonVue.setHeight(90);
186
		} else {
186
		} else {
187
			panneauMiniListeObservation.add(rechercheFiltreTaxonVue, new RowLayoutData(90));
187
			panneauMiniListeObservation.add(rechercheFiltreTaxonVue, new RowLayoutData(90));
188
		}
188
		}
189
		rechercheFiltreTaxonVue.setWidth("100%") ;
189
		rechercheFiltreTaxonVue.setWidth("100%") ;
190
		rechercheFiltreTaxonVue.setBorder(false);
190
		rechercheFiltreTaxonVue.setBorder(false);
191
	
191
	
192
		if(Ext.isIE()) {
192
		if(Ext.isIE()) {
193
			panneauMiniListeObservation.add(miniListeObservation, new RowLayoutData(400)) ;
193
			panneauMiniListeObservation.add(miniListeObservation, new RowLayoutData(400)) ;
194
		} else {
194
		} else {
195
			panneauMiniListeObservation.add(miniListeObservation, new RowLayoutData()) ;
195
			panneauMiniListeObservation.add(miniListeObservation, new RowLayoutData()) ;
196
		}
196
		}
197
 
197
 
198
		sousPanneauInfosGenerales.add(labelComm);
198
		sousPanneauInfosGenerales.add(labelComm);
199
		sousPanneauInfosGenerales.add(commentaireGeneral);
199
		sousPanneauInfosGenerales.add(commentaireGeneral);
200
		sousPanneauInfosGenerales.add(labelDate);
200
		sousPanneauInfosGenerales.add(labelDate);
201
		sousPanneauInfosGenerales.add(dateImage);
201
		sousPanneauInfosGenerales.add(dateImage);
202
		sousPanneauInfosGenerales.add(labelNote);
202
		sousPanneauInfosGenerales.add(labelNote);
203
		sousPanneauInfosGenerales.add(noteVue);
203
		sousPanneauInfosGenerales.add(noteVue);
204
		sousPanneauInfosGenerales.add(validerInfo);
204
		sousPanneauInfosGenerales.add(validerInfo);
205
		sousPanneauInfosGenerales.setAutoHeight(true);
205
		sousPanneauInfosGenerales.setAutoHeight(true);
206
		panneauMotsCles.setAutoHeight(true);
206
		panneauMotsCles.setAutoHeight(true);
207
 
207
 
208
		panneauInfoGrid.setBorder(false);
208
		panneauInfoGrid.setBorder(false);
209
		panneauInfoGrid.setAutoHeight(true);
209
		panneauInfoGrid.setAutoHeight(true);
210
		
210
		
211
		panneauExifGrid.setAutoScroll(true);
211
		panneauExifGrid.setAutoScroll(true);
212
		panneauIptcGrid.setAutoScroll(true);
212
		panneauIptcGrid.setAutoScroll(true);
213
 
213
 
214
		panneauInfoGrid.add(sousPanneauInfosGenerales);
214
		panneauInfoGrid.add(sousPanneauInfosGenerales);
215
		panneauInfoGrid.add(panneauMotsCles);
215
		panneauInfoGrid.add(panneauMotsCles);
216
		
216
		
217
 
217
 
218
		this.add(panneauMiniListeObservation) ;
218
		this.add(panneauMiniListeObservation) ;
219
		this.add(panneauInfoGrid);
219
		this.add(panneauInfoGrid);
220
		this.add(panneauExifGrid);
220
		this.add(panneauExifGrid);
221
		this.add(panneauIptcGrid);
221
		this.add(panneauIptcGrid);
222
 
222
 
223
		gViewExif = new GridView();
223
		gViewExif = new GridView();
224
		gViewExif.setForceFit(true);
224
		gViewExif.setForceFit(true);
225
 
225
 
226
		ExifGrid = new PropertyGridPanel();
226
		ExifGrid = new PropertyGridPanel();
227
		ExifGrid.setId("meta_exif");
227
		ExifGrid.setId("meta_exif");
228
		ExifGrid.setView(gViewExif);
228
		ExifGrid.setView(gViewExif);
229
		ExifGrid.setNameText("Métadonnées Exif");
229
		ExifGrid.setNameText("Métadonnées Exif");
230
		ExifGrid.setAutoWidth(true);
230
		ExifGrid.setAutoWidth(true);
231
		ExifGrid.setHeight(500);
231
		ExifGrid.setHeight(500);
232
		ExifGrid.setSorted(false);
232
		ExifGrid.setSorted(false);
233
		ExifGrid.setAutoScroll(true);
233
		ExifGrid.setAutoScroll(true);
234
 
234
 
235
		gViewIptc = new GridView();
235
		gViewIptc = new GridView();
236
		gViewIptc.setForceFit(true);
236
		gViewIptc.setForceFit(true);
237
 
237
 
238
		IptcGrid = new PropertyGridPanel();
238
		IptcGrid = new PropertyGridPanel();
239
		IptcGrid.setId("meta_iptc");
239
		IptcGrid.setId("meta_iptc");
240
		IptcGrid.setView(gViewIptc);
240
		IptcGrid.setView(gViewIptc);
241
 
241
 
242
		IptcGrid.setNameText("Métadonnées IPTC");
242
		IptcGrid.setNameText("Métadonnées IPTC");
243
		IptcGrid.setAutoWidth(true);
243
		IptcGrid.setAutoWidth(true);
244
		IptcGrid.setHeight(500);
244
		IptcGrid.setHeight(500);
245
		IptcGrid.setSorted(false);
245
		IptcGrid.setSorted(false);
246
		IptcGrid.setAutoScroll(true);
246
		IptcGrid.setAutoScroll(true);
247
 
247
 
248
		panneauExifGrid.add(ExifGrid);
248
		panneauExifGrid.add(ExifGrid);
249
		panneauIptcGrid.add(IptcGrid);
249
		panneauIptcGrid.add(IptcGrid);
250
 
250
 
251
		// on ajoute les listeners
251
		// on ajoute les listeners
252
		ajouterListeners();
252
		ajouterListeners();
253
 
253
 
254
		// on effectue le rendu
254
		// on effectue le rendu
255
		//this.doLayout(true);
255
		//this.doLayout(true);
256
 
256
 
257
	}
257
	}
258
 
258
 
259
	private void ajouterListeners() {
259
	private void ajouterListeners() {
260
		// on ajoute un écouteur
260
		// on ajoute un écouteur
261
		validerInfo.addListener(new ButtonListenerAdapter() {
261
		validerInfo.addListener(new ButtonListenerAdapter() {
262
 
262
 
263
			// gestion du clic
263
			// gestion du clic
-
 
264
 
264
 
265
			@Override
265
			public void onClick(Button button, EventObject e) {
266
			public void onClick(Button button, EventObject e) {
266
 
267
 
267
				button.focus();
268
				button.focus();
268
				// lors du clic sur le bouton valider on met à jour les
269
				// lors du clic sur le bouton valider on met à jour les
269
				// commentaires et la date
270
				// commentaires et la date
270
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(),
271
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(),
271
						dateImage.getRawValue(), noteVue.getNote());
272
						dateImage.getRawValue(), noteVue.getNote());
272
 
273
 
273
			}
274
			}
274
		});
275
		});
275
 
276
 
276
		// gestion des clics dans la grille
277
		// gestion des clics dans la grille
277
		ExifGrid.addGridCellListener(new GridCellListenerAdapter() {
278
		ExifGrid.addGridCellListener(new GridCellListenerAdapter() {
278
 
279
 
279
			// lors d'un clic d'une cellule
280
			// lors d'un clic d'une cellule
-
 
281
 
280
 
282
			@Override
281
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
283
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
282
					EventObject e) {
284
					EventObject e) {
283
 
285
 
284
				// on empeche l'édition
286
				// on empeche l'édition
285
				e.stopEvent();
287
				e.stopEvent();
286
				ExifGrid.stopEditing();
288
				ExifGrid.stopEditing();
287
 
289
 
288
			}
290
			}
289
 
291
 
290
			// lors du double clic sur une cellule
292
			// lors du double clic sur une cellule
-
 
293
 
291
 
294
			@Override
292
			public void onCellDblClick(GridPanel grid, int rowIndex,
295
			public void onCellDblClick(GridPanel grid, int rowIndex,
293
					int colIndex, EventObject e) {
296
					int colIndex, EventObject e) {
294
 
297
 
295
				// on empêche l'édition
298
				// on empêche l'édition
296
				e.stopEvent();
299
				e.stopEvent();
297
				ExifGrid.stopEditing();
300
				ExifGrid.stopEditing();
298
 
301
 
299
			}
302
			}
300
 
303
 
301
		});
304
		});
302
 
305
 
303
		IptcGrid.addGridCellListener(new GridCellListenerAdapter() {
306
		IptcGrid.addGridCellListener(new GridCellListenerAdapter() {
304
 
307
 
305
			// lors d'un clic d'une cellule
308
			// lors d'un clic d'une cellule
-
 
309
 
306
 
310
			@Override
307
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
311
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
308
					EventObject e) {
312
					EventObject e) {
309
				// on empeche l'édition
313
				// on empeche l'édition
310
				e.stopEvent();
314
				e.stopEvent();
311
				ExifGrid.stopEditing();
315
				ExifGrid.stopEditing();
312
 
316
 
313
			}
317
			}
314
 
318
 
315
			// lors d'un double clic d'une cellule
319
			// lors d'un double clic d'une cellule
-
 
320
			@Override
316
			public void onCellDblClick(GridPanel grid, int rowIndex,
321
			public void onCellDblClick(GridPanel grid, int rowIndex,
317
					int colIndex, EventObject e) {
322
					int colIndex, EventObject e) {
318
				// on empeche l'édition
323
				// on empeche l'édition
319
				e.stopEvent();
324
				e.stopEvent();
320
				ExifGrid.stopEditing();
325
				ExifGrid.stopEditing();
321
 
326
 
322
			}
327
			}
323
 
328
 
324
		});
329
		});
325
		
330
		
326
		panneauMiniListeObservation.addListener(new ContainerListenerAdapter() {
331
		panneauMiniListeObservation.addListener(new ContainerListenerAdapter() {
-
 
332
								
327
								
333
			@Override
328
			public void onResize(BoxComponent component, int adjWidth, int adjHeight,
334
			public void onResize(BoxComponent component, int adjWidth, int adjHeight,
329
					int rawWidth, int rawHeight) {
335
					int rawWidth, int rawHeight) {
330
									
336
									
331
				timerRedimensionnement = new Timer() {
337
				timerRedimensionnement = new Timer() {
-
 
338
					@Override
332
					public void run() {
339
					public void run() {
333
						
340
						
334
						int taille = 500;
341
						int taille = 500;
335
						
342
						
336
						if(Window.getClientHeight() > 800 ) {
343
						if(Window.getClientHeight() > 800 ) {
337
							taille = Window.getClientHeight() - 226;
344
							taille = Window.getClientHeight() - 226;
338
						}
345
						}
339
						panneauMiniListeObservation.setHeight(taille);
346
						panneauMiniListeObservation.setHeight(taille);
340
					}
347
					}
341
				};
348
				};
342
				
349
				
343
				timerRedimensionnement.schedule(300);
350
				timerRedimensionnement.schedule(300);
344
			}
351
			}
345
		});
352
		});
346
		
353
		
347
		panneauExifGrid.addListener(new ContainerListenerAdapter() {
354
		panneauExifGrid.addListener(new ContainerListenerAdapter() {
-
 
355
			
348
			
356
			@Override
349
			public void onResize(BoxComponent component, int adjWidth, int adjHeight,
357
			public void onResize(BoxComponent component, int adjWidth, int adjHeight,
350
					int rawWidth, int rawHeight) {
358
					int rawWidth, int rawHeight) {
351
									
359
									
352
				timerRedimensionnement = new Timer() {
360
				timerRedimensionnement = new Timer() {
-
 
361
					@Override
353
					public void run() {
362
					public void run() {
354
						
363
						
355
						int taille = 500;
364
						int taille = 500;
356
						
365
						
357
						taille = Window.getClientHeight() - 150;
366
						taille = Window.getClientHeight() - 150;
358
						
367
						
359
						ExifGrid.setHeight(taille);
368
						ExifGrid.setHeight(taille);
360
						panneauExifGrid.setHeight(taille);
369
						panneauExifGrid.setHeight(taille);
361
					}
370
					}
362
				};
371
				};
363
				
372
				
364
				timerRedimensionnement.schedule(300);
373
				timerRedimensionnement.schedule(300);
365
			}
374
			}
366
		});
375
		});
367
		
376
		
368
		panneauExifGrid.addListener(new ContainerListenerAdapter() {
377
		panneauExifGrid.addListener(new ContainerListenerAdapter() {
-
 
378
			
369
			
379
			@Override
370
			public void onResize(BoxComponent component, int adjWidth, int adjHeight,
380
			public void onResize(BoxComponent component, int adjWidth, int adjHeight,
371
					int rawWidth, int rawHeight) {
381
					int rawWidth, int rawHeight) {
372
									
382
									
373
				timerRedimensionnement = new Timer() {
383
				timerRedimensionnement = new Timer() {
-
 
384
					@Override
374
					public void run() {
385
					public void run() {
375
						
386
						
376
						int taille = 500;
387
						int taille = 500;
377
						
388
						
378
						taille = Window.getClientHeight() - 150;
389
						taille = Window.getClientHeight() - 150;
379
						
390
						
380
						IptcGrid.setHeight(taille);
391
						IptcGrid.setHeight(taille);
381
						panneauIptcGrid.setHeight(taille);
392
						panneauIptcGrid.setHeight(taille);
382
					}
393
					}
383
				};
394
				};
384
				
395
				
385
				timerRedimensionnement.schedule(300);
396
				timerRedimensionnement.schedule(300);
386
			}
397
			}
387
		});
398
		});
388
	}
399
	}
389
 
400
 
390
	/**
401
	/**
391
	 * Desactive visuellement ce panneau
402
	 * Desactive visuellement ce panneau
392
	 */
403
	 */
393
	public void desactiverPanneau() {
404
	public void desactiverPanneau() {
394
		panneauInfoGrid.setDisabled(true);
405
		panneauInfoGrid.setDisabled(true);
395
		panneauExifGrid.setDisabled(true);
406
		panneauExifGrid.setDisabled(true);
396
		panneauIptcGrid.setDisabled(true);
407
		panneauIptcGrid.setDisabled(true);
397
	}
408
	}
398
 
409
 
399
	/**
410
	/**
400
	 * Active visuellement ce panneau
411
	 * Active visuellement ce panneau
401
	 */
412
	 */
402
	public void activerPanneau() {
413
	public void activerPanneau() {
403
		panneauInfoGrid.setDisabled(false);
414
		panneauInfoGrid.setDisabled(false);
404
		panneauExifGrid.setDisabled(false);
415
		panneauExifGrid.setDisabled(false);
405
		panneauIptcGrid.setDisabled(false);
416
		panneauIptcGrid.setDisabled(false);
406
	}
417
	}
407
 
418
 
408
	/**
419
	/**
409
	 * Accesseur pour le médiateur
420
	 * Accesseur pour le médiateur
410
	 * 
421
	 * 
411
	 * @return le médiateur associé à la vue
422
	 * @return le médiateur associé à la vue
412
	 */
423
	 */
413
	public ImageMediateur getIMediateur() {
424
	public ImageMediateur getIMediateur() {
414
		return imediateur;
425
		return imediateur;
415
	}
426
	}
416
 
427
 
417
	/**
428
	/**
418
	 * Méthode héritée de l'interface rafraichissable
429
	 * Méthode héritée de l'interface rafraichissable
419
	 * 
430
	 * 
420
	 * @param nouvelleDonnees
431
	 * @param nouvelleDonnees
421
	 *            les nouvelles données
432
	 *            les nouvelles données
422
	 * @param repandreRafraichissement
433
	 * @param repandreRafraichissement
423
	 *            le booleen de notification de mise à jour
434
	 *            le booleen de notification de mise à jour
424
	 */
435
	 */
-
 
436
	@Override
425
	public void rafraichir(Object nouvelleDonnees,
437
	public void rafraichir(Object nouvelleDonnees,
426
			boolean repandreRafraichissement) {
438
			boolean repandreRafraichissement) {
427
 
439
 
428
		// si on reçoit un tableau d'objets
440
		// si on reçoit un tableau d'objets
429
		if (nouvelleDonnees instanceof Object[]) {
441
		if (nouvelleDonnees instanceof Object[]) {
430
			
442
			
431
			final Object ressourceObject = nouvelleDonnees;
443
			final Object ressourceObject = nouvelleDonnees;
432
			
444
			
433
			if(!this.isRendered()) {
445
			if(!this.isRendered()) {
434
				addListener(new PanelListenerAdapter() {
446
				addListener(new PanelListenerAdapter() {
-
 
447
										
435
										
448
					@Override
436
					public void onRender(Component component) {
449
					public void onRender(Component component) {
437
						rafraichir(ressourceObject, false);
450
						rafraichir(ressourceObject, false);
438
					}
451
					}
439
				});
452
				});
440
				
453
				
441
				return ;
454
				return ;
442
			}
455
			}
443
			
456
			
444
			// extrait infos, exifs et iptc
457
			// extrait infos, exifs et iptc
445
			Object meta[] = (Object[]) nouvelleDonnees;
458
			Object meta[] = (Object[]) nouvelleDonnees;
446
			String[][] exif = (String[][]) meta[0];
459
			String[][] exif = (String[][]) meta[0];
447
			String[][] iptc = (String[][]) meta[1];
460
			String[][] iptc = (String[][]) meta[1];
448
			final String[][] gen = (String[][]) meta[2];
461
			final String[][] gen = (String[][]) meta[2];
449
 
462
 
450
			NameValuePair[] exifSource = new NameValuePair[exif.length];
463
			NameValuePair[] exifSource = new NameValuePair[exif.length];
451
			NameValuePair[] iptcSource = new NameValuePair[iptc.length];
464
			NameValuePair[] iptcSource = new NameValuePair[iptc.length];
452
 
465
 
453
			int maxLength;
466
			int maxLength;
454
			if (exif.length <= iptc.length) {
467
			if (exif.length <= iptc.length) {
455
				maxLength = iptc.length;
468
				maxLength = iptc.length;
456
			} else {
469
			} else {
457
				maxLength = exif.length;
470
				maxLength = exif.length;
458
			}
471
			}
459
 
472
 
460
			for (int i = 0; i < maxLength; i++) {
473
			for (int i = 0; i < maxLength; i++) {
461
				if (i < exif.length && !exif[i][0].equals("null")) {
474
				if (i < exif.length && !exif[i][0].equals("null")) {
462
					exifSource[i] = new NameValuePair(exif[i][0], exif[i][1]);
475
					exifSource[i] = new NameValuePair(exif[i][0], exif[i][1]);
463
				}
476
				}
464
 
477
 
465
				if (i < iptc.length && !iptc[i][0].equals("null")) {
478
				if (i < iptc.length && !iptc[i][0].equals("null")) {
466
					iptcSource[i] = new NameValuePair(iptc[i][0], iptc[i][1]);
479
					iptcSource[i] = new NameValuePair(iptc[i][0], iptc[i][1]);
467
				}
480
				}
468
			}
481
			}
469
 
482
 
470
			// on met à jour les champs avec la bonne valeur
483
			// on met à jour les champs avec la bonne valeur
471
			commentaireGeneral.setValue(gen[0][1]);
484
			commentaireGeneral.setValue(gen[0][1]);
472
			dateImage.setValue(gen[1][1]);
485
			dateImage.setValue(gen[1][1]);
473
	
486
	
474
			// et on met à jour les données pour l'affichage
487
			// et on met à jour les données pour l'affichage
475
			ExifGrid.setSource(exifSource);
488
			ExifGrid.setSource(exifSource);
476
			IptcGrid.setSource(iptcSource);
489
			IptcGrid.setSource(iptcSource);
477
 
490
 
478
		}
491
		}
479
	}
492
	}
480
 
493
 
481
	/**
494
	/**
482
	 * Accesseur pour le panneau des mots clés
495
	 * Accesseur pour le panneau des mots clés
483
	 * 
496
	 * 
484
	 * @return the panneauMotsCles
497
	 * @return the panneauMotsCles
485
	 */
498
	 */
486
	public ImageMotsClesVue getPanneauMotsCles() {
499
	public ImageMotsClesVue getPanneauMotsCles() {
487
		return panneauMotsCles;
500
		return panneauMotsCles;
488
	}
501
	}
489
 
502
 
490
	public BarreNotationVue getNoteVue() {
503
	public BarreNotationVue getNoteVue() {
491
		return noteVue;
504
		return noteVue;
492
	}
505
	}
493
	
506
	
494
	public MiniListeObservationVue getMiniListeObservation()
507
	public MiniListeObservationVue getMiniListeObservation()
495
	{
508
	{
496
		return miniListeObservation ;
509
		return miniListeObservation ;
497
	}
510
	}
498
	
511
	
499
	public RechercheFiltreTaxonVue getRechercheFiltreTaxonVue()
512
	public RechercheFiltreTaxonVue getRechercheFiltreTaxonVue()
500
	{
513
	{
501
		return rechercheFiltreTaxonVue ;
514
		return rechercheFiltreTaxonVue ;
502
	}
515
	}
503
 
516
 
504
	public void redimensionner() {
517
	public void redimensionner() {
505
		
518
		
506
		if(panneauMiniListeObservation.isCreated() && panneauMiniListeObservation.isVisible()) {
519
		if(panneauMiniListeObservation.isCreated() && panneauMiniListeObservation.isVisible()) {
507
			panneauMiniListeObservation.doLayout();
520
			panneauMiniListeObservation.doLayout();
508
			//panneauMiniListeObservation.show();
521
			//panneauMiniListeObservation.show();
509
			miniListeObservation.redimensionner();
522
			miniListeObservation.redimensionner();
510
		}
523
		}
511
		
524
		
512
	}
525
	}
513
}
526
}