Subversion Repositories eFlore/Applications.cel

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 5
Line 18... Line 18...
18
import com.gwtext.client.widgets.grid.PropertyGridPanel;
18
import com.gwtext.client.widgets.grid.PropertyGridPanel;
19
import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter;
19
import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter;
20
import com.gwtext.client.widgets.layout.VerticalLayout;
20
import com.gwtext.client.widgets.layout.VerticalLayout;
Line 21... Line 21...
21
 
21
 
22
/**
22
/**
-
 
23
 * Panneau contenant les infos, les métadonnées et l'arbre des mots clés, il
-
 
24
 * implémente l'interface rafraichissable
23
 * Panneau contenant les infos, les métadonnées et l'arbre des mots clés, il implémente l'interface rafraichissable
25
 * 
24
 * @author aurelien
26
 * @author aurelien
25
 *
27
 * 
26
 */
28
 */
Line 27... Line 29...
27
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable {
29
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable {
28
 
30
 
29
	/**
31
	/**
30
	 * Le médiateur associé à la vue
32
	 * Le médiateur associé à la vue
31
	 */
33
	 */
32
	private ImageMediateur imediateur = null ;
34
	private ImageMediateur imediateur = null;
33
	/**
35
	/**
34
	 * Le panneau des Exifs
36
	 * Le panneau des Exifs
35
	 */
37
	 */
36
	private PropertyGridPanel ExifGrid = null ;
38
	private PropertyGridPanel ExifGrid = null;
37
	/**
39
	/**
38
	 * Le panneau des Iptc
40
	 * Le panneau des Iptc
39
	 */
41
	 */
40
	private PropertyGridPanel IptcGrid = null ;
42
	private PropertyGridPanel IptcGrid = null;
41
	
43
 
42
	/**
44
	/**
43
	 * La grille pour le panneau des Exifs
45
	 * La grille pour le panneau des Exifs
44
	 */
46
	 */
45
	private GridView gViewExif = null ;
47
	private GridView gViewExif = null;
46
	/**
48
	/**
47
	 * La grille pour le panneau de Iptc
49
	 * La grille pour le panneau de Iptc
48
	 */
50
	 */
49
	private GridView gViewIptc = null ;
51
	private GridView gViewIptc = null;
50
	
52
 
51
	/**
53
	/**
52
	 * L'onglet des Exifs
54
	 * L'onglet des Exifs
53
	 */
55
	 */
54
	private Panel panneauExifGrid = null; 
56
	private Panel panneauExifGrid = null;
55
	/**
57
	/**
56
	 * L'onglet des Iptc
58
	 * L'onglet des Iptc
57
	 */
59
	 */
58
	private Panel panneauIptcGrid = null ;
60
	private Panel panneauIptcGrid = null;
59
	/**
61
	/**
60
	 * L'onglet des infos
62
	 * L'onglet des infos
61
	 */
63
	 */
62
	private Panel panneauInfoGrid = null ;
64
	private Panel panneauInfoGrid = null;
63
	/**
65
	/**
64
	 * L'onglet des mots clés
66
	 * L'onglet des mots clés
65
	 */
67
	 */
66
	private ArbreMotsClesVue panneauMotsCles = null ;
68
	private ArbreMotsClesVue panneauMotsCles = null;
67
	
69
 
68
	/**
70
	/**
69
	 * Le champ commentaire
71
	 * Le champ commentaire
70
	 */
72
	 */
71
	private TextField commentaireGeneral = null ;
73
	private TextField commentaireGeneral = null;
72
	/**
74
	/**
73
	 * Le champ date
75
	 * Le champ date
-
 
76
	 */
-
 
77
	private DateField dateImage = null;
-
 
78
	
-
 
79
	/**
-
 
80
	 * La mini liste des observations
74
	 */
81
	 */
75
	private DateField dateImage = null ;
82
	private MiniListeObservationVue miniListeObservation = null ;
76
	/**
83
	/**
77
	 * Le bouton de validation
84
	 * Le bouton de validation
78
	 */
85
	 */
79
	Button validerInfo = null ;
86
	Button validerInfo = null;
80
	
87
 
81
	/**
88
	/**
82
	 * Barre de notation
89
	 * Barre de notation
83
	 */
90
	 */
84
	BarreNotationVue noteVue = null ;
91
	BarreNotationVue noteVue = null;
85
	
92
 
86
	/**
93
	/**
87
	 * Booleen d'instanciation
94
	 * Booleen d'instanciation
88
	 */
95
	 */
89
	boolean estInstancie = false ;
96
	boolean estInstancie = false;
90
	
97
 
91
	/**
98
	/**
92
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
99
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
93
	 */
100
	 */
94
	@SuppressWarnings("unused")
-
 
95
	private PanneauMetadonneesVue()
101
	@SuppressWarnings("unused")
96
	{
102
	private PanneauMetadonneesVue() {
97
		super() ;
103
		super();
98
	}
104
	}
99
	
105
 
-
 
106
	/**
100
	/**
107
	 * Constructeur avec argument
101
	 * Constructeur avec argument
108
	 * 
102
	 * @param im
109
	 * @param im
103
	 */
-
 
104
	public PanneauMetadonneesVue(ImageMediateur im)
110
	 */
105
	{
111
	public PanneauMetadonneesVue(ImageMediateur im) {
106
		super() ;
112
		super();
107
		
113
 
108
		// on associe le médiateur
114
		// on associe le médiateur
109
		imediateur = im ;
115
		imediateur = im;
110
		
116
 
111
		// on crée et dispose les panneaux et les champs
117
		// on crée et dispose les panneaux et les champs
112
		panneauExifGrid = new Panel("Exif") ;
118
		panneauExifGrid = new Panel("Exif");
113
		panneauIptcGrid = new Panel("Iptc") ;
119
		panneauIptcGrid = new Panel("Iptc");
114
		panneauInfoGrid = new Panel("info") ;
120
		panneauInfoGrid = new Panel("info");
115
		panneauMotsCles = new ArbreMotsClesVue(im) ;
-
 
116
		panneauMotsCles.setHeight("500px") ;
121
		panneauMotsCles = new ArbreMotsClesVue(im);
117
		
122
		panneauMotsCles.setHeight("500px");
118
		
123
 
119
		Panel sousPanneauInfosGenerales = new Panel("Infos Générales") ;
124
		Panel sousPanneauInfosGenerales = new Panel("Infos Générales");
120
		sousPanneauInfosGenerales.setLayout(new VerticalLayout());
125
		sousPanneauInfosGenerales.setLayout(new VerticalLayout());
121
		sousPanneauInfosGenerales.setBorder(false) ;
126
		sousPanneauInfosGenerales.setBorder(false);
122
		sousPanneauInfosGenerales.setHeight(200);
127
		sousPanneauInfosGenerales.setHeight(200);
123
		sousPanneauInfosGenerales.setAutoWidth(true) ;
128
		sousPanneauInfosGenerales.setAutoWidth(true);
124
		sousPanneauInfosGenerales.setMargins(5) ;
129
		sousPanneauInfosGenerales.setMargins(5);
125
		sousPanneauInfosGenerales.setPaddings(5) ;
130
		sousPanneauInfosGenerales.setPaddings(5);
126
		sousPanneauInfosGenerales.setCollapsible(true) ;
131
		sousPanneauInfosGenerales.setCollapsible(true);
127
		
132
 
128
		Label labelComm = new Label("Commentaires :") ;
133
		Label labelComm = new Label("Commentaires :");
129
		labelComm.setHeight("20px") ;
134
		labelComm.setHeight("20px");
130
		commentaireGeneral = new TextArea() ;
135
		commentaireGeneral = new TextArea();
131
		commentaireGeneral.setWidth("90%") ;
136
		commentaireGeneral.setWidth("90%");
132
		Label labelDate = new Label("Date :") ;
137
		Label labelDate = new Label("Date :");
133
		Label labelNote = new Label("Note :") ;
138
		Label labelNote = new Label("Note :");
134
		
139
 
135
		panneauMotsCles.setBorder(false) ;
140
		panneauMotsCles.setBorder(false);
136
		
141
 
137
		labelDate.setHeight("20px") ;
142
		labelDate.setHeight("20px");
138
		
143
 
139
		dateImage = new DateField() ;
144
		dateImage = new DateField();
140
		dateImage.setAutoWidth(true) ;
145
		dateImage.setAutoWidth(true);
141
		dateImage.setFormat("d/m/Y") ;
146
		dateImage.setFormat("d/m/Y");
142
		
147
 
143
		validerInfo = new Button("OK") ;
148
		validerInfo = new Button("OK");
Line -... Line 149...
-
 
149
 
-
 
150
		noteVue = new BarreNotationVue(im, 5);
144
		
151
		
145
		noteVue = new BarreNotationVue(im, 5) ;
152
		miniListeObservation = new MiniListeObservationVue(im) ;
146
		
153
 
147
		sousPanneauInfosGenerales.add(labelComm) ;
154
		sousPanneauInfosGenerales.add(labelComm);
148
		sousPanneauInfosGenerales.add(commentaireGeneral) ;
155
		sousPanneauInfosGenerales.add(commentaireGeneral);
149
		sousPanneauInfosGenerales.add(labelDate) ;
156
		sousPanneauInfosGenerales.add(labelDate);
150
		sousPanneauInfosGenerales.add(dateImage) ;
157
		sousPanneauInfosGenerales.add(dateImage);
151
		sousPanneauInfosGenerales.add(labelNote) ;
158
		sousPanneauInfosGenerales.add(labelNote);
152
		sousPanneauInfosGenerales.add(noteVue) ;
159
		sousPanneauInfosGenerales.add(noteVue);
153
		sousPanneauInfosGenerales.add(validerInfo) ;
160
		sousPanneauInfosGenerales.add(validerInfo);
154
		sousPanneauInfosGenerales.setAutoHeight(true);
161
		sousPanneauInfosGenerales.setAutoHeight(true);
155
		panneauMotsCles.setAutoHeight(true) ;
162
		panneauMotsCles.setAutoHeight(true);
156
		
-
 
157
		panneauInfoGrid.setBorder(false);
163
 
158
		panneauInfoGrid.setAutoHeight(true);
164
		panneauInfoGrid.setBorder(false);
159
		
165
		panneauInfoGrid.setAutoHeight(true);
160
		
-
 
161
		panneauInfoGrid.add(sousPanneauInfosGenerales) ;
166
 
162
		panneauInfoGrid.add(panneauMotsCles) ;
167
		panneauInfoGrid.add(sousPanneauInfosGenerales);
163
		
168
		panneauInfoGrid.add(panneauMotsCles);
164
		
169
 
-
 
170
		this.add(panneauInfoGrid);
165
		this.add(panneauInfoGrid) ;
171
		this.add(panneauExifGrid);
166
		this.add(panneauExifGrid) ;
172
		this.add(panneauIptcGrid);
167
		this.add(panneauIptcGrid) ;
173
		this.add(miniListeObservation) ;
168
		
174
 
169
		gViewExif = new GridView();
175
		gViewExif = new GridView();
170
		gViewExif.setForceFit(true);
176
		gViewExif.setForceFit(true);
171
		
177
 
172
		ExifGrid = new PropertyGridPanel() ;
178
		ExifGrid = new PropertyGridPanel();
173
		ExifGrid.setId("meta_exif");
179
		ExifGrid.setId("meta_exif");
174
		ExifGrid.setView(gViewExif);
180
		ExifGrid.setView(gViewExif);
175
		ExifGrid.setNameText("Métadonnées Exif");
181
		ExifGrid.setNameText("Métadonnées Exif");
176
		ExifGrid.setAutoWidth(true);
182
		ExifGrid.setAutoWidth(true);
177
		ExifGrid.setAutoHeight(true);
183
		ExifGrid.setAutoHeight(true);
178
		ExifGrid.setSorted(false);
184
		ExifGrid.setSorted(false);
179
		
185
 
180
		gViewIptc = new GridView();
186
		gViewIptc = new GridView();
181
		gViewIptc.setForceFit(true);
187
		gViewIptc.setForceFit(true);
182
		
188
 
183
		IptcGrid = new PropertyGridPanel() ;
189
		IptcGrid = new PropertyGridPanel();
184
		IptcGrid.setId("meta_iptc");
190
		IptcGrid.setId("meta_iptc");
185
		IptcGrid.setView(gViewIptc);
191
		IptcGrid.setView(gViewIptc);
186
		
192
 
187
		IptcGrid.setNameText("Métadonnées IPTC");
193
		IptcGrid.setNameText("Métadonnées IPTC");
188
		IptcGrid.setAutoWidth(true);
-
 
189
		IptcGrid.setAutoHeight(true);
194
		IptcGrid.setAutoWidth(true);
190
		IptcGrid.setSorted(false);
195
		IptcGrid.setAutoHeight(true);
191
		
196
		IptcGrid.setSorted(false);
192
		
197
 
193
		panneauExifGrid.add(ExifGrid);
198
		panneauExifGrid.add(ExifGrid);
194
		panneauIptcGrid.add(IptcGrid);
199
		panneauIptcGrid.add(IptcGrid);
195
		
-
 
196
		// on ajoute les listeners
200
 
197
		ajouterListeners() ;
201
		// on ajoute les listeners
198
		
202
		ajouterListeners();
199
		
203
 
200
		// on effectue le rendu
204
		// on effectue le rendu
201
		this.doLayout(true) ;
205
		this.doLayout(true);
202
		
206
 
203
	}
-
 
204
	
207
	}
205
	private void ajouterListeners()
208
 
Line 206... Line 209...
206
	{
209
	private void ajouterListeners() {
207
		// on ajoute un écouteur
210
		// on ajoute un écouteur
208
		validerInfo.addListener(new ButtonListenerAdapter() {
211
		validerInfo.addListener(new ButtonListenerAdapter() {
209
 
212
 
210
			// gestion du clic
213
			// gestion du clic
211
			
214
 
-
 
215
			public void onClick(Button button, EventObject e) {
212
			public void onClick(Button button, EventObject e) {
216
 
-
 
217
				button.focus();
213
				
218
				// lors du clic sur le bouton valider on met à jour les
214
				button.focus() ;
219
				// commentaires et la date
215
				// lors du clic sur le bouton valider on met à jour les commentaires et la date
220
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(),
216
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue(), noteVue.getNote()) ;
221
						dateImage.getRawValue(), noteVue.getNote());
217
				
222
 
218
			}	
223
			}
Line 219... Line 224...
219
		});
224
		});
220
		
225
 
221
		// gestion des clics dans la grille
226
		// gestion des clics dans la grille
222
		ExifGrid.addGridCellListener(new GridCellListenerAdapter() {
227
		ExifGrid.addGridCellListener(new GridCellListenerAdapter() {
223
 
228
 
224
			// lors d'un clic d'une cellule
229
			// lors d'un clic d'une cellule
225
			
230
 
226
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
231
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
227
					EventObject e) {
232
					EventObject e) {
228
				
233
 
Line 229... Line 234...
229
				// on empeche l'édition
234
				// on empeche l'édition
230
				e.stopEvent() ;
235
				e.stopEvent();
231
				ExifGrid.stopEditing() ;
236
				ExifGrid.stopEditing();
232
				
237
 
233
			}
238
			}
234
 
239
 
235
			// lors du double clic sur une cellule
240
			// lors du double clic sur une cellule
236
			
241
 
237
			public void onCellDblClick(GridPanel grid, int rowIndex,
242
			public void onCellDblClick(GridPanel grid, int rowIndex,
238
					int colIndex, EventObject e) {
243
					int colIndex, EventObject e) {
239
				
244
 
240
				// on empêche l'édition
245
				// on empêche l'édition
241
				e.stopEvent() ;
246
				e.stopEvent();
242
				ExifGrid.stopEditing() ;
247
				ExifGrid.stopEditing();
Line 243... Line 248...
243
				
248
 
244
			}
249
			}
245
			
250
 
246
		}) ;
251
		});
