Subversion Repositories eFlore/Archives.cel-v2

Rev

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