Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 208 Rev 401
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.ListePaginable;
4
import org.tela_botanica.client.interfaces.ListePaginable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.VueListable;
6
import org.tela_botanica.client.interfaces.VueListable;
7
import org.tela_botanica.client.vues.BarrePaginationVue;
7
import org.tela_botanica.client.vues.BarrePaginationVue;
-
 
8
 
8
 
9
import com.google.gwt.core.client.GWT;
9
import com.gwtext.client.core.EventObject;
10
import com.gwtext.client.core.EventObject;
10
import com.gwtext.client.data.FieldDef;
11
import com.gwtext.client.data.FieldDef;
11
import com.gwtext.client.data.IntegerFieldDef;
12
import com.gwtext.client.data.IntegerFieldDef;
12
import com.gwtext.client.data.Record;
13
import com.gwtext.client.data.Record;
13
import com.gwtext.client.data.RecordDef;
14
import com.gwtext.client.data.RecordDef;
14
import com.gwtext.client.data.Store;
15
import com.gwtext.client.data.Store;
15
import com.gwtext.client.data.StringFieldDef;
16
import com.gwtext.client.data.StringFieldDef;
16
import com.gwtext.client.dd.DragData;
17
import com.gwtext.client.dd.DragData;
17
import com.gwtext.client.dd.DragSource;
18
import com.gwtext.client.dd.DragSource;
18
import com.gwtext.client.dd.DropTarget;
19
import com.gwtext.client.dd.DropTarget;
19
import com.gwtext.client.dd.DropTargetConfig;
20
import com.gwtext.client.dd.DropTargetConfig;
20
import com.gwtext.client.widgets.Component;
21
import com.gwtext.client.widgets.Component;
21
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
22
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
22
import com.gwtext.client.widgets.grid.CellMetadata;
23
import com.gwtext.client.widgets.grid.CellMetadata;
23
import com.gwtext.client.widgets.grid.ColumnConfig;
24
import com.gwtext.client.widgets.grid.ColumnConfig;
24
import com.gwtext.client.widgets.grid.ColumnModel;
25
import com.gwtext.client.widgets.grid.ColumnModel;
25
import com.gwtext.client.widgets.grid.GridDragData;
26
import com.gwtext.client.widgets.grid.GridDragData;
26
import com.gwtext.client.widgets.grid.GridPanel;
27
import com.gwtext.client.widgets.grid.GridPanel;
27
import com.gwtext.client.widgets.grid.Renderer;
28
import com.gwtext.client.widgets.grid.Renderer;
28
import com.gwtext.client.widgets.grid.RowSelectionModel;
29
import com.gwtext.client.widgets.grid.RowSelectionModel;
29
import com.gwtext.client.widgets.grid.event.GridRowListener;
30
import com.gwtext.client.widgets.grid.event.GridRowListener;
30
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
31
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
31
 
32
 
32
/**
33
/**
33
 * Liste d'image composée de miniatures et d'information sur l'image, implémente
34
 * Liste d'image composée de miniatures et d'information sur l'image, implémente
34
 * l'interface rafraichissable et l'interface vueListable
35
 * l'interface rafraichissable et l'interface vueListable
35
 * 
36
 * 
36
 * @author aurelien
37
 * @author aurelien
37
 */
38
 */
