Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 31 | Rev 47 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31 Rev 36
Line 48... Line 48...
48
import com.gwtext.client.widgets.layout.AnchorLayout;
48
import com.gwtext.client.widgets.layout.AnchorLayout;
49
import com.gwtext.client.widgets.layout.FitLayout;
49
import com.gwtext.client.widgets.layout.FitLayout;
50
import com.gwtextux.client.data.BufferedStore;
50
import com.gwtextux.client.data.BufferedStore;
Line 51... Line 51...
51
 
51
 
52
/**
52
/**
-
 
53
 * Liste d'image composée de miniatures et d'information sur l'image, implémente
53
 * Liste d'image composée de miniatures et d'information sur l'image
54
 * l'interface rafraichissable et l'interface vueListable
54
 * 
55
 * 
55
 * @author aurelien
56
 * @author aurelien
56
 */
57
 */
57
public class ListeImageVue extends GridPanel implements Rafraichissable,
58
public class ListeImageVue extends GridPanel implements Rafraichissable,
Line -... Line 59...
-
 
59
		VueListable {
58
		VueListable {
60
 
-
 
61
	/**
59
 
62
	 * Le médiateur associé à la vue
60
	// instance du médiateur
63
	 */
-
 
64
	private ImageMediateur	iMediateur		= null;
-
 
65
	
-
 
66
	/**
61
	private ImageMediateur	iMediateur		= null;
67
	 * Config de colonne
-
 
68
	 */
-
 
69
	private ColumnConfig	numImage;
-
 
70
	/**
62
 
71
	 * Config de colonne
-
 
72
	 */
-
 
73
	private ColumnConfig	urlImage;
-
 
74
	/**
63
	private ColumnConfig	numImage;
75
	 * Config de colonne
-
 
76
	 */
-
 
77
	private ColumnConfig	lieImage;
-
 
78
	/**
64
	private ColumnConfig	urlImage;
79
	 * Config de colonne
-
 
80
	 */
-
 
81
	private ColumnConfig	datImage;
-
 
82
	/**
65
	private ColumnConfig	lieImage;
83
	 * Config de colonne
-
 
84
	 */
-
 
85
	private ColumnConfig	appImage;
-
 
86
	/**
66
	private ColumnConfig	datImage;
87
	 * Modele de colonnes
Line -... Line 88...
-
 
88
	 */
-
 
89
	private ColumnModel		modeleColonnes;
-
 
90
 
67
	private ColumnConfig	appImage;
91
	/**
Line 68... Line 92...
68
	private ColumnModel		modeleColonnes;
92
	 * Booleen d'instanciation
69
 
93
	 */
-
 
94
	private boolean			estInstancie	= false;
70
	private boolean			estInstancie	= false;
95
 
-
 
96
	/**
-
 
97
	 * Store qui contient les données à afficher
-
 
98
	 */
71
 
99
	private Store			st				= null;
Line -... Line 100...
-
 
100
	/**
-
 
101
	 * Configuration des colonnes du store
-
 
102
	 */
72
	// données locales
103
	private ColumnConfig	cl				= null;
Line -... Line 104...
-
 
104
	
-
 
105
	/**
-
 
106
	 * Barre de pagination
-
 
107
	 */
-
 
108
	private pageToolBarVue bt = null ;
-
 
109
 
-
 
110
	/**
-
 
111
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
-
 
112
	 */
-
 
113
	private ListeImageVue()
-
 
114
	{
-
 
115
		super() ;
73
	// store qui gère les données de la liste d'images
116
	}
Line 74... Line 117...
74
	private Store			st				= null;
117
	
Line 75... Line 118...
75
	private ColumnConfig	cl				= null;
118
	/**
76
	
-
 
-
 
119
	 * Constructeur avec argument
77
	private pageToolBarVue bt = null ;
120
	 * @param im le médiateur à associer
Line -... Line 121...
-
 
121
	 */
78
 
122
	public ListeImageVue(ImageMediateur im) {
79
	public ListeImageVue(ImageMediateur im) {
123
 
Line -... Line 124...
-
 
124
		new ListeImageVue() ;
80
 
125
 
81
		super();
126
		this.setId("listeImageGrid");
82
 
127
		// on associe le médiateur
83
		this.setId("listeImageGrid");
128
		this.iMediateur = im;
-
 
129
		
84
 
130
		// on place la barre de pagination
85
		this.iMediateur = im;
131
		bt = new pageToolBarVue(im);		
Line 86... Line 132...
86
		
132
		this.setBottomToolbar(bt) ;
87
		bt = new pageToolBarVue(im);		
133
 
88
		this.setBottomToolbar(bt) ;
134
		// on construit le modèle de colonnes
89
 
-
 
-
 
135
		numImage = new ColumnConfig("numéro", "num_image", 30, true);
90
		numImage = new ColumnConfig("numéro", "num_image", 30, true);
136
		datImage = new ColumnConfig("date", "dat_image", 120, true);
91
		datImage = new ColumnConfig("date", "dat_image", 120, true);
137
		lieImage = new ColumnConfig("lieu", "lie_image", 120, true);
92
		lieImage = new ColumnConfig("lieu", "lie_image", 120, true);
138
		appImage = new ColumnConfig("appareil", "app_image", 200, true);
93
		appImage = new ColumnConfig("appareil", "app_image", 200, true);
139
		// la colonne url possède une méthode de rendu spéciale
94
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
140
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
Line 95... Line 141...
95
				new Renderer() {
141
				new Renderer() {
96
 
142
 
-
 
143
					public String render(Object value,
97
					public String render(Object value,
144
							CellMetadata cellMetadata, Record record,
98
							CellMetadata cellMetadata, Record record,
145
							int rowIndex, int colNum, Store store) {
99
							int rowIndex, int colNum, Store store) {
146
						// on affiche une div contenant l'image pointée par l'url
100
 
147
						String ImgUrl = record.getAsString("url_image_S");
101
						String ImgUrl = record.getAsString("url_image_S");
148
						String ImgNum = record.getAsString("num_image");
Line 123... Line 170...
123
		FieldDef defUrlImage = new StringFieldDef("url_image");
170
		FieldDef defUrlImage = new StringFieldDef("url_image");
124
		FieldDef[] defTab = { defNumImage, defDatImage, defLieImage,
171
		FieldDef[] defTab = { defNumImage, defDatImage, defLieImage,
125
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage };
172
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage };
126
		RecordDef rd = new RecordDef(defTab);
173
		RecordDef rd = new RecordDef(defTab);
127
		st = new Store(rd);
174
		st = new Store(rd);
-
 
175
		// on associe le store
128
		this.setStore(st);
176
		this.setStore(st);
129
		this.getView().setAutoFill(true);
177
		this.getView().setAutoFill(true);
130
 
178
		
-
 
179
		// on crée un masque de chargement qui s'affichera lors des mises à jour
131
		this.setLoadMask("chargement");
180
		this.setLoadMask("chargement");
Line -... Line 181...
-
 
181
 
132
 
182
		// on ajoute les listeners
Line 133... Line 183...
133
		ajouterListeners();
183
		ajouterListeners();
Line -... Line 184...
-
 
184
 
-
 
185
	}
-
 
186
 
134
 
187
	/**
135
	}
188
	 * Ajoute les listeners pour la gestion des évènements
Line 136... Line 189...
136
 
189
	 */
Line 137... Line 190...
137
	public void ajouterListeners() {
190
	private void ajouterListeners() {
Line -... Line 191...
-
 
191
		this.addListener(new ContainerListenerAdapter() {
138
		this.addListener(new ContainerListenerAdapter() {
192
 
Line 139... Line 193...
139
 
193
			public void onHide(Component component) {
140
			public void onHide(Component component) {
194
 
141
 
195
			}
Line 154... Line 208...
154
			}
208
			}
Line 155... Line 209...
155
 
209
 
Line 156... Line 210...
156
		});
210
		});
157
 
211
 
-
 
212
		this.addGridRowListener(new GridRowListener() {
158
		this.addGridRowListener(new GridRowListener() {
213
			
Line -... Line 214...
-
 
214
			// gestion du clic sur une ligne
159
 
215
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
160
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
216
 
161
 
217
				// on notifie le médiateur et on lui passe le nuémro de ligne
-
 
218
				getIMediateur().clicListeImage(rowIndex);
162
				getIMediateur().clicListeImage(rowIndex);
219
			}
163
			}
220
			
164
 
-
 
-
 
221
			// gestion du clic droit
165
			public void onRowContextMenu(GridPanel grid, int rowIndex,
222
			public void onRowContextMenu(GridPanel grid, int rowIndex,
-
 
223
					EventObject e) {
166
					EventObject e) {
224
				// on stoppe l'évenement pour empecher le navigateur d'afficher son propre menu
167
 
225
				e.stopEvent() ;
Line -... Line 226...
-
 
226
				// on notifie le médiateur en lui passant l'évenement
168
				e.stopEvent() ;
227
				getIMediateur().montrerContextMenu(e);
169
				getIMediateur().montrerContextMenu(e);
228
			}
170
			}
-
 
-
 
229
 
171
 
230
			// gestion du double clic
172
			public void onRowDblClick(GridPanel grid, int rowIndex,
231
			public void onRowDblClick(GridPanel grid, int rowIndex,
173
					EventObject e) {
232
					EventObject e) {
Line 174... Line 233...
174
 
233
				// on notifie le médiateur en lui passant le numéro de ligne
Line -... Line 234...
-
 
234
				getIMediateur().doubleClicListeImage(rowIndex);
175
				getIMediateur().doubleClicListeImage(rowIndex);
235
			}
Line -... Line 236...
-
 
236
		});
176
			}
237
 
-
 
238
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
177
		});
239
 
178
 
240
			// gestion de la sélection
-
 
241
			public void onSelectionChange(RowSelectionModel sm) {
179
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
242
 
-
 
243
				// si on a rien de sélectionné
180
 
244
				if (sm.getCount() <= 0) {
181
			public void onSelectionChange(RowSelectionModel sm) {
245
					// on notifie le médiateur (qui désactive notamment l'accès à certaines infos)
182
 
246
					getIMediateur().aucuneSelection();
183
				if (sm.getCount() <= 0) {
247
				} else {
184
					getIMediateur().aucuneSelection();
248
					// sinon on notifie le médiateur
Line -... Line 249...
-
 
249
					getIMediateur().selection();
185
				} else {
250
					// et on lui demande de synchroniser la selection avec les autres vues
186
					getIMediateur().selection();
251
					getIMediateur().synchroniserSelection("liste");
187
					getIMediateur().synchroniserSelection("liste");
252
				}
188
				}
-
 
189
			}
253
			}
190
		});
254
		});
191
	}
255
	}
