Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 19 | Rev 27 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 aperonnet 1
 
2
package org.tela_botanica.client.vues;
3
 
4
 
12 aperonnet 5
import java.util.Iterator;
6
 
4 aperonnet 7
import org.tela_botanica.client.image.ImageMediateur;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
19 aperonnet 9
import org.tela_botanica.client.interfaces.VueListable;
12 aperonnet 10
import org.tela_botanica.client.modeles.ImageCarnet;
19 aperonnet 11
import org.tela_botanica.client.modeles.ListeImageCarnet;
4 aperonnet 12
 
13
 
22 aperonnet 14
import com.google.gwt.core.client.JavaScriptObject;
6 aperonnet 15
import com.google.gwt.user.client.Window;
19 aperonnet 16
import com.gwtext.client.core.EventObject;
5 aperonnet 17
import com.gwtext.client.data.ArrayReader;
4 aperonnet 18
import com.gwtext.client.data.FieldDef;
12 aperonnet 19
import com.gwtext.client.data.IntegerFieldDef;
5 aperonnet 20
import com.gwtext.client.data.MemoryProxy;
4 aperonnet 21
import com.gwtext.client.data.Record;
22
import com.gwtext.client.data.RecordDef;
23
import com.gwtext.client.data.Store;
24
import com.gwtext.client.data.StoreMgr;
25
import com.gwtext.client.data.StringFieldDef;
22 aperonnet 26
import com.gwtext.client.widgets.BoxComponent;
5 aperonnet 27
import com.gwtext.client.widgets.Component;
22 aperonnet 28
import com.gwtext.client.widgets.Container;
29
import com.gwtext.client.widgets.Panel;
30
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
6 aperonnet 31
import com.gwtext.client.widgets.event.ContainerListener;
5 aperonnet 32
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
33
import com.gwtext.client.widgets.event.PanelListener;
34
import com.gwtext.client.widgets.event.PanelListenerAdapter;
4 aperonnet 35
import com.gwtext.client.widgets.grid.CellMetadata;
36
import com.gwtext.client.widgets.grid.ColumnConfig;
37
import com.gwtext.client.widgets.grid.ColumnModel;
38
import com.gwtext.client.widgets.grid.GridPanel;
6 aperonnet 39
import com.gwtext.client.widgets.grid.GridView;
4 aperonnet 40
import com.gwtext.client.widgets.grid.Renderer;
22 aperonnet 41
import com.gwtext.client.widgets.grid.RowSelectionModel;
19 aperonnet 42
import com.gwtext.client.widgets.grid.event.GridCellListener;
43
import com.gwtext.client.widgets.grid.event.GridListener;
44
import com.gwtext.client.widgets.grid.event.GridRowListener;
22 aperonnet 45
import com.gwtext.client.widgets.grid.event.RowSelectionListener;
46
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
12 aperonnet 47
import com.gwtext.client.widgets.layout.AnchorLayout;
48
import com.gwtext.client.widgets.layout.FitLayout;
4 aperonnet 49
import com.gwtextux.client.data.BufferedStore;
50
 
12 aperonnet 51
/**
52
 * Liste d'image composée de miniatures et d'information sur l'image
53
 * @author aurelien
54
 *
55
 */