38
public class ListeImageVue extends GridPanel implements Rafraichissable,
39
public class ListeImageVue extends GridPanel implements Rafraichissable,
39
		VueListable, ListePaginable {
40
		VueListable, ListePaginable {
40
 
41
 
41
	/**
42
	/**
42
	 * Le médiateur associé à la vue
43
	 * Le médiateur associé à la vue
43
	 */
44
	 */
44
	private ImageMediateur iMediateur = null;
45
	private ImageMediateur iMediateur = null;
45
 
46
 
46
	/**
47
	/**
47
	 * Config de colonne
48
	 * Config de colonne
48
	 */
49
	 */
49
	private ColumnConfig numImage;
50
	private ColumnConfig numImage;
-
 
51
	
-
 
52
	/**
-
 
53
	 * Config de colonne
-
 
54
	 */
-
 
55
	private ColumnConfig transmisImage;
-
 
56
	
50
	/**
57
	/**
51
	 * Config de colonne
58
	 * Config de colonne
52
	 */
59
	 */
53
	private ColumnConfig urlImage;
60
	private ColumnConfig urlImage;
54
	/**
61
	/**
55
	 * Config de colonne
62
	 * Config de colonne
56
	 */
63
	 */
57
	private ColumnConfig lieImage;
64
	private ColumnConfig lieImage;
58
	/**
65
	/**
59
	 * Config de colonne
66
	 * Config de colonne
60
	 */
67
	 */
61
	private ColumnConfig datImage;
68
	private ColumnConfig datImage;
62
	/**
69
	/**
63
	 * Config de colonne
70
	 * Config de colonne
64
	 */
71
	 */
65
	private ColumnConfig appImage;
72
	private ColumnConfig appImage;
66
	/**
73
	/**
67
	 * Config de colonne
74
	 * Config de colonne
68
	 */
75
	 */
69
	private ColumnConfig noteImage;
76
	private ColumnConfig noteImage;
70
	/**
77
	/**
71
	 * Config de colonne
78
	 * Config de colonne
72
	 */
79
	 */
73
	private ColumnConfig nomImage;
80
	private ColumnConfig nomImage;
74
	/**
81
	/**
-
 
82
	 * Config de colonne
-
 
83
	 */
-
 
84
	private ColumnConfig obsAssociees;
-
 
85
	
-
 
86
	/**
75
	 * Modele de colonnes
87
	 * Modele de colonnes
76
	 */
88
	 */
77
	private ColumnModel modeleColonnes;
89
	private ColumnModel modeleColonnes;
78
 
90
 
79
	/**
91
	/**
80
	 * Booleen d'instanciation
92
	 * Booleen d'instanciation
81
	 */
93
	 */
82
	private boolean estInstancie = false;
94
	private boolean estInstancie = false;
83
 
95
 
84
	/**
96
	/**
85
	 * Store qui contient les données à afficher
97
	 * Store qui contient les données à afficher
86
	 */
98
	 */
87
	private Store st = null;
99
	private Store st = null;
88
	/**
100
	/**
89
	 * Configuration des colonnes du store
101
	 * Configuration des colonnes du store
90
	 */
102
	 */
91
	private ColumnConfig cl = null;
103
	private ColumnConfig cl = null;
92
 
104
 
93
	/**
105
	/**
94
	 * Barre de pagination
106
	 * Barre de pagination
95
	 */
107
	 */
96
	private BarrePaginationVue bt = null;
108
	private BarrePaginationVue bt = null;
97
	
109
	
98
	/**
110
	/**
99
	 * Taille max des images dans la liste
111
	 * Taille max des images dans la liste
100
	 */
112
	 */
101
	private int tailleOr = 50 ;
113
	private int tailleOr = 50 ;
102
 
114
 
103
	/**
115
	/**
104
	 * Garder ou non l'aspet original des images
116
	 * Garder ou non l'aspet original des images
105
	 */
117
	 */
106
	private boolean garderRatio = true;	
118
	private boolean garderRatio = true;	
107
	
119
	
108
	/**
120
	/**
109
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
121
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
110
	 */
122
	 */
111
	private ListeImageVue() {
123
	private ListeImageVue() {
112
		super();
124
		super();
113
	}
125
	}
114
	
126
	
115
 
127
 
116
	/**
128
	/**
117
	 * Constructeur avec argument
129
	 * Constructeur avec argument
118
	 * 
130
	 * 
119
	 * @param im
131
	 * @param im
120
	 *            le médiateur à associer
132
	 *            le médiateur à associer
121
	 */
133
	 */
122
	public ListeImageVue(ImageMediateur im) {
134
	public ListeImageVue(ImageMediateur im) {
123
 
135
 
124
		new ListeImageVue();
136
		new ListeImageVue();
125
 
137
 
126
		this.setId("listeImageGrid");
138
		this.setId("listeImageGrid");
127
		// on associe le médiateur
139
		// on associe le médiateur
128
		this.iMediateur = im;
140
		this.iMediateur = im;
129
 
141
 
130
		// on place la barre de pagination
142
		// on place la barre de pagination
131
		bt = new BarrePaginationVue(this);
143
		bt = new BarrePaginationVue(this);
132
		bt.setLabelElement("Images");
144
		bt.setLabelElement("Images");
133
		bt.setTaillePageParDefaut(50);
145
		bt.setTaillePageParDefaut(50);
134
		setBottomToolbar(bt);
146
		setBottomToolbar(bt);
135
 
147
 
136
		// on construit le modèle de colonnes
148
		// on construit le modèle de colonnes
137
		numImage = new ColumnConfig("Numéro", "num_image", 30, true,
149
		numImage = new ColumnConfig("Numéro", "num_image", 30, true,
138
				new Renderer() {
150
				new Renderer() {
139
 
151
 
140
					public String render(Object value,
152
					public String render(Object value,
141
							CellMetadata cellMetadata, Record record,
153
							CellMetadata cellMetadata, Record record,
142
							int rowIndex, int colNum, Store store) {
154
							int rowIndex, int colNum, Store store) {
-
 
155
						
-
 
156
						cellMetadata.setCssClass("centered-list");
143
 
157
 
144
						String ImgNum = record.getAsString("num_image");
158
						String ImgNum = record.getAsString("num_image");
145
						return "<div class=\"centered-list\">" + ImgNum
159
						return "<div class=\"centered-list\">" + ImgNum
146
								+ "</div>";
160
								+ "</div>";
147
					}
161
					}
148
 
162
 
149
				});
163
				});
-
 
164
		
-
 
165
		transmisImage = new ColumnConfig("   ", "obs_associees", 10, true, new Renderer() {
-
 
166
 
-
 
167
			public String render(Object value, CellMetadata cellMetadata,
-
 
168
					Record record, int rowIndex, int colNum, Store store) {
-
 
169
				
-
 
170
				cellMetadata.setCssClass("centered-list");
-
 
171
				
-
 
172
				String nomObs = record.getAsString("obs_associees");
-
 
173
				if(nomObs == null) {
-
 
174
					return "";
-
 
175
				}
-
 
176
				
-
 
177
				String[] obsTab = nomObs.split(";;");
-
 
178
				String valeurTransmis = "0";
-
 
179
 
-
 
180
				if(obsTab.length >= 1) {
-
 
181
					String[] elementsObs = obsTab[0].split("#");
-
 
182
					
-
 
183
					if(elementsObs.length >= 3) {
-
 
184
						nomObs = elementsObs[1];
-
 
185
						//if(elementsObs[2] == "1") {
-
 
186
							valeurTransmis = "1";
-
 
187
						//}
-
 
188
					}
-
 
189
				}
-
 
190
				
-
 
191
				if(valeurTransmis.equals("1"))
-
 
192
				{
-
 
193
					return "<img src=\"tela.png\"/></img>" ;
-
 
194
				}
-
 
195
				else
-
 
196
				{
-
 
197
					return "" ;
-
 
198
				}
-
 
199
			}
-
 
200
			
-
 
201
		});		
150
 
202
 
151
		datImage = new ColumnConfig("Date", "dat_image", 80, true,
203
		datImage = new ColumnConfig("Date", "dat_image", 80, true,
152
				new Renderer() {
204
				new Renderer() {
153
 
205
 
154
					public String render(Object value,
206
					public String render(Object value,
155
							CellMetadata cellMetadata, Record record,
207
							CellMetadata cellMetadata, Record record,
156
							int rowIndex, int colNum, Store store) {
208
							int rowIndex, int colNum, Store store) {
-
 
209
						
-
 
210
						cellMetadata.setCssClass("centered-list");
157
 
211
 
158
						String ImgDat = record.getAsString("dat_image");
212
						String ImgDat = record.getAsString("dat_image");
159
						if (ImgDat == null) {
213
						if (ImgDat == null) {
160
							ImgDat = " ";
214
							ImgDat = " ";
161
						}
215
						}
162
						return "<div class=\"centered-list\">" + ImgDat
216
						return "<div class=\"centered-list\">" + ImgDat
163
								+ "</div>";
217
								+ "</div>";
164
					}
218
					}
165
 
219
 
166
				});
220
				});
167
		lieImage = new ColumnConfig("Lieu", "lie_image", 120, true,
221
		lieImage = new ColumnConfig("Lieu", "lie_image", 120, true,
168
				new Renderer() {
222
				new Renderer() {
169
 
223
 
170
					public String render(Object value,
224
					public String render(Object value,
171
							CellMetadata cellMetadata, Record record,
225
							CellMetadata cellMetadata, Record record,
172
							int rowIndex, int colNum, Store store) {
226
							int rowIndex, int colNum, Store store) {
-
 
227
						
-
 
228
						cellMetadata.setCssClass("centered-list");
173
 
229
 
174
						String ImgLie = record.getAsString("lie_image");
230
						String ImgLie = record.getAsString("lie_image");
175
						if (ImgLie == null) {
231
						if (ImgLie == null) {
176
							ImgLie = " ";
232
							ImgLie = " ";
177
						}
233
						}
178
						return "<div class=\"centered-list\">" + ImgLie
234
						return "<div class=\"centered-list\">" + ImgLie
179
								+ "</div>";
235
								+ "</div>";
180
					}
236
					}
181
 
237
 
182
				});
238
				});
183
		appImage = new ColumnConfig("Appareil", "app_image", 120, true,
239
		appImage = new ColumnConfig("Appareil", "app_image", 120, true,
184
				new Renderer() {
240
				new Renderer() {
185
 
241
 
186
					public String render(Object value,
242
					public String render(Object value,
187
							CellMetadata cellMetadata, Record record,
243
							CellMetadata cellMetadata, Record record,
188
							int rowIndex, int colNum, Store store) {
244
							int rowIndex, int colNum, Store store) {
-
 
245
						
-
 
246
						cellMetadata.setCssClass("centered-list");
189
 
247
 
190
						String ImgApp = record.getAsString("app_image");
248
						String ImgApp = record.getAsString("app_image");
191
						if (ImgApp == null) {
249
						if (ImgApp == null) {
192
							ImgApp = " ";
250
							ImgApp = " ";
193
						}
251
						}
194
						return "<div class=\"centered-list\">" + ImgApp
252
						return "<div class=\"centered-list\">" + ImgApp
195
								+ "</div>";
253
								+ "</div>";
196
					}
254
					}
197
 
255
 
198
				});
256
				});
199
		
257
		
200
 
258
 
201
		// la colonne url possède une méthode de rendu spéciale
259
		// la colonne url possède une méthode de rendu spéciale
202
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
260
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
203
				new Renderer() {
261
				new Renderer() {
204
 
262
 
205
					public String render(Object value,
263
					public String render(Object value,
206
							CellMetadata cellMetadata, Record record,
264
							CellMetadata cellMetadata, Record record,
207
							int rowIndex, int colNum, Store store) {
265
							int rowIndex, int colNum, Store store) {
-
 
266
						
-
 
267
						cellMetadata.setCssClass("centered-list");
208
						// on affiche une div contenant l'image pointée par
268
						// on affiche une div contenant l'image pointée par
209
						// l'url
269
						// l'url
210
						int[] XY = {record.getAsInteger("taille_x") ,record.getAsInteger("taille_y")} ;
270
						int[] XY = {record.getAsInteger("taille_x") ,record.getAsInteger("taille_y")} ;
211
						int[] XYresize = {tailleOr,tailleOr} ;
271
						int[] XYresize = {tailleOr,tailleOr} ;
212
						
272
						
213
						if(garderRatio) {
273
						if(garderRatio) {
214
							XYresize = calculerDimensions(XY);
274
							XYresize = calculerDimensions(XY);
215
						}
275
						}
216
						
276
						
217
						String ImgUrl = record.getAsString("url_image_S");
277
						String ImgUrl = record.getAsString("url_image_S");
218
						String ImgNum = record.getAsString("num_image");
278
						String ImgNum = record.getAsString("num_image");
219
						return "<div class=\"img-list centered-list\"> <img src=\""
279
						return "<div class=\"img-list centered-list\"> <img src=\""
220
								+ ImgUrl + "\" title='" + ImgNum + "' width=\""+XYresize[0]+" px\" height=\""+XYresize[1]+" px\"> </div>";
280
								+ ImgUrl + "\" title='" + ImgNum + "' width=\""+XYresize[0]+" px\" height=\""+XYresize[1]+" px\"> </div>";
221
					}
281
					}
222
 
282
 
223
				});
283
				});
224
 
284
 
225
		noteImage = new ColumnConfig("Note", "note_image", 80, true,
285
		noteImage = new ColumnConfig("Note", "note_image", 80, true,
226
				new Renderer() {
286
				new Renderer() {
227
					public String render(Object value,
287
					public String render(Object value,
228
							CellMetadata cellMetadata, Record record,
288
							CellMetadata cellMetadata, Record record,
229
							int rowIndex, int colNum, Store store) {
289
							int rowIndex, int colNum, Store store) {
-
 
290
						
-
 
291
						cellMetadata.setCssClass("centered-list");
230
 
292
 
231
						String htmlImage = "";
293
						String htmlImage = "";
232
 
294
 
233
						int noteImg = record.getAsInteger("note_image");
295
						int noteImg = record.getAsInteger("note_image");
234
						if (noteImg >= 0) {
296
						if (noteImg >= 0) {
235
							htmlImage += "<div class=\"img-note centered-list\">";
297
							htmlImage += "<div class=\"img-note centered-list\">";
236
							for (int i = 0; i <= noteImg; i++) {
298
							for (int i = 0; i <= noteImg; i++) {
237
								htmlImage += "<img src=\"note-on.gif\">";
299
								htmlImage += "<img src=\"note-on.gif\">";
238
							}
300
							}
239
							htmlImage += "</div>";
301
							htmlImage += "</div>";
240
						}
302
						}
241
 
303
 
242
						return htmlImage;
304
						return htmlImage;
243
 
305
 
244
					}
306
					}
245
 
307
 
246
				});
308
				});
247
		
309
		
248
		nomImage = new ColumnConfig("Nom", "nom_original", 120, true,
310
		nomImage = new ColumnConfig("Nom original", "nom_original", 120, true,
249
				new Renderer() {
311
				new Renderer() {
250
			public String render(Object value,
312
			public String render(Object value,
251
					CellMetadata cellMetadata, Record record,
313
					CellMetadata cellMetadata, Record record,
252
					int rowIndex, int colNum, Store store) {
314
					int rowIndex, int colNum, Store store) {
-
 
315
				
-
 
316
				cellMetadata.setCssClass("centered-list");
253
 
317
 
254
				String imgNomOr = record.getAsString("nom_original");
318
				String imgNomOr = record.getAsString("nom_original");
255
				if (imgNomOr == null) {
319
				if (imgNomOr == null) {
256
					imgNomOr = " ";
320
					imgNomOr = " ";
257
				}
321
				}
258
				return "<div class=\"centered-list\">" + imgNomOr
322
				return "<div class=\"centered-list\">" + imgNomOr
259
						+ "</div>";
323
						+ "</div>";
260
			}
324
			}
261
 
325
 
262
		});
326
		});
-
 
327
		
-
 
328
		obsAssociees = new ColumnConfig("Nom associé", "obs_associees", 80, true,
-
 
329
				new Renderer() {
-
 
330
			public String render(Object value,
-
 
331
					CellMetadata cellMetadata, Record record,
-
 
332
					int rowIndex, int colNum, Store store) {
-
 
333
				
-
 
334
				cellMetadata.setCssClass("centered-list");
-
 
335
 
-
 
336
				String nomObs = record.getAsString("obs_associees");
-
 
337
				if(nomObs == null) {
-
 
338
					return "";
-
 
339
				}
-
 
340
				String[] obsTab = nomObs.split(";;");
-
 
341
 
-
 
342
				if(obsTab.length >= 1) {
-
 
343
					String[] elementsObs = obsTab[0].split("#");
-
 
344
					
-
 
345
					if(elementsObs.length >= 3) {
-
 
346
						nomObs = elementsObs[1];
-
 
347
					}
-
 
348
				}
-
 
349
				
-
 
350
				return "<div class=\"centered-list\">" + nomObs
-
 
351
						+ "</div>";
-
 
352
			}
-
 
353
 
-
 
354
		});
263
 
355
 
264
		// on associe le modèle de colonnes
356
		// on associe le modèle de colonnes
265
		ColumnConfig[] cm = { numImage, urlImage, nomImage, datImage, lieImage, appImage,
357
		ColumnConfig[] cm = { numImage, transmisImage, urlImage, obsAssociees, datImage, lieImage, appImage,
266
				noteImage };
358
				noteImage,nomImage} ;
267
		modeleColonnes = new ColumnModel(cm);
359
		modeleColonnes = new ColumnModel(cm);
268
		this.setColumnModel(modeleColonnes);
360
		this.setColumnModel(modeleColonnes);
269
		this.setAutoScroll(true);
361
		this.setAutoScroll(true);
270
		this.setAutoWidth(true);
362
		this.setAutoWidth(true);
271
		this.setEnableColumnResize(true);
363
		this.setEnableColumnResize(true);
272
 
364
 
273
		// creation du store
365
		// creation du store
274
		FieldDef defNumImage = new IntegerFieldDef("num_image");
366
		FieldDef defNumImage = new IntegerFieldDef("num_image");
-
 
367
		FieldDef defTransmisImage = new IntegerFieldDef("obs_associees");
275
		FieldDef defNomImage = new StringFieldDef("nom_original");
368
		FieldDef defNomImage = new StringFieldDef("nom_original");
276
		FieldDef defDatImage = new StringFieldDef("dat_image");
369
		FieldDef defDatImage = new StringFieldDef("dat_image");
277
		FieldDef defLieImage = new StringFieldDef("lie_image");
370
		FieldDef defLieImage = new StringFieldDef("lie_image");
278
		FieldDef defAppImage = new StringFieldDef("app_image");
371
		FieldDef defAppImage = new StringFieldDef("app_image");
279
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
372
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
280
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
373
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
281
		FieldDef defUrlImage = new StringFieldDef("url_image");
374
		FieldDef defUrlImage = new StringFieldDef("url_image");
282
		FieldDef defNoteImage = new StringFieldDef("note_image");
375
		FieldDef defNoteImage = new StringFieldDef("note_image");
283
		FieldDef defTailleX = new IntegerFieldDef("taille_x");
376
		FieldDef defTailleX = new IntegerFieldDef("taille_x");
284
		FieldDef defTailleY = new IntegerFieldDef("taille_y");
377
		FieldDef defTailleY = new IntegerFieldDef("taille_y");
-
 
378
		FieldDef defObsAssociees = new StringFieldDef("obs_associees");
285
		FieldDef[] defTab = { defNumImage,defNomImage, defDatImage, defLieImage,
379
		FieldDef[] defTab = { defNumImage,defTransmisImage, defNomImage, defDatImage, defLieImage,
286
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage,
380
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage,
287
				defNoteImage, defTailleX, defTailleY };
381
				defNoteImage, defTailleX, defTailleY, defObsAssociees};
288
		RecordDef rd = new RecordDef(defTab);
382
		RecordDef rd = new RecordDef(defTab);
289
		st = new Store(rd);
383
		st = new Store(rd);
290
		// on associe le store
384
		// on associe le store
291
		this.setStore(st);
385
		this.setStore(st);
292
		this.getView().setAutoFill(true);
386
		this.getView().setAutoFill(true);
293
 
-
 
294
 
387
 
295
		// on crée un masque de chargement qui s'affichera lors des mises à jour
388
		// on crée un masque de chargement qui s'affichera lors des mises à jour
296
		this.setLoadMask("chargement");
389
		this.setLoadMask("chargement");
297
		
390
		
298
		//Enable drag and drop
391
		//Enable drag and drop
299
		this.setEnableDragDrop(true);
392
		this.setEnableDragDrop(true);
300
		//You need to set the same group for both grids
393
		//You need to set the same group for both grids
301
		this.setDdGroup("DragGroupName");
394
		this.setDdGroup("DragGroupName");
302
 
395
 
303
		// on ajoute les listeners
396
		// on ajoute les listeners
304
		ajouterListeners();
397
		ajouterListeners();
305
 
398
 
306
	}
399
	}
