Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 31 | Go to most recent revision | Show entire file | Regard 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
Line -... Line 63...
-
 
63
	 */
-
 
64
	private ImageMediateur	iMediateur		= null;
-
 
65
	
60
	// instance du médiateur
66
	/**
-
 
67
	 * Config de colonne
-
 
68
	 */
-
 
69
	private ColumnConfig	numImage;
61
	private ImageMediateur	iMediateur		= null;
70
	/**
-
 
71
	 * Config de colonne
-
 
72
	 */
-
 
73
	private ColumnConfig	urlImage;
62
 
74
	/**
-
 
75
	 * Config de colonne
-
 
76
	 */
-
 
77
	private ColumnConfig	lieImage;
63
	private ColumnConfig	numImage;
78
	/**
-
 
79
	 * Config de colonne
-
 
80
	 */
-
 
81
	private ColumnConfig	datImage;
64
	private ColumnConfig	urlImage;
82
	/**
-
 
83
	 * Config de colonne
-
 
84
	 */
-
 
85
	private ColumnConfig	appImage;
65
	private ColumnConfig	lieImage;
86
	/**
Line -... Line 87...
-
 
87
	 * Modele de colonnes
-
 
88
	 */
-
 
89
	private ColumnModel		modeleColonnes;
66
	private ColumnConfig	datImage;
90
 
Line 67... Line 91...
67
	private ColumnConfig	appImage;
91
	/**
68
	private ColumnModel		modeleColonnes;
92
	 * Booleen d'instanciation
-
 
93
	 */
69
 
94
	private boolean			estInstancie	= false;
-
 
95
 
-
 
96
	/**
-
 
97
	 * Store qui contient les données à afficher
70
	private boolean			estInstancie	= false;
98
	 */
Line -... Line 99...
-
 
99
	private Store			st				= null;
-
 
100
	/**
-
 
101
	 * Configuration des colonnes du store
71
 
102
	 */
Line -... Line 103...
-
 
103
	private ColumnConfig	cl				= null;
-
 
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
	{
72
	// données locales
115
		super() ;
Line 73... Line 116...
73
	// store qui gère les données de la liste d'images
116
	}
Line 74... Line 117...
74
	private Store			st				= null;
117
	
75
	private ColumnConfig	cl				= null;
-
 
-
 
118
	/**
76
	
119
	 * Constructeur avec argument
Line -... Line 120...
-
 
120
	 * @param im le médiateur à associer
77
	private pageToolBarVue bt = null ;
121
	 */
78
 
122
	public ListeImageVue(ImageMediateur im) {
Line -... Line 123...
-
 
123
 
79
	public ListeImageVue(ImageMediateur im) {
124
		new ListeImageVue() ;
80
 
125
 
81
		super();
126
		this.setId("listeImageGrid");
82
 
127
		// on associe le médiateur
-
 
128
		this.iMediateur = im;
83
		this.setId("listeImageGrid");
129
		
84
 
130
		// on place la barre de pagination
Line 85... Line 131...
85
		this.iMediateur = im;
131
		bt = new pageToolBarVue(im);		
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
Line 94... Line 140...
94
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
140
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
Line -... Line 141...
-
 
141
				new Renderer() {
95
				new Renderer() {
142
 
96
 
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
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);
Line -... Line 178...
-
 
178
		
130
 
179
		// on crée un masque de chargement qui s'affichera lors des mises à jour
Line -... Line 180...
-
 
180
		this.setLoadMask("chargement");
131
		this.setLoadMask("chargement");
181
 
Line 132... Line 182...
132
 
182
		// on ajoute les listeners
Line -... Line 183...
-
 
183
		ajouterListeners();
-
 
184
 
-
 
185
	}
133
		ajouterListeners();
186
 
134
 
187
	/**
Line 135... Line 188...
135
	}
188
	 * Ajoute les listeners pour la gestion des évènements
Line 136... Line 189...
136
 
189
	 */
Line -... Line 190...
-
 
190
	private void ajouterListeners() {
137
	public void ajouterListeners() {
191
		this.addListener(new ContainerListenerAdapter() {
Line 138... Line 192...
138
		this.addListener(new ContainerListenerAdapter() {
192
 
139
 
193
			public void onHide(Component component) {
140
			public void onHide(Component component) {
194
 
Line 155... Line 209...
155
 
209
 
Line 156... Line 210...
156
		});
210
		});
Line -... Line 211...
-
 
211
 
157
 
212
		this.addGridRowListener(new GridRowListener() {
Line -... Line 213...
-
 
213
			
158
		this.addGridRowListener(new GridRowListener() {
214
			// gestion du clic sur une ligne
159
 
215
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
Line -... Line 216...
-
 
216
 
160
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
217
				// on notifie le médiateur et on lui passe le nuémro de ligne
161
 
218
				getIMediateur().clicListeImage(rowIndex);
162
				getIMediateur().clicListeImage(rowIndex);
-
 
-
 
219
			}
163
			}
220
			
-
 
221
			// gestion du clic droit
164
 
222
			public void onRowContextMenu(GridPanel grid, int rowIndex,
165
			public void onRowContextMenu(GridPanel grid, int rowIndex,
223
					EventObject e) {
Line -... Line 224...
-
 
224
				// on stoppe l'évenement pour empecher le navigateur d'afficher son propre menu
166
					EventObject e) {
225
				e.stopEvent() ;
167
 
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
Line 172... Line 231...
172
			public void onRowDblClick(GridPanel grid, int rowIndex,
231
			public void onRowDblClick(GridPanel grid, int rowIndex,
Line -... Line 232...
-
 
232
					EventObject e) {
173
					EventObject e) {
233
				// on notifie le médiateur en lui passant le numéro de ligne
Line -... Line 234...
-
 
234
				getIMediateur().doubleClicListeImage(rowIndex);
174
 
235
			}
-
 
236
		});
175
				getIMediateur().doubleClicListeImage(rowIndex);
237
 
176
			}
238
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
-
 
239
 
177
		});
240
			// gestion de la sélection
-
 
241
			public void onSelectionChange(RowSelectionModel sm) {
178
 
242
 
179
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
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();
Line -... Line 247...
-
 
247
				} else {
183
				if (sm.getCount() <= 0) {
248
					// sinon on notifie le médiateur
184
					getIMediateur().aucuneSelection();
249
					getIMediateur().selection();
185
				} else {
250
					// et on lui demande de synchroniser la selection avec les autres vues
186
					getIMediateur().selection();
-
 
187
					getIMediateur().synchroniserSelection("liste");
251
					getIMediateur().synchroniserSelection("liste");
188
				}
252
				}
189
			}
253
			}
190
		});
254
		});
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
Line 221... Line -...
221
 
