Subversion Repositories eFlore/Archives.cel-v2

Rev

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

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