19 aperonnet 56
public class ListeImageVue extends GridPanel implements Rafraichissable, VueListable {
4 aperonnet 57
 
58
 
59
 
60
	// instance du médiateur
61
	private ImageMediateur iMediateur = null;
62
 
63
 
64
	private ColumnConfig numImage ;
65
	private ColumnConfig urlImage ;
12 aperonnet 66
	private ColumnConfig lieImage ;
67
	private ColumnConfig datImage ;
68
	private ColumnConfig appImage ;
4 aperonnet 69
	private ColumnModel modeleColonnes ;
70
 
16 aperonnet 71
	private boolean estInstancie = false ;
4 aperonnet 72
 
73
 
16 aperonnet 74
 
4 aperonnet 75
	// données locales
76
	// store qui gère les données de la liste d'images
77
	private Store st = null ;
78
	private ColumnConfig cl = null ;
79
 
80
 
81
	public ListeImageVue(ImageMediateur im) {
82
 
12 aperonnet 83
		super() ;
84
 
16 aperonnet 85
		this.setId("listeImageGrid") ;
86
 
4 aperonnet 87
		this.iMediateur = im ;
88
 
12 aperonnet 89
		numImage = new ColumnConfig("numéro","num_image",100,true);
90
		datImage = new ColumnConfig("date","dat_image",120,true);
91
		lieImage = new ColumnConfig("lieu","lie_image",120,true);
92
		appImage = new ColumnConfig("appareil","app_image",200,true);
19 aperonnet 93
		urlImage = new ColumnConfig("Image","url_image_S",200,true,new Renderer() {
4 aperonnet 94
 
95
			public String render(Object value, CellMetadata cellMetadata,
96
					Record record, int rowIndex, int colNum, Store store) {
97
 
19 aperonnet 98
				String ImgUrl = record.getAsString("url_image_S");
12 aperonnet 99
				String ImgNum = record.getAsString("num_image");
100
				return "<div class=\"img-list\"> <img src=\""+ImgUrl+"\" title='"+ImgNum+"'> </div>";
4 aperonnet 101
			}
102
 
103
		});
104
 
12 aperonnet 105
		ColumnConfig[] cm = {numImage,datImage,lieImage,appImage,urlImage};
4 aperonnet 106
		modeleColonnes = new ColumnModel(cm);
107
		this.setColumnModel(modeleColonnes);
6 aperonnet 108
		this.setAutoScroll(true);
7 aperonnet 109
		this.setAutoWidth(true);
4 aperonnet 110
 
111
 
22 aperonnet 112
		// creation du store
113
		FieldDef defNumImage = new IntegerFieldDef("num_image");
12 aperonnet 114
		FieldDef defDatImage = new StringFieldDef("dat_image");
115
		FieldDef defLieImage = new StringFieldDef("lie_image");
116
		FieldDef defAppImage = new StringFieldDef("app_image");
19 aperonnet 117
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
22 aperonnet 118
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
119
		FieldDef defUrlImage = new StringFieldDef("url_image");
120
		FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
4 aperonnet 121
		RecordDef rd = new RecordDef(defTab) ;
122
		st = new Store(rd) ;
123
		this.setStore(st);
12 aperonnet 124
		this.getView().setAutoFill(true) ;
4 aperonnet 125
 
22 aperonnet 126
		//this.setLoadMask(true) ;
19 aperonnet 127
		this.setLoadMask("chargement") ;
128
 
5 aperonnet 129
		ajouterListeners() ;
6 aperonnet 130
 
4 aperonnet 131
 
132
	}
5 aperonnet 133
 
134
	public void ajouterListeners()
22 aperonnet 135
	{
5 aperonnet 136
		this.addListener(new ContainerListenerAdapter() {
4 aperonnet 137
 
6 aperonnet 138
 
5 aperonnet 139
			public void onHide(Component component) {
140
				// TODO Auto-generated method stub
141
 
142
			}
143
 
22 aperonnet 144
 
145
			public void onRender(Component component) {
5 aperonnet 146
 
22 aperonnet 147
				if(!isEstInstancie())
148
				{
149
					setEstInstancie(true) ;
150
					getIMediateur().synchroniserSelection("galerie") ;
151
				}
5 aperonnet 152
			}
153
 
22 aperonnet 154
 
5 aperonnet 155
			public void onShow(Component component) {
156
 
22 aperonnet 157
 
5 aperonnet 158
			}
22 aperonnet 159
 
5 aperonnet 160
 
161
		});
19 aperonnet 162
 
163
		this.addGridRowListener(new GridRowListener() {
164
 
165
 
166
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
22 aperonnet 167
					;
168
				getIMediateur().clicListeImage(rowIndex) ;
19 aperonnet 169
			}
170
 
171
			public void onRowContextMenu(GridPanel grid, int rowIndex,
172
					EventObject e) {
173
 
22 aperonnet 174
				getIMediateur().montrerContextMenu(e) ;
175
 
19 aperonnet 176
			}
177
 
178
			public void onRowDblClick(GridPanel grid, int rowIndex,
179
					EventObject e) {
180
 
22 aperonnet 181
 
182
				getIMediateur().doubleClicListeImage(rowIndex) ;
183
 
19 aperonnet 184
 
185
			}
22 aperonnet 186
 
187
		});
188
 
189
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
19 aperonnet 190
 
22 aperonnet 191
			public void onSelectionChange(RowSelectionModel sm) {
192
 
193
				if(sm.getCount() <= 0)
194
				{
195
					getIMediateur().aucuneSelection() ;
196
				}
197
				else
198
				{
199
					getIMediateur().selection() ;
200
					getIMediateur().synchroniserSelection("liste");
201
				}
202
 
203
			}
19 aperonnet 204
 
205
		});