307
	
400
	
308
 
401
 
309
	/**
402
	/**
310
	 * Ajoute les listeners pour la gestion des évènements
403
	 * Ajoute les listeners pour la gestion des évènements
311
	 */
404
	 */
312
	private void ajouterListeners() {
405
	private void ajouterListeners() {
313
		this.addListener(new ContainerListenerAdapter() {
406
		this.addListener(new ContainerListenerAdapter() {
314
 
407
 
315
			public void onHide(Component component) {
408
			public void onHide(Component component) {
316
 
409
 
317
			}
410
			}
318
 
411
 
319
			// lors du premier rendu on demande les données qui sont déjà
412
			// lors du premier rendu on demande les données qui sont déjà
320
			// contenues dans la galerie qui est le premier élément affiché
413
			// contenues dans la galerie qui est le premier élément affiché
321
 
414
 
322
			public void onRender(Component component) {
415
			public void onRender(Component component) {
323
 
416
 
324
				if (!isEstInstancie()) {
417
				if (!isEstInstancie()) {
325
					setEstInstancie(true);
418
					setEstInstancie(true);
326
					setDragDropText("Glissez les images sur la liste d'observation pour les lier") ;
419
					setDragDropText("Glissez les images sur la liste d'observation pour les lier") ;
327
					getIMediateur().synchroniserSelection("galerie");
420
					getIMediateur().synchroniserSelection("galerie");
328
				}
421
				}
329
			}
422
			}
330
 
423
 
331
			public void onShow(Component component) {
424
			public void onShow(Component component) {
332
 
425
 
333
			}
426
			}
334
 
427
 
335
		});
428
		});
336
 
429
 
337
		this.addGridRowListener(new GridRowListener() {
430
		this.addGridRowListener(new GridRowListener() {
338
 
431
 
339
			// gestion du clic sur une ligne
432
			// gestion du clic sur une ligne
340
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
433
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
341
 
434
 
342
				// on notifie le médiateur et on lui passe le nuémro de ligne
435
				// on notifie le médiateur et on lui passe le nuémro de ligne
343
				getIMediateur().clicListeImage(rowIndex);
436
				getIMediateur().clicListeImage(rowIndex);
344
			}
437
			}
345
 
438
 
346
			// gestion du clic droit
439
			// gestion du clic droit
347
			public void onRowContextMenu(GridPanel grid, int rowIndex,
440
			public void onRowContextMenu(GridPanel grid, int rowIndex,
348
					EventObject e) {
441
					EventObject e) {
349
				// on stoppe l'évenement pour empecher le navigateur d'afficher
442
				// on stoppe l'évenement pour empecher le navigateur d'afficher
350
				// son propre menu
443
				// son propre menu
351
				e.stopEvent();
444
				e.stopEvent();
352
				// on notifie le médiateur en lui passant l'évenement
445
				// on notifie le médiateur en lui passant l'évenement
353
				getIMediateur().montrerContextMenu(e);
446
				getIMediateur().montrerContextMenu(e);
354
			}
447
			}
355
 
448
 
356
			// gestion du double clic
449
			// gestion du double clic
357
			public void onRowDblClick(GridPanel grid, int rowIndex,
450
			public void onRowDblClick(GridPanel grid, int rowIndex,
358
					EventObject e) {
451
					EventObject e) {
359
				// on notifie le médiateur en lui passant le numéro de ligne
452
				// on notifie le médiateur en lui passant le numéro de ligne
360
				getIMediateur().doubleClicListeImage(rowIndex);
453
				getIMediateur().doubleClicListeImage(rowIndex);
361
			}
454
			}
362
		});
455
		});
