Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 12 | Rev 18 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 12 Rev 16
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
 
3
 
4
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.image.ImageMediateur;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.modeles.ImageCarnet;
6
import org.tela_botanica.client.modeles.ImageCarnet;
7
import org.tela_botanica.client.modeles.ListeImage;
7
import org.tela_botanica.client.modeles.ListeImage;
8
 
8
 
9
 
9
 
10
import com.google.gwt.core.client.JavaScriptObject;
10
import com.google.gwt.core.client.JavaScriptObject;
11
import com.google.gwt.user.client.Element;
11
import com.google.gwt.user.client.Element;
12
import com.google.gwt.user.client.Event;
12
import com.google.gwt.user.client.Event;
13
import com.google.gwt.user.client.Window;
13
import com.google.gwt.user.client.Window;
14
import com.gwtext.client.core.EventObject;
14
import com.gwtext.client.core.EventObject;
15
import com.gwtext.client.core.XTemplate;
15
import com.gwtext.client.core.XTemplate;
16
import com.gwtext.client.data.ArrayReader;
16
import com.gwtext.client.data.ArrayReader;
17
import com.gwtext.client.data.FieldDef;
17
import com.gwtext.client.data.FieldDef;
18
import com.gwtext.client.data.MemoryProxy;
18
import com.gwtext.client.data.MemoryProxy;
19
import com.gwtext.client.data.RecordDef;
19
import com.gwtext.client.data.RecordDef;
20
import com.gwtext.client.data.Store;
20
import com.gwtext.client.data.Store;
21
import com.gwtext.client.data.StringFieldDef;
21
import com.gwtext.client.data.StringFieldDef;
22
import com.gwtext.client.util.Format;
22
import com.gwtext.client.util.Format;
23
import com.gwtext.client.widgets.BoxComponent;
23
import com.gwtext.client.widgets.BoxComponent;
24
import com.gwtext.client.widgets.Component;
24
import com.gwtext.client.widgets.Component;
25
import com.gwtext.client.widgets.Container;
25
import com.gwtext.client.widgets.Container;
26
import com.gwtext.client.widgets.DataView;
26
import com.gwtext.client.widgets.DataView;
27
import com.gwtext.client.widgets.Observable;
27
import com.gwtext.client.widgets.Observable;
28
import com.gwtext.client.widgets.Panel;
28
import com.gwtext.client.widgets.Panel;
29
import com.gwtext.client.widgets.DataView.Data;
29
import com.gwtext.client.widgets.DataView.Data;
30
import com.gwtext.client.widgets.event.ContainerListener;
30
import com.gwtext.client.widgets.event.ContainerListener;
31
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
31
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
32
import com.gwtext.client.widgets.event.DataViewListener;
32
import com.gwtext.client.widgets.event.DataViewListener;
33
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
33
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
34
 
34
 
35
/**
35
/**
36
 * Galerie d'images miniatures
36
 * Galerie d'images miniatures
37
 * @author aurelien
37
 * @author aurelien
38
 *
38
 *
39
 */
39
 */