-
 
222
	public Store getSt() {
-
 
223
		return st;
-
 
224
	}
-
 
225
 
301
	 */
-
 
302
	public Store getSt() {
226
	public ColumnConfig getUrlImage() {
303
		return st;
227
		return urlImage;
304
	}
228
	}
305
	
229
 
306
	/**
230
	/**
307
	 * Accesseur pour le booleen d'instanciation
Line -... Line 308...
-
 
308
	 * @return le booleen d'instanciation
-
 
309
	 */
-
 
310
	public boolean isEstInstancie() {
-
 
311
		return estInstancie;
-
 
312
	}
231
	 * @return the estInstancie
313
 
232
	 */
314
	/**
Line -... Line 315...
-
 
315
	 * Méthode héritée de l'interface rafraichissable
233
	public boolean isEstInstancie() {
316
	 * @param nouvelleDonnees les nouvelles données
Line -... Line 317...
-
 
317
	 * @param repandreRafraichissement le booleen de notification du rafraichissement
234
		return estInstancie;
318
	 */
235
	}
319
	public void rafraichir(Object nouvelleDonnees,
-
 
320
			boolean repandreRafraichissement) {
236
 
321
 
Line 237... Line 322...
237
	public void rafraichir(Object nouvelleDonnees,
322
		// si on reçoit un store
Line -... Line 323...
-
 
323
		if (nouvelleDonnees instanceof Store) {
238
			boolean repandreRafraichissement) {
324
 
-
 
325
			// on affecte celui-ci comme gestionnaire de données
239
 
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());
Line -... Line 330...
-
 
330
					
-
 
331
		}
-
 
332
 
-
 
333
		// si on doit répandre l'évenement
243
			st.load();
334
		if (repandreRafraichissement) {
Line 244... Line 335...
244
			this.reconfigure(st, this.getColumnModel());
335
			// on notifie le médiateur avec une copie des données
245
					
336
			getIMediateur().synchroniserDonneesZoomListeGalerie(
246
		}
337
					nouvelleDonnees, this);
247
 
338
		}
248
		if (repandreRafraichissement) {
339
	}
Line -... Line 340...
-
 
340
 
-
 
341
	/**
-
 
342
	 * Sélectionne des enregistrements donné 
-
 
343
	 * @param sel un tableau d'enregistrement à selectionner
249
			getIMediateur().synchroniserDonneesZoomListeGalerie(
344
	 */
250
					nouvelleDonnees, this);
345
	public void selectionnerEnregistrements(Record[] sel) {
251
		}
346
 
252
	}
347
		if (isEstInstancie()) {
Line 253... Line 348...
253
 
348
			getSelectionModel().clearSelections();
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
Line 260... Line -...
260
	}
-
 
261
	
-
 
262
	public pageToolBarVue getToolBarVue()
-
 
263
	{
-
 
264
		return bt ;
-
 
265
	}
-
 
266
 
-
 
267
	/**
-
 
268
	 * @param estInstancie
355
	 * @return la toolbar de pagination