363
 
456
 
364
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
457
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
365
 
458
 
366
			// gestion de la sélection
459
			// gestion de la sélection
367
 
460
 
368
			public void onSelectionChange(RowSelectionModel sm) {
461
			public void onSelectionChange(RowSelectionModel sm) {
369
 
462
 
370
				// si on a rien de sélectionné
463
				// si on a rien de sélectionné
371
				if (sm.getCount() <= 0) {
464
				if (sm.getCount() <= 0) {
372
					// on notifie le médiateur (qui désactive notamment l'accès
465
					// on notifie le médiateur (qui désactive notamment l'accès
373
					// à certaines infos)
466
					// à certaines infos)
374
					getIMediateur().aucuneSelection();
467
					getIMediateur().aucuneSelection();
375
				} else {
468
				} else {
376
					// sinon on notifie le médiateur
469
					// sinon on notifie le médiateur
377
					getIMediateur().selection();
470
					getIMediateur().selection();
378
					// et on lui demande de synchroniser la selection avec les
471
					// et on lui demande de synchroniser la selection avec les
379
					// autres vues
472
					// autres vues
380
					getIMediateur().synchroniserSelection("liste");
473
					getIMediateur().synchroniserSelection("liste");
381
				}
474
				}
382
			}
475
			}
383
		});
