Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 16 | Rev 19 | 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];
18 aperonnet 161
			int i = 0 ;
162
			for (Iterator it = data.keySet().iterator(); it.hasNext();)
12 aperonnet 163
			{
18 aperonnet 164
				ImageCarnet im = (ImageCarnet) data.get(it.next());
12 aperonnet 165
				photoData[i][0] = im.getOrdre() ;
166
				photoData[i][1] = im.getDate() ;
167
				photoData[i][2] = im.getIptcCity() ;
168
				photoData[i][3] = im.getMake()+" "+im.getModel() ;
169
				photoData[i][4] = im.getUrl() ;
18 aperonnet 170
 
171
				i++ ;
12 aperonnet 172
			}
173
 
174
			FieldDef defNumImage = new IntegerFieldDef("num_image");
175
			FieldDef defDatImage = new StringFieldDef("dat_image");
176
			FieldDef defLieImage = new StringFieldDef("lie_image");
177
			FieldDef defAppImage = new StringFieldDef("app_image");
178
			FieldDef defUrlImage = new StringFieldDef("url_image");
179
			FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImage};
180
 
181
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
182
			final ArrayReader reader = new ArrayReader(new RecordDef(defTab));
183
 
184
			final Store photoStore = new Store(dataProxy, reader);
185
 
186
			st = photoStore;
187
			this.reconfigure(st, this.getColumnModel());
188
			photoStore.load();
189
		}
16 aperonnet 190
 
191
		if(repandreRafraichissement)
192
		{
193
			getIMediateur().synchroniserZoomListeGalerie(nouvelleDonnees, this) ;
194
		}
4 aperonnet 195
	}
5 aperonnet 196
 
197
 
198
	public ImageMediateur getIMediateur() {
199
		return iMediateur;
200
	}
201
 
202
 
203
	public ColumnConfig getNumImage() {
204
		return numImage;
205
	}
206
 
207
 
208
	public ColumnConfig getUrlImage() {
209
		return urlImage;
210
	}
211
 
212
 
213
	public ColumnModel getModeleColonnes() {
214
		return modeleColonnes;
215
	}
216
 
217
 
218
	public Store getSt() {
219
		return st;
220
	}
221
 
222
 
223
	public ColumnConfig getCl() {
224
		return cl;
225
	}
4 aperonnet 226
 
227
 
228
 
229
}