Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 7 | Rev 16 | 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
 
58
 
59
 
60
	// données locales
61
	// store qui gère les données de la liste d'images
62
	private Store st = null ;
63
	private ColumnConfig cl = null ;
64
 
65
 
66
	public ListeImageVue(ImageMediateur im) {
67
 
12 aperonnet 68
		super() ;
69
 
4 aperonnet 70
		this.iMediateur = im ;
71
 
12 aperonnet 72
		numImage = new ColumnConfig("numéro","num_image",100,true);
73
		datImage = new ColumnConfig("date","dat_image",120,true);
74
		lieImage = new ColumnConfig("lieu","lie_image",120,true);
75
		appImage = new ColumnConfig("appareil","app_image",200,true);
76
		urlImage = new ColumnConfig("Image","url_image",200,true,new Renderer() {
4 aperonnet 77
 
78
			public String render(Object value, CellMetadata cellMetadata,
79
					Record record, int rowIndex, int colNum, Store store) {
80
 
5 aperonnet 81
				String ImgUrl = record.getAsString("url_image");
12 aperonnet 82
				String ImgNum = record.getAsString("num_image");
83
				return "<div class=\"img-list\"> <img src=\""+ImgUrl+"\" title='"+ImgNum+"'> </div>";
4 aperonnet 84
			}
85
 
86
		});
87
 
12 aperonnet 88
		ColumnConfig[] cm = {numImage,datImage,lieImage,appImage,urlImage};
4 aperonnet 89
		modeleColonnes = new ColumnModel(cm);
90
		this.setColumnModel(modeleColonnes);
6 aperonnet 91
		this.setAutoScroll(true);
7 aperonnet 92
		this.setAutoWidth(true);
4 aperonnet 93
 
94
 
95
		FieldDef defNumImage = new StringFieldDef("num_image");
12 aperonnet 96
		FieldDef defDatImage = new StringFieldDef("dat_image");
97
		FieldDef defLieImage = new StringFieldDef("lie_image");
98
		FieldDef defAppImage = new StringFieldDef("app_image");
4 aperonnet 99
		FieldDef defUrlImage = new StringFieldDef("url_image");
12 aperonnet 100
		FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImage};
4 aperonnet 101
		RecordDef rd = new RecordDef(defTab) ;
102
		st = new Store(rd) ;
103
		this.setStore(st);
12 aperonnet 104
		this.getView().setAutoFill(true) ;
4 aperonnet 105
 
5 aperonnet 106
		ajouterListeners() ;
6 aperonnet 107
 
4 aperonnet 108
	}
109
 
110
 
5 aperonnet 111
	// role : configurer les colonnes affichées dans la grille
112
	private void initialiser() {
4 aperonnet 113
 
6 aperonnet 114
		getIMediateur().obtenirPhotoGalerie(this);
4 aperonnet 115
 
116
 
117
	}
5 aperonnet 118
 
119
	public void ajouterListeners()
120
	{
121
		this.addListener(new ContainerListenerAdapter() {
4 aperonnet 122
 
123
 
6 aperonnet 124
			public boolean doBeforeRender(Component component)
125
			{
126
				initialiser();
127
				return true ;
128
			}
129
 
5 aperonnet 130
			public void onHide(Component component) {
131
				// TODO Auto-generated method stub
132
 
133
			}
134
 
135
 
136
			public void onRender(Component component) {
137
				// TODO Auto-generated method stub
138
 
139
			}
140
 
141
 
142
			public void onShow(Component component) {
143
 
144
			}
145
 
146
		});
147
	}
148
 
149
 
4 aperonnet 150
	public void rafraichir(Object nouvelleDonnees) {
151
 
12 aperonnet 152
		if(nouvelleDonnees instanceof ListeImage)
153
		{
154
			ListeImage data = (ListeImage) nouvelleDonnees ;
155
			Object[][] photoData = new Object[data.size()][5];
156
			for(int i = 0 ; i<data.size();i++)
157
			{
158
				ImageCarnet im = (ImageCarnet) data.elementAt(i);
159
				photoData[i][0] = im.getOrdre() ;
160
				photoData[i][1] = im.getDate() ;
161
				photoData[i][2] = im.getIptcCity() ;
162
				photoData[i][3] = im.getMake()+" "+im.getModel() ;
163
				photoData[i][4] = im.getUrl() ;
164
			}
165
 
166
			FieldDef defNumImage = new IntegerFieldDef("num_image");
167
			FieldDef defDatImage = new StringFieldDef("dat_image");
168
			FieldDef defLieImage = new StringFieldDef("lie_image");
169
			FieldDef defAppImage = new StringFieldDef("app_image");
170
			FieldDef defUrlImage = new StringFieldDef("url_image");
171
			FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImage};
172
 
173
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
174
			final ArrayReader reader = new ArrayReader(new RecordDef(defTab));
175
 
176
			final Store photoStore = new Store(dataProxy, reader);
177
 
178
			st = photoStore;
179
			this.reconfigure(st, this.getColumnModel());
180
			photoStore.load();
181
		}
4 aperonnet 182
	}
5 aperonnet 183
 
184
 
185
	public ImageMediateur getIMediateur() {
186
		return iMediateur;
187
	}
188
 
189
 
190
	public ColumnConfig getNumImage() {
191
		return numImage;
192
	}
193
 
194
 
195
	public ColumnConfig getUrlImage() {
196
		return urlImage;
197
	}
198
 
199
 
200
	public ColumnModel getModeleColonnes() {
201
		return modeleColonnes;
202
	}
203
 
204
 
205
	public Store getSt() {
206
		return st;
207
	}
208
 
209
 
210
	public ColumnConfig getCl() {
211
		return cl;
212
	}
4 aperonnet 213
 
214
 
215
 
216
}