476
		});
384
		
477
		
385
		//Enable drag and drop
478
		//Enable drag and drop
386
		this.setEnableDragDrop(true);
479
		this.setEnableDragDrop(true);
387
 
480
 
388
		//Same name in destination
481
		//Same name in destination
389
		this.setDdGroup("DragGroupName");
482
		this.setDdGroup("DragGroupName");
390
		DropTargetConfig dtc = new DropTargetConfig();
483
		DropTargetConfig dtc = new DropTargetConfig();
391
		dtc.setdDdGroup("DragGroupName");
484
		dtc.setdDdGroup("DragGroupName");
392
 
485
 
393
		//Now this is the important part, you need a drop target
486
		//Now this is the important part, you need a drop target
394
		@SuppressWarnings("unused")
487
		@SuppressWarnings("unused")
395
		DropTarget tg = new DropTarget(this, dtc)
488
		DropTarget tg = new DropTarget(this, dtc)
396
		{
489
		{
397
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){
490
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){
398
			
491
			
399
				if(data instanceof GridDragData)
492
				if(data instanceof GridDragData)
400
				{
493
				{
401
					GridDragData gdd = (GridDragData)data ;
494
					GridDragData gdd = (GridDragData)data ;
402
	    		  	if(gdd.getGrid().getId().equals("listeImageGrid"))
495
	    		  	if(gdd.getGrid().getId().equals("listeImageGrid"))
403
	    		  	{
496
	    		  	{
404
	    		  		return false ;
497
	    		  		return false ;
405
	    		  	}
498
	    		  	}
406
	    		  	else
499
	    		  	else
407
	    		  	{
500
	    		  	{
408
	    		  		return iMediateur.lierObsDD(source, e, data, getId()) ;   
501
	    		  		return iMediateur.lierObsDD(source, e, data, getId()) ;   
409
	    		  	}
502
	    		  	}
410
				}
503
				}
411
				else
504
				else
412
				{
505
				{
413
					return false ;
506
					return false ;
414
				}
507
				}
415
				
508
				
416
				
509
				
417
			}
510
			}