192
 
256
 
Line 205... Line 269...
205
		}
269
		}
Line 206... Line 270...
206
 
270
 
207
		return id_selection;
271
		return id_selection;
Line -... Line 272...
-
 
272
	}
-
 
273
 
-
 
274
	/**
-
 
275
	 * Accesseur pour la config de colonnes
-
 
276
	 * @return la config de colonnes
-
 
277
	 */
-
 
278
	public ColumnConfig getCl() {
-
 
279
		return cl;
-
 
280
	}
-
 
281
	
-
 
282
	/**
-
 
283
	 * Accesseur pour le médiateur
208
	}
284
	 * @return le médiateur associé
209
 
285
	 */
210
	public ImageMediateur getIMediateur() {
286
	public ImageMediateur getIMediateur() {
Line -... Line 287...
-
 
287
		return iMediateur;
-
 
288
	}
-
 
289
 
-
 
290
	/**
211
		return iMediateur;
291
	 * Accesseur pour le modèle de colonnes
212
	}
292
	 * @return le modèle de colonnes
213
 
293
	 */
Line -... Line 294...
-
 
294
	public ColumnModel getModeleColonnes() {
214
	public ColumnModel getModeleColonnes() {
295
		return modeleColonnes;
215
		return modeleColonnes;
296
	}
216
	}
297
 
217
 
-
 
218
	public ColumnConfig getNumImage() {
298
	/**
219
		return numImage;
299
	 * Accesseur pour le store
220
	}
300
	 * @return le store contenant les données
221
 
301
	 */
222
	public Store getSt() {
-
 
223
		return st;
-
 
224
	}
-
 
225
 
-
 
226
	public ColumnConfig getUrlImage() {
302
	public Store getSt() {
-
 
303
		return st;
227
		return urlImage;
304
	}
228
	}
305
	
229
 
306
	/**
230
	/**
307
	 * Accesseur pour le booleen d'instanciation
231
	 * @return the estInstancie
308
	 * @return le booleen d'instanciation
Line -... Line 309...
-
 
309
	 */
-
 
310
	public boolean isEstInstancie() {
-
 
311
		return estInstancie;
-
 
312
	}
-
 
313
 
232
	 */
314
	/**
233
	public boolean isEstInstancie() {
315
	 * Méthode héritée de l'interface rafraichissable
Line -... Line 316...
-
 
316
	 * @param nouvelleDonnees les nouvelles données
234
		return estInstancie;
317
	 * @param repandreRafraichissement le booleen de notification du rafraichissement
Line -... Line 318...
-
 
318
	 */
235
	}
319
	public void rafraichir(Object nouvelleDonnees,
236
 
320
			boolean repandreRafraichissement) {
-
 
321
 
237
	public void rafraichir(Object nouvelleDonnees,
322
		// si on reçoit un store
Line 238... Line 323...
238
			boolean repandreRafraichissement) {
323
		if (nouvelleDonnees instanceof Store) {
Line -... Line 324...
-
 
324
 
239
 
325
			// on affecte celui-ci comme gestionnaire de données
-
 
326
			st = (Store) nouvelleDonnees;
240
		if (nouvelleDonnees instanceof Store) {
327
			st.load();
241
 
328
			// et on reconfigure et rafraichit la vue
242
			st = (Store) nouvelleDonnees;
329
			this.reconfigure(st, this.getColumnModel());
243
			st.load();
330
					
Line -... Line 331...
-
 
331
		}
-
 
332
 
-
 
333
		// si on doit répandre l'évenement
-
 
334
		if (repandreRafraichissement) {
244
			this.reconfigure(st, this.getColumnModel());
335
			// on notifie le médiateur avec une copie des données
Line 245... Line 336...
245
					
336
			getIMediateur().synchroniserDonneesZoomListeGalerie(
246
		}
337
					nouvelleDonnees, this);
247
 
338
		}
248
		if (repandreRafraichissement) {
339
	}
249
			getIMediateur().synchroniserDonneesZoomListeGalerie(
340
 
Line -... Line 341...
-
 
341
	/**
-
 
342
	 * Sélectionne des enregistrements donné 
-
 
343
	 * @param sel un tableau d'enregistrement à selectionner
-
 
344
	 */
250
					nouvelleDonnees, this);
345
	public void selectionnerEnregistrements(Record[] sel) {
251
		}
346
 
252
	}
347
		if (isEstInstancie()) {
253
 
348
			getSelectionModel().clearSelections();
Line 254... Line 349...
254
	public void selectionnerEnregistrements(Record[] sel) {
349
			getSelectionModel().selectRecords(sel);
255
 
350
		}
256
		if (isEstInstancie()) {
351
	}
257
			getSelectionModel().clearSelections();
352
	
258
			getSelectionModel().selectRecords(sel);
353
	/**
259
		}
354
	 * Accesseur pour la toolbar de pagination
260
	}
355
	 * @return la toolbar de pagination
Line 261... Line -...
261
	
-
 
262
	public pageToolBarVue getToolBarVue()
-
 
263
	{
-
 
264
		return bt ;
-
 
265
	}
-
 
266
 
-
 
267
	/**
-
 
268
	 * @param estInstancie
-
 
269
	 *            the estInstancie to set
356
	 */