Subversion Repositories eFlore/Applications.cel

Rev

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

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