Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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