Subversion Repositories eFlore/Archives.cel-v2

Rev

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

Rev 18 Rev 19
1
package org.tela_botanica.client.image;
1
package org.tela_botanica.client.image;
2
 
2
 
3
import org.tela_botanica.client.interfaces.Rafraichissable;
3
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
4
import org.tela_botanica.client.interfaces.VueListable;
4
import org.tela_botanica.client.vues.GalerieImageVue;
5
import org.tela_botanica.client.vues.GalerieImageVue;
5
import org.tela_botanica.client.vues.ListeImageVue;
6
import org.tela_botanica.client.vues.ListeImageVue;
6
import org.tela_botanica.client.vues.MenuImageVue;
7
import org.tela_botanica.client.vues.MenuImageVue;
7
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
8
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
8
import org.tela_botanica.client.vues.ZoomImageVue;
9
import org.tela_botanica.client.vues.ZoomImageVue;
9
import com.google.gwt.user.client.DOM;
10
import com.google.gwt.user.client.DOM;
10
import com.google.gwt.user.client.Element;
11
import com.google.gwt.user.client.Element;
11
import com.google.gwt.user.client.Event;
12
import com.google.gwt.user.client.Event;
12
import com.google.gwt.user.client.Window;
13
import com.google.gwt.user.client.Window;
13
import com.gwtext.client.core.EventObject;
14
import com.gwtext.client.core.EventObject;
14
import com.gwtext.client.core.Function;
15
import com.gwtext.client.core.Function;
15
import com.gwtext.client.core.RegionPosition;
16
import com.gwtext.client.core.RegionPosition;
16
import com.gwtext.client.data.Record;
17
import com.gwtext.client.data.Record;
17
import com.gwtext.client.data.Store;
18
import com.gwtext.client.data.Store;
18
import com.gwtext.client.widgets.DataView;
19
import com.gwtext.client.widgets.DataView;
19
import com.gwtext.client.widgets.Panel;
20
import com.gwtext.client.widgets.Panel;
20
import com.gwtext.client.widgets.TabPanel;
21
import com.gwtext.client.widgets.TabPanel;
21
import com.gwtext.client.widgets.Tool;
22
import com.gwtext.client.widgets.Tool;
22
import com.gwtext.client.widgets.Tool.ToolType;
23
import com.gwtext.client.widgets.Tool.ToolType;
23
import com.gwtext.client.widgets.layout.BorderLayout;
24
import com.gwtext.client.widgets.layout.BorderLayout;
24
import com.gwtext.client.widgets.layout.BorderLayoutData;
25
import com.gwtext.client.widgets.layout.BorderLayoutData;
25
import com.gwtext.client.widgets.layout.FitLayout;
26
import com.gwtext.client.widgets.layout.FitLayout;
26
 
27
 
27
/**
28
/**
28
 * Mediateur gérant les interactions entre vues et les echanges de données
29
 * Mediateur gérant les interactions entre vues et les echanges de données
29
 * C'est un singleton. 
30
 * C'est un singleton. 
30
 * @author aurelien
31
 * @author aurelien
31
 *
32
 *
32
 */
33
 */