5 aperonnet 206
	}
19 aperonnet 207
 
208
	public String[] getIdSelectionnees()
209
	{
210
		Record[] selection = this.getSelectionModel().getSelections() ;
211
		int taille = selection.length ;
212
		String id_selection[] = new String[taille] ;
213
 
214
		for (int i = 0; i < selection.length; i++) {
215
 
216
			id_selection[i] = selection[i].getAsString("num_image") ;
217
		}
218
 
219
		return id_selection ;
220
	}
5 aperonnet 221
 
222
 
16 aperonnet 223
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
4 aperonnet 224
 
22 aperonnet 225
		if(nouvelleDonnees instanceof Store)
12 aperonnet 226
		{
227
 
22 aperonnet 228
			st = (Store)nouvelleDonnees;
229
			st.load();
12 aperonnet 230
			this.reconfigure(st, this.getColumnModel());
231
		}
16 aperonnet 232
 
233
		if(repandreRafraichissement)
234
		{
22 aperonnet 235
			getIMediateur().synchroniserDonneesZoomListeGalerie(nouvelleDonnees, this) ;
16 aperonnet 236
		}
4 aperonnet 237
	}
5 aperonnet 238
 
239
 
240
	public ImageMediateur getIMediateur() {
241
		return iMediateur;
242
	}
243
 
244
 
245
	public ColumnConfig getNumImage() {
246
		return numImage;
247
	}
248
 
249
 
250
	public ColumnConfig getUrlImage() {
251
		return urlImage;
252
	}
253
 
254
 
255
	public ColumnModel getModeleColonnes() {
256
		return modeleColonnes;
257
	}
258
 
259
 
260
	public Store getSt() {
261
		return st;
262
	}
263
 
264
 
265
	public ColumnConfig getCl() {
266
		return cl;
267
	}
22 aperonnet 268
 
269
 
270
	/**
271
	 * @return the estInstancie
272
	 */
273
	public boolean isEstInstancie() {
274
		return estInstancie;
275
	}
276
 
277
 
278
	/**
279
	 * @param estInstancie the estInstancie to set
280
	 */
281
	public void setEstInstancie(boolean estInstancie) {
282
		this.estInstancie = estInstancie;
283
	}
284
 
285
 
286
	/**
287
	 * @param mediateur the iMediateur to set
288
	 */
289
	public void setIMediateur(ImageMediateur mediateur) {
290
		iMediateur = mediateur;
291
	}
292
 
293
	public void selectionnerEnregistrements(Record[] sel) {
294
 
295
		if(isEstInstancie())
296
		{
297
			getSelectionModel().clearSelections() ;
298
			getSelectionModel().selectRecords(sel) ;
299
		}
300
	}
4 aperonnet 301
 
302
 
303
 
304
}