418
			
511
			
419
			public String notifyOver(DragSource source, EventObject e, DragData data){
512
			public String notifyOver(DragSource source, EventObject e, DragData data){
420
			    return "x-dd-drop-ok";
513
			    return "x-dd-drop-ok";
421
			}
514
			}
422
		};
515
		};
423
	}
516
	}
424
 
517
 
425
	/**
518
	/**
426
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
519
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
427
	 * galerie suivant les identifiants donnés en paramètres
520
	 * galerie suivant les identifiants donnés en paramètres
428
	 */
521
	 */
429
	public String[] getIdSelectionnees() {
522
	public String[] getIdSelectionnees() {
430
		Record[] selection = this.getSelectionModel().getSelections();
523
		Record[] selection = this.getSelectionModel().getSelections();
431
		int taille = selection.length;
524
		int taille = selection.length;
432
		String id_selection[] = new String[taille];
525
		String id_selection[] = new String[taille];
433
 
526
 
434
		for (int i = 0; i < selection.length; i++) {
527
		for (int i = 0; i < selection.length; i++) {
435
 
528
 
436
			id_selection[i] = selection[i].getAsString("num_image");
529
			id_selection[i] = selection[i].getAsString("num_image");
437
		}
530
		}
438
 
531
 
439
		return id_selection;
532
		return id_selection;
440
	}
533
	}
