Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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