Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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