441
 
534
 
442
	/**
535
	/**
443
	 * Accesseur pour la config de colonnes
536
	 * Accesseur pour la config de colonnes
444
	 * 
537
	 * 
445
	 * @return la config de colonnes
538
	 * @return la config de colonnes
446
	 */
539
	 */
447
	public ColumnConfig getCl() {
540
	public ColumnConfig getCl() {
448
		return cl;
541
		return cl;
449
	}
542
	}
450
 
543
 
451
	/**
544
	/**
452
	 * Accesseur pour le médiateur
545
	 * Accesseur pour le médiateur
453
	 * 
546
	 * 
454
	 * @return le médiateur associé
547
	 * @return le médiateur associé
455
	 */
548
	 */
456
	public ImageMediateur getIMediateur() {
549
	public ImageMediateur getIMediateur() {
457
		return iMediateur;
550
		return iMediateur;
458
	}
551
	}
459
 
552
 
460
	/**
553
	/**
461
	 * Accesseur pour le modèle de colonnes
554
	 * Accesseur pour le modèle de colonnes
462
	 * 
555
	 * 
463
	 * @return le modèle de colonnes
556
	 * @return le modèle de colonnes
464
	 */
557
	 */
465
	public ColumnModel getModeleColonnes() {
558
	public ColumnModel getModeleColonnes() {
466
		return modeleColonnes;
559
		return modeleColonnes;
467
	}
560
	}
468
 
561
 
469
	/**
562
	/**
470
	 * Accesseur pour le store
563
	 * Accesseur pour le store
471
	 * 
564
	 * 
472
	 * @return le store contenant les données
565
	 * @return le store contenant les données
473
	 */
566
	 */
474
	public Store getSt() {
567
	public Store getSt() {
475
		return st;
568
		return st;
476
	}
569
	}
477
 
570
 
478
	/**
571
	/**
479
	 * Accesseur pour le booleen d'instanciation
572
	 * Accesseur pour le booleen d'instanciation
480
	 * 
573
	 * 
481
	 * @return le booleen d'instanciation
574
	 * @return le booleen d'instanciation
482
	 */
575
	 */
483
	public boolean isEstInstancie() {
576
	public boolean isEstInstancie() {
484
		return estInstancie;
577
		return estInstancie;
485
	}
578
	}
486
 
579
 
487
	/**
580
	/**
488
	 * Méthode héritée de l'interface rafraichissable
581
	 * Méthode héritée de l'interface rafraichissable
489
	 * 
582
	 * 
490
	 * @param nouvelleDonnees
583
	 * @param nouvelleDonnees
491
	 *            les nouvelles données
584
	 *            les nouvelles données
492
	 * @param repandreRafraichissement
585
	 * @param repandreRafraichissement
493
	 *            le booleen de notification du rafraichissement
586
	 *            le booleen de notification du rafraichissement
494
	 */
587
	 */
495
	public void rafraichir(Object nouvelleDonnees,
588
	public void rafraichir(Object nouvelleDonnees,
496
			boolean repandreRafraichissement) {
589
			boolean repandreRafraichissement) {
497
 
590
 
498
		// si on reçoit un store
591
		// si on reçoit un store
499
		if (nouvelleDonnees instanceof Store) {
592
		if (nouvelleDonnees instanceof Store) {
500
 
593
 
501
			// on affecte celui-ci comme gestionnaire de données
594
			// on affecte celui-ci comme gestionnaire de données
502
			st = (Store) nouvelleDonnees;
595
			st = (Store) nouvelleDonnees;
503
			st.load();
596
			st.load();
504
			// et on reconfigure et rafraichit la vue
597
			// et on reconfigure et rafraichit la vue
505
			this.reconfigure(st, this.getColumnModel());
598
			this.reconfigure(st, this.getColumnModel());
506
 
599
 
507
		}
600
		}
508
		
601
		
509
 
602
 
510
		// si on doit répandre l'évenement
603
		// si on doit répandre l'évenement
511
		if (repandreRafraichissement) {
604
		if (repandreRafraichissement) {
512
			// on notifie le médiateur avec une copie des données
605
			// on notifie le médiateur avec une copie des données
513
			getIMediateur().synchroniserDonneesZoomListeGalerie(
606
			getIMediateur().synchroniserDonneesZoomListeGalerie(
514
					nouvelleDonnees, this);
607
					nouvelleDonnees, this);
515
		}
608
		}
516
	}
609
	}