247
		
252
 
248
		IptcGrid.addGridCellListener(new GridCellListenerAdapter() {
253
		IptcGrid.addGridCellListener(new GridCellListenerAdapter() {
249
 
254
 
250
			// lors d'un clic d'une cellule
255
			// lors d'un clic d'une cellule
251
			
256
 
Line 252... Line 257...
252
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
257
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
253
					EventObject e) {
258
					EventObject e) {
254
				// on empeche l'édition
259
				// on empeche l'édition
255
				e.stopEvent() ;
260
				e.stopEvent();
256
				ExifGrid.stopEditing() ;
261
				ExifGrid.stopEditing();
257
				
262
 
258
			}
263
			}
259
 
264
 
260
			// lors d'un double clic d'une cellule
265
			// lors d'un double clic d'une cellule
261
			
266
 
262
			public void onCellDblClick(GridPanel grid, int rowIndex,
267
			public void onCellDblClick(GridPanel grid, int rowIndex,
263
					int colIndex, EventObject e) {
268
					int colIndex, EventObject e) {
264
				// on empeche l'édition
269
				// on empeche l'édition
265
				e.stopEvent() ;
270
				e.stopEvent();
266
				ExifGrid.stopEditing() ;
271
				ExifGrid.stopEditing();
267
				
272
 
268
			}
273
			}
269
			
-
 
270
		}) ;