40
public class GalerieImageVue extends Panel implements Rafraichissable, Observable {
40
public class GalerieImageVue extends Panel implements Rafraichissable, Observable {
41
 
41
 
42
	// instance du médiateur
42
	// instance du médiateur
43
	private ImageMediateur iMediateur = null; 
43
	private ImageMediateur iMediateur = null; 
44
	private DataView dView = null ;
44
	private DataView dView = null ;
45
	private Store st = null ;
45
	private Store st = null ;
46
	
46
	
47
	public GalerieImageVue(ImageMediateur im)
47
	public GalerieImageVue(ImageMediateur im)
48
	{
48
	{
49
		super("Galerie");
49
		super("Galerie");
50
		iMediateur = im ;
50
		iMediateur = im ;
51
		
51
		
52
		this.addListener(new ContainerListenerAdapter() {
52
		this.addListener(new ContainerListenerAdapter() {
53
 
53
 
54
 
54
 
55
			public void onHide(Component component) {
55
			public void onHide(Component component) {
56
				// TODO Auto-generated method stub
56
				// TODO Auto-generated method stub
57
				
57
				
58
			}
58
			}
59
 
59
 
60
 
60
 
61
			public void onRender(Component component) {
61
			public void onRender(Component component) {
62
				// TODO Auto-generated method stub
62
				// TODO Auto-generated method stub
63
				
63
				
64
			}
64
			}
65
 
65
 
66
 
66
 
67
			public void onShow(Component component) {
67
			public void onShow(Component component) {
68
				
68
				
69
				
69
				
70
				if(dView == null)
70
				if(dView == null)
71
				{
71
				{
72
					initialiser();
72
					initialiser();
73
				}
73
				}
74
			}
74
			}
75
			
75
			
76
		});
76
		});
77
		
77
		
78
	}
78
	}
79
	
79
	
80
	
80
	
81
	public void ajouterListenersDataView()
81
	public void ajouterListenersDataView()
82
	{
82
	{
83
		
83
		
84
		// ajout de listeners pour la gestion de la selection
84
		// ajout de listeners pour la gestion de la selection
85
		// dans la galerie
85
		// dans la galerie
86
		dView.addListener(new DataViewListenerAdapter() {
86
		dView.addListener(new DataViewListenerAdapter() {
87
 
87
 
88
 
88
 
89
 
89
 
90
			public void onClick(DataView source, int index, Element node,
90
			public void onClick(DataView source, int index, Element node,
91
					EventObject e) {
91
					EventObject e) {
92
				
92
				
93
				getIMediateur().clicGalerieImage(index, node, e);
93
				getIMediateur().clicGalerieImage(index, node, e);
94
				
94
				
95
			}
95
			}
96
 
96
 
97
 
97
 
98
			public void onContainerClick(DataView source, EventObject e) {
98
			public void onContainerClick(DataView source, EventObject e) {
99
				//TODO: appeler le mediateur
99
				//TODO: appeler le mediateur
100
				
100
				
101
			}
101
			}
102
 
102
 
103
 
103
 
104
			public void onContextMenu(DataView source, int index, Element node,
104
			public void onContextMenu(DataView source, int index, Element node,
105
					EventObject e) {
105
					EventObject e) {
106
				
106
				
107
				e.stopEvent() ;
107
				e.stopEvent() ;
108
				getIMediateur().montrerContextMenu(e) ;
108
				getIMediateur().montrerContextMenu(e) ;
109
				
109
				
110
			}
110
			}
111
 
111
 
112
 
112
 
113
			public void onDblClick(DataView source, int index, Element node,
113
			public void onDblClick(DataView source, int index, Element node,
114
					EventObject e) {
114
					EventObject e) {
115
				
115
				
116
				//TODO: appeler le mediateur
116
				//TODO: appeler le mediateur
117
				getIMediateur().clicGalerieImage(index, node, e);
117
				getIMediateur().clicGalerieImage(index, node, e);
118
				
118
				
119
			}
119
			}
120
 
120
 
121
 
121
 
122
			public void onSelectionChange(DataView view, Element[] selections) {
122
			public void onSelectionChange(DataView view, Element[] selections) {
123
				//TODO: appeler le mediateur
123
				//TODO: appeler le mediateur
124
				
124
				
125
			}
125
			}
126
			
126
			
127
		});
127
		});
128
	}
128
	}
129
	
129
	
130
	
130
	
131
	// instantiation paresseuse
131
	// instantiation paresseuse
132
	public void initialiser()
132
	public void initialiser()
133
	{
133
	{
134
		// Preparation de la dataview et du template		
134
		// Preparation de la dataview et du template		
135
		// le template va créer une div contenant une image
135
		// le template va créer une div contenant une image
136
		// pour chacune des photos
136
		// pour chacune des photos
137
		final XTemplate template = new XTemplate(
137
		final XTemplate template = new XTemplate(
138
				new String[]{
138
				new String[]{
139
						"<tpl for='.'>",
139
						"<tpl for='.'>",
140
						"<div class='thumb-wrap' id='{num_image}'>",
140
						"<div class='thumb-wrap' id='{num_image}'>",
141
						"<div class='thumb'><img src='{url_image_S}' title='{num_image}'></div>",
141
						"<div class='thumb'><img src='{url_image_S}' title='{num_image}'></div>",
142
						"<span>{nom}</span></div>", "</tpl>",
142
						"<span>{nom}</span></div>", "</tpl>",
143
						"<div class='x-clear'></div>"});
143
						"<div class='x-clear'></div>"});
144
		template.compile();
144
		template.compile();
145
 
145
 
146
		// la dataview affichera les images en accord avec le template
146
		// la dataview affichera les images en accord avec le template
147
		// cree precedemment
147
		// cree precedemment
148
		dView = new DataView("div.thumb-wrap") {
148
		dView = new DataView("div.thumb-wrap") {
149
			public void prepareData(Data data) {
149
			public void prepareData(Data data) {
150
				data.setProperty("shortName", Format.ellipsis(data
150
				data.setProperty("shortName", Format.ellipsis(data
151
						.getProperty("num_image"), 15));
151
						.getProperty("num_image"), 15));
152
			}
152
			}
153
		};
153
		};
154
		dView.setTpl(template);
154
		dView.setTpl(template);
155
		
155
		
156
		// parametre d'affichage de la dataview
156
		// parametre d'affichage de la dataview
157
		this.setAutoScroll(true);
157
		this.setAutoScroll(true);
158
		dView.setAutoHeight(true);
158
		dView.setAutoHeight(true);
159
		dView.setMultiSelect(true);
159
		dView.setMultiSelect(true);
160
		dView.setOverCls("x-view-over");
160
		dView.setOverCls("x-view-over");
161
		dView.setEmptyText("Aucune image à afficher");
161
		dView.setEmptyText("Aucune image à afficher");
162
		
162
		
163
		
163
		
164
		// creation du store
164
		// creation du store
165
		FieldDef defNumImage = new StringFieldDef("num_image");
165
		FieldDef defNumImage = new StringFieldDef("num_image");
166
		FieldDef defUrlImage = new StringFieldDef("url_image");
166
		FieldDef defUrlImage = new StringFieldDef("url_image");
167
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
167
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
168
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
168
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
169
		FieldDef[] defTab = {defNumImage,defUrlImage,defUrlImageM,defUrlImageS};
169
		FieldDef[] defTab = {defNumImage,defUrlImage,defUrlImageM,defUrlImageS};
170
		RecordDef rd = new RecordDef(defTab) ;
170
		RecordDef rd = new RecordDef(defTab) ;
171
		st = new Store(rd) ;
171
		st = new Store(rd) ;
172
		dView.setStore(st);
172
		dView.setStore(st);
173
		
173
		
174
		// ajouts de la gestion des evenements pour la dataview
174
		// ajouts de la gestion des evenements pour la dataview
175
		ajouterListenersDataView();
175
		ajouterListenersDataView();
176
		
176
		
177
		this.add(dView);	
177
		this.add(dView);	
178
		
178
		
179
		getIMediateur().obtenirPhotoGalerie(this);
179
		getIMediateur().obtenirPhotoGalerie(this);
180
	}
180
	}
181
	
181
	
182
	
182
	
183
	
183
	
184
	public void rafraichir(Object nouvelleDonnees) {
184
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
185
		
185
		
186
		if(nouvelleDonnees instanceof ListeImage)
186
		if(nouvelleDonnees instanceof ListeImage)
187
		{
187
		{
188
			ListeImage data = (ListeImage) nouvelleDonnees ;
188
			ListeImage data = (ListeImage) nouvelleDonnees ;
189
			Object[][] photoData = new Object[data.size()][4];
189
			Object[][] photoData = new Object[data.size()][4];
190
			for(int i = 0 ; i<data.size();i++)
190
			for(int i = 0 ; i<data.size();i++)
191
			{
191
			{
192
				ImageCarnet im = (ImageCarnet) data.elementAt(i);
192
				ImageCarnet im = (ImageCarnet) data.elementAt(i);
193
				photoData[i][0] = im.getOrdre() ;
193
				photoData[i][0] = im.getOrdre() ;
194
				photoData[i][1] = im.getUrl() ;
194
				photoData[i][1] = im.getUrl() ;
195
				photoData[i][2] = im.getSUrl() ;
195
				photoData[i][2] = im.getSUrl() ;
196
				photoData[i][3] = im.getMUrl() ;
196
				photoData[i][3] = im.getMUrl() ;
197
			}
197
			}
198
			
198
			
199
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
199
			final MemoryProxy dataProxy = new MemoryProxy(photoData);
200
			final ArrayReader reader = new ArrayReader(new RecordDef(
200
			final ArrayReader reader = new ArrayReader(new RecordDef(
201
					new FieldDef[]{new StringFieldDef("num_image"),
201
					new FieldDef[]{new StringFieldDef("num_image"),
202
							new StringFieldDef("url_image"),
202
							new StringFieldDef("url_image"),
203
							new StringFieldDef("url_image_S"),
203
							new StringFieldDef("url_image_S"),
204
							new StringFieldDef("url_image_M")}));
204
							new StringFieldDef("url_image_M")}));
205
	
205
	
206
			final Store photoStore = new Store(dataProxy, reader);
206
			final Store photoStore = new Store(dataProxy, reader);
207
			photoStore.load();
207
			photoStore.load();
208
	
208
	
209
			st = photoStore;
209
			st = photoStore;
210
			dView.setStore(st);
210
			dView.setStore(st);
211
			dView.refresh();
211
			dView.refresh();
-
 
212
			
-
 
213
			if(repandreRafraichissement)
-
 
214
			{
-
 
215
				getIMediateur().synchroniserZoomListeGalerie(nouvelleDonnees, this) ;
-
 
216
			}
212
		}
217
		}
-
 
218
 
213
	}
219
	}
214
 
220
 
215
 
221
 
216
	public ImageMediateur getIMediateur() {
222
	public ImageMediateur getIMediateur() {
217
		return iMediateur;
223
		return iMediateur;
218
	}
224
	}
219
 
225
 
220
 
226
 
221
	public DataView getDView() {
227
	public DataView getDView() {
222
		return dView;
228
		return dView;
223
	}
229
	}
224
 
230
 
225
 
231
 
226
	public Store getSt() {
232
	public Store getSt() {
227
		return st;
233
		return st;
228
	}
234
	}
229
}
235
}