Subversion Repositories eFlore/Archives.cel-v2

Rev

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