274
 
271
	}
275
		});
272
	
276
	}
273
	/**
277
 
274
	 * Desactive visuellement ce panneau
278
	/**
275
	 */
279
	 * Desactive visuellement ce panneau
276
	public void desactiverPanneau()
280
	 */
277
	{
-
 
278
		this.setDisabled(true) ;
281
	public void desactiverPanneau() {
279
	}
282
		this.setDisabled(true);
280
	
283
	}
281
	/**
284
 
282
	 * Active visuellement ce panneau
285
	/**
-
 
286
	 * Active visuellement ce panneau
283
	 */
287
	 */
284
	public void activerPanneau()
288
	public void activerPanneau() {
285
	{
289
		this.setDisabled(false);
286
		this.setDisabled(false) ;
-
 
287
	}
290
	}
288
	
291
 
289
	/**
292
	/**
290
	 * Accesseur pour le médiateur
293
	 * Accesseur pour le médiateur
291
	 * @return le médiateur associé à la vue
294
	 * 
-
 
295
	 * @return le médiateur associé à la vue
-
 
296
	 */
292
	 */
297
	public ImageMediateur getIMediateur() {
-
 
298
		return imediateur;
293
	public ImageMediateur getIMediateur()
299
	}
294
	{
300
 
295
		return imediateur ;
301
	/**
-
 
302
	 * Méthode héritée de l'interface rafraichissable
296
	}
303
	 * 
297
	
304
	 * @param nouvelleDonnees
298
	/**
305
	 *            les nouvelles données
299
	 * Méthode héritée de l'interface rafraichissable
-
 
300
	 * @param nouvelleDonnees les nouvelles données
306
	 * @param repandreRafraichissement
301
	 * @param repandreRafraichissement le booleen de notification de mise à jour
307
	 *            le booleen de notification de mise à jour
302
	 */
308
	 */
303
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
309
	public void rafraichir(Object nouvelleDonnees,
304
		
310
			boolean repandreRafraichissement) {
305
		// si on reçoit un tableau d'objets
311
 
306
		if(nouvelleDonnees instanceof Object[])
312
		// si on reçoit un tableau d'objets
307
		{
313
		if (nouvelleDonnees instanceof Object[]) {
308
			// extrait infos, exifs et iptc
-
 
309
			Object meta[] = (Object[])nouvelleDonnees ;
314
			// extrait infos, exifs et iptc
310
			String[][] exif = (String[][])meta[0] ;
315
			Object meta[] = (Object[]) nouvelleDonnees;
311
			String[][] iptc = (String[][])meta[1] ;
316
			String[][] exif = (String[][]) meta[0];
312
			String[][] gen = (String[][])meta[2] ;
-
 
313
			
317
			String[][] iptc = (String[][]) meta[1];
314
			NameValuePair[] exifSource = new NameValuePair[exif.length] ;
-
 
315
			NameValuePair[] iptcSource = new NameValuePair[iptc.length] ;
318
			String[][] gen = (String[][]) meta[2];
316
			
-
 
317
			
319
 
318
			int maxLength ;
320
			NameValuePair[] exifSource = new NameValuePair[exif.length];
319
			if(exif.length <= iptc.length)
321
			NameValuePair[] iptcSource = new NameValuePair[iptc.length];
320
			{
322
 
321
				maxLength = iptc.length ;
-
 
322
			}
323
			int maxLength;
323
			else
-
 
324
			{
324
			if (exif.length <= iptc.length) {
325
				maxLength = exif.length ;
325
				maxLength = iptc.length;
326
			}
326
			} else {
327
			
327
				maxLength = exif.length;
328
			for(int i = 0; i < maxLength ; i++)
-
 
329
			{
328
			}
330
				if(i < exif.length && !exif[i][0].equals("null"))
329
 
331
				{
330
			for (int i = 0; i < maxLength; i++) {
332
					exifSource[i] = new NameValuePair(exif[i][0],exif[i][1]) ;
331
				if (i < exif.length && !exif[i][0].equals("null")) {
333
				}
332
					exifSource[i] = new NameValuePair(exif[i][0], exif[i][1]);
334
				
333
				}
335
				if(i < iptc.length && !iptc[i][0].equals("null"))
334
 
336
				{
335
				if (i < iptc.length && !iptc[i][0].equals("null")) {
337
					iptcSource[i] = new NameValuePair(iptc[i][0],iptc[i][1]) ;
336
					iptcSource[i] = new NameValuePair(iptc[i][0], iptc[i][1]);
338
				}
337
				}
339
			}
338
			}
Line 340... Line 339...
340
			
339
 
341
			// on met à jour les champs avec la bonne valeur
340
			// on met à jour les champs avec la bonne valeur
Line 342... Line 341...
342
			commentaireGeneral.setValue(gen[0][1]) ;		
341
			commentaireGeneral.setValue(gen[0][1]);
343
			dateImage.setRawValue(gen[1][1]) ;
342
			dateImage.setRawValue(gen[1][1]);
-
 
343
 
344
			
344
			// et on met à jour les données pour l'affichage
345
			// et on met à jour les données pour l'affichage
345
			ExifGrid.setSource(exifSource);
346
			ExifGrid.setSource(exifSource);
346
			IptcGrid.setSource(iptcSource);
347
			IptcGrid.setSource(iptcSource);
347
 
348
 
348
		}
349
		}	
349
	}
350
	}
350
 
351
 
351
	/**
-
 
352
	 * Accesseur pour le panneau des mots clés
-
 
353
	 * 
-
 
354
	 * @return the panneauMotsCles
-
 
355
	 */
-
 
356
	public ArbreMotsClesVue getPanneauMotsCles() {
352
	/**
357
		return panneauMotsCles;
353
	 * Accesseur pour le panneau des mots clés
358
	}