33
public class ImageMediateur {
34
public class ImageMediateur {
34
	
35
	
35
	// cette classe est un singleton
36
	// cette classe est un singleton
36
	private static boolean estInstancie = false ;  
37
	private static boolean estInstancie = false ;  
37
	
38
	
38
	// controleur
39
	// controleur
39
	private ImageModele iModele = null ;
40
	private ImageModele iModele = null ;
40
	
41
	
41
	//widgets
42
	//widgets
42
	
43
	
43
	//Panneau principal des images (onglet "images")
44
	//Panneau principal des images (onglet "images")
44
	private final Panel panneauPrincipalImage = new Panel("Images");
45
	private final Panel panneauPrincipalImage = new Panel("Images");
45
	
46
	
46
	// Panneau à onglet pour la liste, la galerie et la vue en grand
47
	// Panneau à onglet pour la liste, la galerie et la vue en grand
47
	private TabPanel ongletsImage = null ;
48
	private TabPanel ongletsImage = null ;
48
	private Panel panneauMenuEtOngletsImage = null ;
49
	private Panel panneauMenuEtOngletsImage = null ;
49
	
50
	
50
	private GalerieImageVue galerieImage = null ;
51
	private GalerieImageVue galerieImage = null ;
51
	private ListeImageVue listeImage = null ;
52
	private ListeImageVue listeImage = null ;
52
	private ZoomImageVue zoomImage = null ;
53
	private ZoomImageVue zoomImage = null ;
53
	
54
	
54
	// panneau details et mots clés
55
	// panneau details et mots clés
55
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
56
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
56
	
57
	
57
	private MenuImageVue menuImageVue = null ;
58
	private MenuImageVue menuImageVue = null ;
58
	
59
	
59
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
60
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
-
 
61
	
-
 
62
	private int dernierIndexOnglet = 0 ; 
60
	
63
	
61
	public static ImageMediateur Instance()
64
	public static ImageMediateur Instance()
62
	{
65
	{
63
			if(!estInstancie)
66
			if(!estInstancie)
64
			{
67
			{
65
				estInstancie = true ;
68
				estInstancie = true ;
66
				return new ImageMediateur() ;
69
				return new ImageMediateur() ;
67
			}
70
			}
68
			else
71
			else
69
			{
72
			{
70
				return null ;
73
				return null ;
71
			}
74
			}
72
	}
75
	}
73
	
76
	
74
	private ImageMediateur()
77
	private ImageMediateur()
75
	{
78
	{
76
		final BorderLayoutData regionNord = new BorderLayoutData(
79
		final BorderLayoutData regionNord = new BorderLayoutData(
77
				RegionPosition.NORTH) ;
80
				RegionPosition.NORTH) ;
78
		
81
		
79
		final BorderLayoutData regionCentre = new BorderLayoutData(
82
		final BorderLayoutData regionCentre = new BorderLayoutData(
80
				RegionPosition.CENTER) ;
83
				RegionPosition.CENTER) ;
81
 
84
 
82
		final BorderLayoutData regionEst = new BorderLayoutData(
85
		final BorderLayoutData regionEst = new BorderLayoutData(
83
				RegionPosition.EAST);
86
				RegionPosition.EAST);
84
		regionEst.setSplit(true);
87
		regionEst.setSplit(true);
85
 
88
 
86
		
89
		
87
		iModele = ImageModele.Instance(this);
90
		iModele = ImageModele.Instance(this);
88
		
91
		
89
		panneauPrincipalImage.setLayout(new BorderLayout());
92
		panneauPrincipalImage.setLayout(new BorderLayout());
90
		panneauMenuEtOngletsImage = new Panel() ;
93
		panneauMenuEtOngletsImage = new Panel() ;
91
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
94
		panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
92
		
95
		
93
		ongletsImage = new TabPanel();
96
		ongletsImage = new TabPanel();
94
		galerieImage = new GalerieImageVue(this) ;
97
		galerieImage = new GalerieImageVue(this) ;
95
		
98
		
96
		Panel panneauListeImage = new Panel("Liste");
99
		Panel panneauListeImage = new Panel("Liste");
97
		listeImage = new ListeImageVue(this);
100
		listeImage = new ListeImageVue(this);
98
		panneauListeImage.setLayout(new FitLayout());
101
		panneauListeImage.setLayout(new FitLayout());
99
		panneauListeImage.add(listeImage);
102
		panneauListeImage.add(listeImage);
100
		
103
		
101
		zoomImage = new ZoomImageVue(this);
104
		zoomImage = new ZoomImageVue(this);
102
		
105
		
103
		ongletsImage.add(galerieImage);
106
		ongletsImage.add(galerieImage);
104
		ongletsImage.add(zoomImage);
107
		ongletsImage.add(zoomImage);
105
		ongletsImage.add(panneauListeImage);
108
		ongletsImage.add(panneauListeImage);
106
		
109
		
107
		menuImageVue = new MenuImageVue(this) ;
110
		menuImageVue = new MenuImageVue(this) ;
108
		
111
		
109
		detailsEtMotsCles.setWidth("20%");
112
		detailsEtMotsCles.setWidth("20%");
110
		detailsEtMotsCles.setAnimCollapse(true);
113
		detailsEtMotsCles.setAnimCollapse(true);
111
		detailsEtMotsCles.setTitleCollapse(true);
114
		detailsEtMotsCles.setTitleCollapse(true);
112
		detailsEtMotsCles.setCollapsible(true);
115
		detailsEtMotsCles.setCollapsible(true);
113
		
116
		
114
		metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
117
		metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
115
		detailsEtMotsCles.add(metadonneesIptcExif) ;
118
		detailsEtMotsCles.add(metadonneesIptcExif) ;
116
			
119
			
117
		
120
		
118
		//panneauMenuEtOngletsImage.add(menuImageVue,regionNord) ;
121
		//panneauMenuEtOngletsImage.add(menuImageVue,regionNord) ;
119
		panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
122
		panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
120
		
123
		
121
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
124
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
122
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
125
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
123
		
126
		
124
	}
127
	}
125
	
128
	
126
	public String getIdentifiant()
129
	public String getIdentifiant()
127
	{
130
	{
128
		return "0" ;
131
		return "0" ;
129
	}
132
	}
130
 
133
 
131
	public ImageModele getIModele() {
134
	public ImageModele getIModele() {
132
		return iModele;
135
		return iModele;
133
	}
136
	}
134
 
137
 
135
	public Panel getPanneauPrincipalImage() {
138
	public Panel getPanneauPrincipalImage() {
136
		return panneauPrincipalImage;
139
		return panneauPrincipalImage;
137
	}
140
	}
138
 
141
 
139
	public TabPanel getOngletsImage() {
142
	public TabPanel getOngletsImage() {
140
		return ongletsImage;
143
		return ongletsImage;
141
	}
144
	}
142
 
145
 
143
	public GalerieImageVue getGalerieImage() {
146
	public GalerieImageVue getGalerieImage() {
144
		return galerieImage;
147
		return galerieImage;
145
	}
148
	}
146
 
149
 
147
	public ListeImageVue getListeImage() {
150
	public ListeImageVue getListeImage() {
148
		return listeImage;
151
		return listeImage;
149
	}
152
	}
150
 
153
 
151
	public ZoomImageVue getZoomImage() {
154
	public ZoomImageVue getZoomImage() {
152
		return zoomImage;
155
		return zoomImage;
153
	}
156
	}
154
 
157
 
155
	public Panel getDetailsEtMotsCles() {
158
	public Panel getDetailsEtMotsCles() {
156
		return detailsEtMotsCles;
159
		return detailsEtMotsCles;
157
	}
160
	}
158
	
161
	
159
	public void synchroniserZoomListeGalerie(Object o, Rafraichissable r)
162
	public VueListable getVueSelectionnee()
-
 
163
	{
-
 
164
		Panel active = ongletsImage.getActiveTab() ;
-
 
165
		if(active != zoomImage)
-
 
166
		{
-
 
167
			if(active == galerieImage)
-
 
168
			{
-
 
169
				return galerieImage ;
-
 
170
			}
-
 
171
			else
-
 
172
			{
-
 
173
				return listeImage ;
-
 
174
			}
-
 
175
			
-
 
176
		}
-
 
177
		else
-
 
178
		{
-
 
179
			if(dernierIndexOnglet == 0)
-
 
180
			{
-
 
181
				return galerieImage ;
-
 
182
			}
-
 
183
			else
-
 
184
			{
-
 
185
				return listeImage ;
-
 
186
			}
-
 
187
 
-
 
188
		}
160
	{
189
		
-
 
190
	}
-
 
191
	
161
		
192
	public void synchroniserZoomListeGalerie(Object o, Rafraichissable r)
162
		
193
	{		
163
		getIModele().rafraichirListeImage(o) ;
194
		getIModele().rafraichirListeImage(o) ;
164
		
195
		
165
		if(r != getGalerieImage())
196
		if(r != getGalerieImage())
166
		{
197
		{
167
			getGalerieImage().rafraichir(o,false);
198
			getGalerieImage().rafraichir(o,false);
168
		}
199
		}
169
		if(r != getZoomImage())
200
		if(r != getZoomImage())
170
		{
201
		{
171
			getZoomImage().rafraichir(o,false);
202
			getZoomImage().rafraichir(o,false);
172
		}
203
		}
173
		if(r != getListeImage())
204
		if(r != getListeImage())
174
		{
205
		{
175
			getListeImage().rafraichir(o,false);
206
			getListeImage().rafraichir(o,false);
176
		}
207
		}	
177
		
-
 
178
	}
208
	}
179
	
209
	
180
	
210
	
181
	public void obtenirPhotoGalerie(Rafraichissable r)
211
	public void obtenirPhotoGalerie(Rafraichissable r)
182
	{
212
	{
183
		getIModele().obtenirPhotoGalerie(r) ;
213
		getIModele().obtenirPhotoGalerie(r) ;
184
	}
214
	}
185
	
215
	
186
	public void obtenirMetadonnees(Rafraichissable r, String id)
216
	public void obtenirMetadonnees(Rafraichissable r, String id)
187
	{
217
	{
188
		getIModele().obtenirMetadonnees(r, id) ;
218
		getIModele().obtenirMetadonnees(r, id) ;
189
	}
219
	}
190
	
220
	
191
	public void mettreAJourInfo(String commentaires, String date)
221
	public void mettreAJourInfo(String commentaires, String date)
192
	{
222
	{
193
		String ids[] = getGalerieImage().getIdSelectionnee() ;
223
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
194
		
224
		
195
			getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
225
			getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
196
	}
226
	}
197
	
227
	
198
	public void uploaderImage()
228
	public void uploaderImages()
199
	{
229
	{
200
		getIModele().uploaderImages() ;
230
		getIModele().uploaderImages() ;
201
	}
231
	}
202
	
232
	
203
	public void clicGalerieImage(int index, Element node,
233
	public void clicGalerieImage(int index, Element node,
204
			EventObject e)
234
			EventObject e)
205
	{
235
	{
206
		Record rd = getGalerieImage().getDView().getRecord(node) ;
236
		Record rd = getGalerieImage().getDView().getRecord(node) ;
207
		String imgUrl = rd.getAsString("url_image"); 
237
		String imgUrl = rd.getAsString("url_image"); 
208
		
238
		
209
		getZoomImage().rafraichir(imgUrl,false);
239
		getZoomImage().rafraichir(imgUrl,false);
-
 
240
		dernierIndexOnglet = 0 ;
210
		
241
		
211
		if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
242
		if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
212
		{
243
		{
-
 
244
 
213
			getOngletsImage().setActiveTab(1);
245
			getOngletsImage().setActiveTab(1);
214
		}
246
		}
215
		
247
		
216
		String imgNum = rd.getAsString("num_image");
248
		String imgNum = rd.getAsString("num_image");
217
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
249
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
218
	}
250
	}
-
 
251
	
-
 
252
	public void clicListeImage(int rowIndex,
-
 
253
			EventObject e)
-
 
254
	{
-
 
255
		Record rd = getListeImage().getSelectionModel().getSelected() ;
-
 
256
		String imgUrl = rd.getAsString("url_image");
-
 
257
		
-
 
258
		getZoomImage().rafraichir(imgUrl,false);
-
 
259
		
-
 
260
		dernierIndexOnglet = 2 ;
-
 
261
		
-
 
262
		String imgNum = rd.getAsString("num_image");
-
 
263
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
-
 
264
	}
-
 
265
	
-
 
266
	public void doubleClicListeImage(int rowIndex,
-
 
267
			EventObject e)
-
 
268
	{
-
 
269
		clicListeImage(rowIndex, e) ;
-
 
270
		getOngletsImage().setActiveTab(1);
-
 
271
	}
219
	
272
	
220
	public void rafraichirToutesVues()
273
	public void rafraichirToutesVues()
221
	{
274
	{
222
		obtenirPhotoGalerie(getGalerieImage());
275
		obtenirPhotoGalerie(getGalerieImage());
223
	}
276
	}
224
	
277
	
225
	public void montrerContextMenu(EventObject e)
278
	public void montrerContextMenu(EventObject e)
226
	{
279
	{
227
		menuImageVue.showAt(e.getXY()) ;
280
		menuImageVue.showAt(e.getXY()) ;
228
	}
281
	}
229
	
282
	
230
	public void doubleClicZoomImage()
283
	public void doubleClicZoomImage()
231
	{
284
	{
232
		getOngletsImage().setActiveTab(0);
285
		getOngletsImage().setActiveTab(dernierIndexOnglet);
233
	}
286
	}
234
	
287
	
235
	public void clicBoutonZoomImage(String arg)
288
	public void clicBoutonZoomImage(String arg)
236
	{
289
	{
-
 
290
		
237
		
291
		Store st ;
238
		DataView dv = getGalerieImage().getDView();
292
		int selected ;
239
		Store st = getGalerieImage().getSt();
293
		int storeIndex ;
-
 
294
		Record nRec = null ;
-
 
295
		
-
 
296
		if(getVueSelectionnee() == galerieImage)
-
 
297
		{
-
 
298
			DataView dv = getGalerieImage().getDView();
240
		Record nRec = null ;
299
			st = getGalerieImage().getSt();
241
		
300
			
-
 
301
			selected = st.indexOf(dv.getSelectedRecords()[0]);
-
 
302
			storeIndex = dv.indexOf(selected);
-
 
303
		}
-
 
304
		else
-
 
305
		{
-
 
306
			st = listeImage.getSt() ;
242
		final int selected = st.indexOf(dv.getSelectedRecords()[0]);
307
			selected = st.indexOf(listeImage.getSelectionModel().getSelected()) ;
243
		int storeIndex = dv.indexOf(selected);
308
			storeIndex = selected ;
244
		
309
		}
245
		
310
		
246
		if(arg.equals("prev"))
311
		if(arg.equals("prev"))
247
		{
312
		{
248
			// si la photo séléctionnée est la première, on passe à la
313
			// si la photo séléctionnée est la première, on passe à la
249
			// dernière
314
			// dernière
250
			if (selected == 0) {
315
			if (selected == 0) {
251
				storeIndex = st.getCount() - 1 ;
316
				storeIndex = st.getCount() - 1 ;
252
				nRec = st.getAt(storeIndex);
317
				nRec = st.getAt(storeIndex);
253
	
318
	
254
			} 
319
			} 
255
			else 
320
			else 
256
			{
321
			{
257
				storeIndex = storeIndex - 1 ;
322
				storeIndex = storeIndex - 1 ;
258
				nRec = st.getAt(storeIndex);
323
				nRec = st.getAt(storeIndex);
259
			}
324
			}
260
			
325
			
261
			
326
			
262
		}
327
		}
263
		
328
		
264
		if(arg.equals("suiv"))
329
		if(arg.equals("suiv"))
265
		{
330
		{
266
			// si la photo selectionnée est la dernière on passe à la
331
			// si la photo selectionnée est la dernière on passe à la
267
			// première
332
			// première
268
			if (selected == st.getCount() - 1) {
333
			if (selected == st.getCount() - 1) {
269
				
334
				
270
				storeIndex = 0 ;
335
				storeIndex = 0 ;
271
				nRec = st.getAt(0);
336
				nRec = st.getAt(0);
272
			} 
337
			} 
273
			else 
338
			else 
274
			{
339
			{
275
				storeIndex = storeIndex + 1 ;
340
				storeIndex = storeIndex + 1 ;
276
				nRec = st.getAt(storeIndex);
341
				nRec = st.getAt(storeIndex);
277
			}
342
			}
278
		}
343
		}
279
		
344
		
280
		if(nRec != null)
345
		if(nRec != null)
281
		{
346
		{
-
 
347
			
282
			getZoomImage().rafraichir(nRec.getAsString("url_image"),false);
348
			getZoomImage().rafraichir(nRec.getAsString("url_image"),false);
-
 
349
			if(getGalerieImage().isRendered())
-
 
350
			{
283
			dv.select(storeIndex);
351
				getGalerieImage().getDView().select(storeIndex);
-
 
352
			}
-
 
353
			
-
 
354
			if(getListeImage().isRendered())
-
 
355
			{
-
 
356
				getListeImage().getSelectionModel().selectRecords(nRec) ;
-
 
357
			}
284
			
358
			
285
			String imgNum = nRec.getAsString("num_image");
359
			String imgNum = nRec.getAsString("num_image");
286
			obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
360
			obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
287
		}
361
		}
288
	}
362
	}
289
	
363
	
290
	
364
	
291
 
365
 
292
}
366
}