517
 
610
 
518
	/**
611
	/**
519
	 * Sélectionne des enregistrements donné
612
	 * Sélectionne des enregistrements donné
520
	 * 
613
	 * 
521
	 * @param sel
614
	 * @param sel
522
	 *            un tableau d'enregistrement à selectionner
615
	 *            un tableau d'enregistrement à selectionner
523
	 */
616
	 */
524
	public void selectionnerEnregistrements(Record[] sel) {
617
	public void selectionnerEnregistrements(Record[] sel) {
525
 
618
 
526
		if (isEstInstancie()) {
619
		if (isEstInstancie()) {
527
			getSelectionModel().clearSelections();
620
			getSelectionModel().clearSelections();
528
			getSelectionModel().selectRecords(sel);
621
			getSelectionModel().selectRecords(sel);
529
		}
622
		}
530
	}
623
	}
531
 
624
 
532
	/**
625
	/**
533
	 * Accesseur pour la toolbar de pagination
626
	 * Accesseur pour la toolbar de pagination
534
	 * 
627
	 * 
535
	 * @return la toolbar de pagination
628
	 * @return la toolbar de pagination
536
	 */
629
	 */
537
	public BarrePaginationVue getToolBarVue() {
630
	public BarrePaginationVue getToolBarVue() {
538
		return bt;
631
		return bt;
539
	}
632
	}
540
 
633
 
541
	/**
634
	/**
542
	 * Setteur pour le booleen d'instanciation
635
	 * Setteur pour le booleen d'instanciation
543
	 * 
636
	 * 
544
	 * @param estInstancie
637
	 * @param estInstancie
545
	 *            la nouvelle valeur du booleen
638
	 *            la nouvelle valeur du booleen
546
	 */
639
	 */
547
	public void setEstInstancie(boolean estInstancie) {
640
	public void setEstInstancie(boolean estInstancie) {
548
		this.estInstancie = estInstancie;
641
		this.estInstancie = estInstancie;
549
	}
642
	}
550
 
643
 
551
	public void mettreAjourInfos(String commentaires, String date, String note) {
644
	public void mettreAjourInfos(String commentaires, String date, String note) {
552
 
645
 
553
		for (int i = 0; i < getSelectionModel().getCount(); i++) {
646
		for (int i = 0; i < getSelectionModel().getCount(); i++) {
554
 
647
 
555
			getSelectionModel().getSelections()[i].set("note_image", note);
648
			getSelectionModel().getSelections()[i].set("note_image", note);
556
			getSelectionModel().getSelections()[i].set("dat_image", date);
649
			getSelectionModel().getSelections()[i].set("dat_image", date);
557
 
650
 
558
		}
651
		}
559
 
652
 
560
	}
653
	}
561
	
654
	
562
	public void changerNumeroPage(int pageCourante) {
655
	public void changerNumeroPage(int pageCourante) {
563
		
656
		
564
		iMediateur.changerNumeroPage(pageCourante) ;
657
		iMediateur.changerNumeroPage(pageCourante) ;
565
		
658
		
566
	}
659
	}
567
 
660
 
568
	public void changerTaillePage(int nouvelleTaillePage) {
661
	public void changerTaillePage(int nouvelleTaillePage) {
569
		
662
		
570
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
663
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
571
	}
664
	}
572
	
665
	
573
	public int[] calculerDimensions(int[] tailleXY) {
666
	public int[] calculerDimensions(int[] tailleXY) {
574
	    
667
	    
575
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
668
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
576
        float tailleOr = this.tailleOr ;
669
        float tailleOr = this.tailleOr ;
577
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
670
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
578
        float[] XYresize = new float[2];
671
        float[] XYresize = new float[2];
579
        
672
        
580
        if(maxTaille == tailleXY[0]) {
673
        if(maxTaille == tailleXY[0]) {
581
            float rapport = tailleXYf[1]/tailleXYf[0] ;
674
            float rapport = tailleXYf[1]/tailleXYf[0] ;
582
            XYresize[0] = tailleOr ;
675
            XYresize[0] = tailleOr ;
583
            XYresize[1] = tailleOr*rapport ;
676
            XYresize[1] = tailleOr*rapport ;
584
        }else {
677
        }else {
585
            float rapport = tailleXYf[0]/tailleXYf[1] ;
678
            float rapport = tailleXYf[0]/tailleXYf[1] ;
586
            XYresize[1] = tailleOr ;
679
            XYresize[1] = tailleOr ;
587
            XYresize[0] = tailleOr*rapport ;
680
            XYresize[0] = tailleOr*rapport ;
588
        }
681
        }
589
        
682
        
590
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
683
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
591
        
684
        
592
        return res;
685
        return res;
593
    }
686
    }
594
 
687
 
595
}
688
}