Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 735 Rev 973
1
package org.tela_botanica.client.vues.observation.indicateurs;
1
package org.tela_botanica.client.vues.observation.indicateurs;
2
 
2
 
3
import org.tela_botanica.client.interfaces.Rafraichissable;
3
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.modeles.Configuration;
4
import org.tela_botanica.client.modeles.Configuration;
5
import org.tela_botanica.client.modeles.ImageCarnet;
5
import org.tela_botanica.client.modeles.ImageCarnet;
6
import org.tela_botanica.client.observation.ObservationMediateur;
6
import org.tela_botanica.client.observation.ObservationMediateur;
7
 
7
 
8
import com.google.gwt.event.dom.client.ClickEvent;
8
import com.google.gwt.event.dom.client.ClickEvent;
9
import com.google.gwt.event.dom.client.ClickHandler;
9
import com.google.gwt.event.dom.client.ClickHandler;
10
import com.google.gwt.event.dom.client.LoadEvent;
10
import com.google.gwt.event.dom.client.LoadEvent;
11
import com.google.gwt.event.dom.client.LoadHandler;
11
import com.google.gwt.event.dom.client.LoadHandler;
12
import com.google.gwt.user.client.DOM;
12
import com.google.gwt.user.client.DOM;
13
import com.google.gwt.user.client.Event;
13
import com.google.gwt.user.client.Event;
14
import com.google.gwt.user.client.Window;
14
import com.google.gwt.user.client.Window;
15
import com.google.gwt.user.client.ui.ClickListener;
15
import com.google.gwt.user.client.ui.ClickListener;
16
import com.google.gwt.user.client.ui.Image;
16
import com.google.gwt.user.client.ui.Image;
17
import com.google.gwt.user.client.ui.LoadListener;
17
import com.google.gwt.user.client.ui.LoadListener;
18
import com.google.gwt.user.client.ui.Widget;
18
import com.google.gwt.user.client.ui.Widget;
19
import com.gwtext.client.core.AnimationConfig;
19
import com.gwtext.client.core.AnimationConfig;
20
import com.gwtext.client.core.EventObject;
20
import com.gwtext.client.core.EventObject;
21
import com.gwtext.client.core.Ext;
21
import com.gwtext.client.core.Ext;
22
import com.gwtext.client.core.ExtElement;
22
import com.gwtext.client.core.ExtElement;
23
import com.gwtext.client.core.RegionPosition;
23
import com.gwtext.client.core.RegionPosition;
24
import com.gwtext.client.widgets.Panel;
24
import com.gwtext.client.widgets.Panel;
25
import com.gwtext.client.widgets.ToolTip;
25
import com.gwtext.client.widgets.ToolTip;
26
import com.gwtext.client.widgets.layout.BorderLayout;
26
import com.gwtext.client.widgets.layout.BorderLayout;
27
import com.gwtext.client.widgets.layout.BorderLayoutData;
27
import com.gwtext.client.widgets.layout.BorderLayoutData;
28
import com.gwtext.client.widgets.menu.BaseItem;
28
import com.gwtext.client.widgets.menu.BaseItem;
29
import com.gwtext.client.widgets.menu.Item;
29
import com.gwtext.client.widgets.menu.Item;
30
import com.gwtext.client.widgets.menu.Menu;
30
import com.gwtext.client.widgets.menu.Menu;
31
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
31
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
32
 
32
 
33
/**
33
/**
34
 * Panneau d'affichage d'une image avec des boutons précdents et suivant
34
 * Panneau d'affichage d'une image avec des boutons précdents et suivant
35
 * 
35
 * 
36
 * @author aurelien
36
 * @author aurelien
37
 * 
37
 * 
38
 */
38
 */
39
public class MiniZoomImageVue extends Panel implements Rafraichissable {
39
public class MiniZoomImageVue extends Panel implements Rafraichissable {
40
 
40
 
41
	/**
41
	/**
42
	 * Le médiateur associé à la vue
42
	 * Le médiateur associé à la vue
43
	 */
43
	 */
44
	private ObservationMediateur oMediateur = null;
44
	private ObservationMediateur oMediateur = null;
45
	
45
	
46
	/**
46
	/**
47
	 * Le titre du panneau
47
	 * Le titre du panneau
48
	 */
48
	 */
49
	private static String titrePanneau = "Images liées";
49
	private static String titrePanneau = "Images liées";
50
 
50
 
51
	/**
51
	/**
52
	 * Panneau conteneur pour l'image
52
	 * Panneau conteneur pour l'image
53
	 */
53
	 */
54
	private Panel imageConteneur = null;
54
	private Panel imageConteneur = null;
55
	/**
55
	/**
56
	 * l'image à afficher
56
	 * l'image à afficher
57
	 */
57
	 */
58
	private Image image = new Image("");
58
	private Image image = new Image("");
59
	/**
59
	/**
60
	 * Bouton précédent
60
	 * Bouton précédent
61
	 */
61
	 */
62
	private final com.google.gwt.user.client.ui.Button prev = new com.google.gwt.user.client.ui.Button();
62
	private final com.google.gwt.user.client.ui.Button prev = new com.google.gwt.user.client.ui.Button();
63
	/**
63
	/**
64
	 * Bouton suivant
64
	 * Bouton suivant
65
	 */
65
	 */
66
	private final com.google.gwt.user.client.ui.Button suiv = new com.google.gwt.user.client.ui.Button();
66
	private final com.google.gwt.user.client.ui.Button suiv = new com.google.gwt.user.client.ui.Button();
67
 
67
 
68
	/**
68
	/**
69
	 * Taille originale Y de l'image
69
	 * Taille originale Y de l'image
70
	 */
70
	 */
71
	private int imageHeight = 0;
71
	private int imageHeight = 0;
72
 
72
 
73
	/**
73
	/**
74
	 * Taille originale X de l'image
74
	 * Taille originale X de l'image
75
	 */
75
	 */
76
	private int imageWidth = 0;
76
	private int imageWidth = 0;
77
	
77
	
78
	/**
78
	/**
79
	 * Identifiant de l'image
79
	 * Identifiant de l'image
80
	 */
80
	 */
81
	private String idImage = "0" ;
81
	private String idImage = "0" ;
82
	
82
	
83
	private String[] infosImages[] = null ;
83
	private String[] infosImages[] = null ;
84
	
84
	
85
	private int index = 0 ;
85
	private int index = 0 ;
86
 
86
 
87
	/**
87
	/**
88
	 * true pour animer les transitions
88
	 * true pour animer les transitions
89
	 */
89
	 */
90
	private boolean animerTransition = false;
90
	private boolean animerTransition = false;
91
	/**
91
	/**
92
	 * Détermine la durée de la transition
92
	 * Détermine la durée de la transition
93
	 */
93
	 */
94
	private float dureeAnimation = (float) 0.15;
94
	private float dureeAnimation = (float) 0.15;
95
	
95
	
96
	/**
96
	/**
97
	 * Booleen d'initalisation général
97
	 * Booleen d'initalisation général
98
	 */
98
	 */
99
	private boolean initialise = false;
99
	private boolean initialise = false;
100
 
100
 
101
	/**
101
	/**
102
	 * Booleen d'initalisation du conteneur d'image
102
	 * Booleen d'initalisation du conteneur d'image
103
	 */
103
	 */
104
	private boolean conteneurInitialise = false;
104
	private boolean conteneurInitialise = false;
105
	
105
	
106
	private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour agrandir l'image </div>") ;
106
	private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour agrandir l'image </div>") ;
107
	
107
	
108
	com.gwtext.client.widgets.Window imgZoom = new com.gwtext.client.widgets.Window("Agrandissement") ;
108
	com.gwtext.client.widgets.Window imgZoom = new com.gwtext.client.widgets.Window("Agrandissement") ;
109
	
109
	
110
	Image imgAgrandie = null;
110
	Image imgAgrandie = null;
111
 
111
 
112
	/**
112
	/**
113
	 * Constructeur sans argument (privé car ne doit être utilisé)
113
	 * Constructeur sans argument (privé car ne doit être utilisé)
114
	 */
114
	 */
115
	@SuppressWarnings("unused")
115
	@SuppressWarnings("unused")
116
	private MiniZoomImageVue() {
116
	private MiniZoomImageVue() {
117
		super();
117
		super();
118
	}
118
	}
119
 
119
 
120
	/**
120
	/**
121
	 * Constructeur avec argument
121
	 * Constructeur avec argument
122
	 * 
122
	 * 
123
	 * @param im
123
	 * @param im
124
	 *            le médiateur à associer à la vue
124
	 *            le médiateur à associer à la vue
125
	 */
125
	 */
126
	public MiniZoomImageVue(ObservationMediateur im) {
126
	public MiniZoomImageVue(ObservationMediateur im) {
127
		super(titrePanneau);
127
		super(titrePanneau);
128
		setId("x-view-mini-zoom-panel");
128
		setId("x-view-mini-zoom-panel");
129
		// on associe le médiateur
129
		// on associe le médiateur
130
		oMediateur = im;
130
		oMediateur = im;
131
 
131
 
132
		prev.setStylePrimaryName("x-view-zoom-button-p");
132
		prev.setStylePrimaryName("x-view-zoom-button-p");
133
		suiv.setStylePrimaryName("x-view-zoom-button-s");
133
		suiv.setStylePrimaryName("x-view-zoom-button-s");
134
 
134
 
135
		imgZoom.setCloseAction(com.gwtext.client.widgets.Window.HIDE) ;
135
		imgZoom.setCloseAction(com.gwtext.client.widgets.Window.HIDE) ;
136
		imgZoom.setConstrain(true);
136
		imgZoom.setConstrain(true);
137
		
137
		
138
		// on crée une image qui gère le double clic et la roulette de la souris
138
		// on crée une image qui gère le double clic et la roulette de la souris
139
		image = new Image() {
139
		image = new Image() {
140
 
140
 
141
			public void onBrowserEvent(Event event) {
141
			public void onBrowserEvent(Event event) {
142
 
142
 
143
				// lors d'un déplacement de la roulette
143
				// lors d'un déplacement de la roulette
144
				if (Event.ONMOUSEWHEEL == DOM.eventGetType(event)) {
144
				if (Event.ONMOUSEWHEEL == DOM.eventGetType(event)) {
145
 
145
 
146
					// on simule un clic sur le bouton précédent
146
					// on simule un clic sur le bouton précédent
147
					if (event.getMouseWheelVelocityY() >= 1) {
147
					if (event.getMouseWheelVelocityY() >= 1) {
148
						prev.click();
148
						prev.click();
149
					}
149
					}
150
 
150
 
151
					// ou suivant
151
					// ou suivant
152
					if (event.getMouseWheelVelocityY() <= -1) {
152
					if (event.getMouseWheelVelocityY() <= -1) {
153
						suiv.click();
153
						suiv.click();
154
					}
154
					}
155
				}
155
				}
156
				
156
				
157
				if(Event.ONCONTEXTMENU == DOM.eventGetType(event)) {
157
				if(Event.ONCONTEXTMENU == DOM.eventGetType(event)) {
158
					
158
					
159
					event.preventDefault() ;
159
					event.preventDefault() ;
160
					int[] xy = {event.getClientX(),event.getClientY()} ;
160
					int[] xy = {event.getClientX(),event.getClientY()} ;
161
					afficherMenu(xy) ;
161
					afficherMenu(xy) ;
162
				}
162
				}
163
				
163
				
164
				// lors du double clic
164
				// lors du double clic
165
				if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
165
				if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
166
					if(imgZoom.isVisible()) {
166
					if(imgZoom.isVisible()) {
167
							imgZoom.hide();
167
							imgZoom.hide();
168
					} else {
168
					} else {
169
						afficherPanneauAgrandi();
169
						afficherPanneauAgrandi();
170
					}
170
					}
171
				}
171
				}
172
			}
172
			}
173
			
173
			
174
		};
174
		};
175
		
175
		
176
		image.setPixelSize(150, 150);
176
		image.setPixelSize(150, 150);
177
		
177
		
178
		infosImages = new String[0][0] ;
178
		infosImages = new String[0][0] ;
179
 
179
 
180
		this.setHeader(true);
180
		this.setHeader(true);
181
 
181
 
182
		imageConteneur = new Panel() ;
182
		imageConteneur = new Panel() ;
183
		imageConteneur.setBorder(false);
183
		imageConteneur.setBorder(false);
184
 
184
 
185
		imageConteneur.add(image);
185
		imageConteneur.add(image);
186
		imageConteneur.setId("x-view-mini-zoom-img");
186
		imageConteneur.setId("x-view-mini-zoom-img");
187
 
187
 
188
		// il n'existe pas de méthode pour ajouter un listener pour le double
188
		// il n'existe pas de méthode pour ajouter un listener pour le double
189
		// clic sur une image
189
		// clic sur une image
190
		// alors on lui dit manuellement de capter l'évènement double clic
190
		// alors on lui dit manuellement de capter l'évènement double clic
191
		image.sinkEvents(Event.ONDBLCLICK);
191
		image.sinkEvents(Event.ONDBLCLICK);
192
		image.sinkEvents(Event.ONMOUSEWHEEL);
192
		image.sinkEvents(Event.ONMOUSEWHEEL);
193
		image.sinkEvents(Event.ONCONTEXTMENU) ;
193
		image.sinkEvents(Event.ONCONTEXTMENU) ;
194
 
194
 
195
		// l'image de base est vide
195
		// l'image de base est vide
196
		image.setUrl("");
196
		image.setUrl("");
197
 
197
 
198
		this.setLayout(new BorderLayout());
198
		this.setLayout(new BorderLayout());
199
 
199
 
200
		prev.setWidth("15%");
200
		prev.setWidth("15%");
201
		suiv.setWidth("15%");
201
		suiv.setWidth("15%");
202
 
202
 
203
		this.add(prev, new BorderLayoutData(RegionPosition.WEST));
203
		this.add(prev, new BorderLayoutData(RegionPosition.WEST));
204
		this.add(imageConteneur, new BorderLayoutData(RegionPosition.CENTER));
204
		this.add(imageConteneur, new BorderLayoutData(RegionPosition.CENTER));
205
		this.add(suiv, new BorderLayoutData(RegionPosition.EAST));
205
		this.add(suiv, new BorderLayoutData(RegionPosition.EAST));
206
 
206
 
207
		imageConteneur.setMaskDisabled(true);
207
		imageConteneur.setMaskDisabled(true);
208
		this.setBorder(false);
208
		this.setBorder(false);
209
 
209
 
210
		conteneurInitialise = true;
210
		conteneurInitialise = true;
211
		initialise = true;
211
		initialise = true;
212
 
212
 
213
		// on ajoute les listeners
213
		// on ajoute les listeners
214
		ajouterListeners();
214
		ajouterListeners();
215
 
215
 
216
	}
216
	}
217
 
217
 
218
	/**
218
	/**
219
	 * Méthode héritée de l'interface rafraichissable
219
	 * Méthode héritée de l'interface rafraichissable
220
	 * 
220
	 * 
221
	 * @param nouvelleDonnees
221
	 * @param nouvelleDonnees
222
	 *            les nouvelles données
222
	 *            les nouvelles données
223
	 * @param repandreRafraichissement
223
	 * @param repandreRafraichissement
224
	 *            le booleen qui dit si on doit répnadre l'évènement
224
	 *            le booleen qui dit si on doit répnadre l'évènement
225
	 */
225
	 */
226
	public void rafraichir(Object nouvelleDonnees,
226
	public void rafraichir(Object nouvelleDonnees,
227
			boolean repandreRafraichissement) {
227
			boolean repandreRafraichissement) {
228
 
228
 
229
		// si on reçoit une string
229
		// si on reçoit une string
230
		if (nouvelleDonnees instanceof String[][] && initialise
230
		if (nouvelleDonnees instanceof String[][] && initialise
231
				&& conteneurInitialise && ((String[][])nouvelleDonnees).length != 0) {
231
				&& conteneurInitialise && ((String[][])nouvelleDonnees).length != 0) {
232
			infosImages = (String[][]) nouvelleDonnees;
232
			infosImages = (String[][]) nouvelleDonnees;
233
			index = 0 ;
233
			index = 0 ;
234
			afficherImage() ;
234
			afficherImage() ;
235
			
235
			
236
		} else {
236
		} else {
237
			// sinon on met une image vide
237
			// sinon on met une image vide
238
			infosImages = null ;
238
			infosImages = null ;
239
			afficherImage();
239
			afficherImage();
240
			
240
			
241
		}
241
		}
242
	}
242
	}
243
 
243
 
244
	public void afficherImage()
244
	public void afficherImage()
245
	{
245
	{
246
		// c'est l'url de l'image qu'on associe à la vue
246
		// c'est l'url de l'image qu'on associe à la vue
247
		if(infosImages != null && infosImages.length != 0)
247
		if(infosImages != null && infosImages.length != 0)
248
		{
248
		{
249
			setTitle(titrePanneau+"         "+(index+1)+" / "+infosImages.length);
249
			setTitle(titrePanneau+"         "+(index+1)+" / "+infosImages.length);
250
			
250
			
251
			getImage().setUrl(getUrlMiniature(index));
251
			getImage().setUrl(getUrlMiniature(index));
252
			imageWidth = Integer.parseInt(infosImages[index][1]);
252
			imageWidth = Integer.parseInt(infosImages[index][1]);
253
			imageHeight = Integer.parseInt(infosImages[index][2]);
253
			imageHeight = Integer.parseInt(infosImages[index][2]);
254
			verifierEtRetaillerImage();
254
			verifierEtRetaillerImage();
255
			activerPanneau(true);
255
			activerPanneau(true);
256
		} else {
256
		} else {
257
			setTitle(titrePanneau);
257
			setTitle(titrePanneau);
258
			getImage().setUrl("ill_liaison.png");
258
			getImage().setUrl("ill_liaison.png");
259
			imageWidth = getImage().getWidth();
259
			imageWidth = getImage().getWidth();
260
			imageHeight = getImage().getHeight();
260
			imageHeight = getImage().getHeight();
261
			if(imgZoom.isVisible()) {
261
			if(imgZoom.isVisible()) {
262
				agrandirImage();
262
				agrandirImage();
263
			}
263
			}
264
			activerPanneau(false);
264
			activerPanneau(false);
265
		}
265
		}
266
		
266
		
267
		if(infosImages != null && infosImages.length > 1) {
267
		if(infosImages != null && infosImages.length > 1) {
268
			prev.setEnabled(true);
268
			prev.setEnabled(true);
269
			suiv.setEnabled(true);
269
			suiv.setEnabled(true);
270
		} else {
270
		} else {
271
			prev.setEnabled(false);
271
			prev.setEnabled(false);
272
			suiv.setEnabled(false);
272
			suiv.setEnabled(false);
273
		}
273
		}
274
	}
274
	}
275
 
275
 
276
	/**
276
	/**
277
	 * Active visuellement le panneau et les boutons
277
	 * Active visuellement le panneau et les boutons
278
	 */
278
	 */
279
	public void activerPanneau(boolean activer) {
279
	public void activerPanneau(boolean activer) {
280
		if(activer) {
280
		if(activer) {
281
			this.getEl().unmask();
281
			this.getEl().unmask();
282
		} else {
282
		} else {
283
			this.getEl().mask();
283
			this.getEl().mask();
284
		}
284
		}
285
	}
285
	}
286
 
286
 
287
	/**
287
	/**
288
	 * Ajoute les listeners pour la gestions d'évènement
288
	 * Ajoute les listeners pour la gestions d'évènement
289
	 */
289
	 */
290
	public void ajouterListeners() {
290
	public void ajouterListeners() {
291
 
291
 
292
		// gestion du clic sur le bouton précedent
292
		// gestion du clic sur le bouton précedent
293
		prev.addClickHandler(new ClickHandler() {
293
		prev.addClickHandler(new ClickHandler() {
294
 
294
 
295
			public void onClick(ClickEvent event) {
295
			public void onClick(ClickEvent event) {
296
				if(infosImages.length != 0) {
296
				if(infosImages.length != 0) {
297
					if(index == 0)
297
					if(index == 0)
298
					{
298
					{
299
						index = infosImages.length - 1 ;
299
						index = infosImages.length - 1 ;
300
					}
300
					}
301
					else
301
					else
302
					{
302
					{
303
						index-- ;
303
						index-- ;
304
					}
304
					}
305
									
305
									
306
					afficherImage() ;
306
					afficherImage() ;
307
				}
307
				}
308
			}
308
			}
309
 
309
 
310
		});
310
		});
311
 
311
 
312
		// gestion du clic sur le bouton suivant
312
		// gestion du clic sur le bouton suivant
313
		suiv.addClickHandler(new ClickHandler() {
313
		suiv.addClickHandler(new ClickHandler() {
314
 
314
 
315
			// en cas de clic
315
			// en cas de clic
316
			public void onClick(ClickEvent event) {
316
			public void onClick(ClickEvent event) {
317
				
317
				
318
				if(infosImages.length != 0) {
318
				if(infosImages.length != 0) {
319
					if(index == infosImages.length - 1)
319
					if(index == infosImages.length - 1)
320
					{
320
					{
321
						index = 0 ;
321
						index = 0 ;
322
					}
322
					}
323
					else
323
					else
324
					{
324
					{
325
						index++ ;
325
						index++ ;
326
					}
326
					}
327
									
327
									
328
					afficherImage() ;
328
					afficherImage() ;
329
				}
329
				}
330
					
330
					
331
			}
331
			}
332
 
332
 
333
		});
333
		});
334
		
334
		
335
	}
335
	}
336
 
336
 
337
	/**
337
	/**
338
	 * Accesseur pour le médiateur
338
	 * Accesseur pour le médiateur
339
	 * 
339
	 * 
340
	 * @return le médiateur associé à la vue
340
	 * @return le médiateur associé à la vue
341
	 */
341
	 */
342
	public ObservationMediateur getIMediateur() {
342
	public ObservationMediateur getIMediateur() {
343
		return oMediateur;
343
		return oMediateur;
344
	}
344
	}
345
 
345
 
346
	/**
346
	/**
347
	 * Accesseur au conteneur de l'image
347
	 * Accesseur au conteneur de l'image
348
	 * 
348
	 * 
349
	 * @return le conteneur de l'image
349
	 * @return le conteneur de l'image
350
	 */
350
	 */
351
	public Image getImage() {
351
	public Image getImage() {
352
		return image;
352
		return image;
353
	}
353
	}
354
	
354
	
355
	/**
355
	/**
356
	 * Acesseurs pour l'identifiant de l'image
356
	 * Acesseurs pour l'identifiant de l'image
357
	 * @return l'id de l'image
357
	 * @return l'id de l'image
358
	 */
358
	 */
359
	public String getIdImage()
359
	public String getIdImage()
360
	{
360
	{
361
		return infosImages[index][0] ;
361
		return infosImages[index][0] ;
362
	}
362
	}
363
 
363
 
364
	/**
364
	/**
365
	 * Accesseur pour le bouton précédent
365
	 * Accesseur pour le bouton précédent
366
	 * 
366
	 * 
367
	 * @return le bouton précédent
367
	 * @return le bouton précédent
368
	 */
368
	 */
369
	public com.google.gwt.user.client.ui.Button getPrev() {
369
	public com.google.gwt.user.client.ui.Button getPrev() {
370
		return prev;
370
		return prev;
371
	}
371
	}
372
 
372
 
373
	/**
373
	/**
374
	 * Accesseur pour le bouton suivant
374
	 * Accesseur pour le bouton suivant
375
	 * 
375
	 * 
376
	 * @return le bouton suivant
376
	 * @return le bouton suivant
377
	 */
377
	 */
378
	public com.google.gwt.user.client.ui.Button getSuiv() {
378
	public com.google.gwt.user.client.ui.Button getSuiv() {
379
		return suiv;
379
		return suiv;
380
	}
380
	}
381
 
381
 
382
	/**
382
	/**
383
	 * Setter pour la taille de l'image
383
	 * Setter pour la taille de l'image
384
	 * 
384
	 * 
385
	 * @param x
385
	 * @param x
386
	 *            la largeur en pixels
386
	 *            la largeur en pixels
387
	 * @param y
387
	 * @param y
388
	 *            la hauteur en pixels
388
	 *            la hauteur en pixels
389
	 */
389
	 */
390
	public void setTailleImage(int x, int y) {
390
	public void setTailleImage(int x, int y) {
391
		imageHeight = y;
391
		imageHeight = y;
392
		imageWidth = x;
392
		imageWidth = x;
393
	}
393
	}
394
	
394
	
395
	/**
395
	/**
396
	 * Setteur pour l'identifiant de l'image
396
	 * Setteur pour l'identifiant de l'image
397
	 * @param id le nouvel identifiant
397
	 * @param id le nouvel identifiant
398
	 */
398
	 */
399
	public void setIdImage(String id)
399
	public void setIdImage(String id)
400
	{
400
	{
401
		idImage = id ;
401
		idImage = id ;
402
	}
402
	}
403
 
403
 
404
	/**
404
	/**
405
	 * renvoie la taille originale de l'image
405
	 * renvoie la taille originale de l'image
406
	 * 
406
	 * 
407
	 * @return un tableau de deux entiers contenant la largeur puis la hauteur
407
	 * @return un tableau de deux entiers contenant la largeur puis la hauteur
408
	 */
408
	 */
409
	public int[] getTailleImage() {
409
	public int[] getTailleImage() {
410
		int[] taille = { imageHeight, imageWidth };
410
		int[] taille = { imageHeight, imageWidth };
411
 
411
 
412
		return taille;
412
		return taille;
413
	}
413
	}
414
	
414
	
415
	/**
415
	/**
416
	 * Accesseur pour le conteneur de l'image
416
	 * Accesseur pour le conteneur de l'image
417
	 * @return le conteur de l'image
417
	 * @return le conteur de l'image
418
	 */
418
	 */
419
	public Panel getImageConteneur() {
419
	public Panel getImageConteneur() {
420
 
420
 
421
		return imageConteneur;
421
		return imageConteneur;
422
 
422
 
423
	}
423
	}
424
 
424
 
425
	public void raz() {
425
	public void raz() {
426
		
426
		
427
		infosImages = new String[0][0] ;
427
		infosImages = new String[0][0] ;
428
		getImage().setUrl("");
428
		getImage().setUrl("");
429
		
429
		
430
	}
430
	}
431
	
431
	
432
	public void supprimerLiaisonImage() {
432
	public void supprimerLiaisonImage() {
433
		
433
		
434
		if(infosImages.length > 0) {
434
		if(infosImages.length > 0) {
435
			
435
			
436
			getImage().setUrl("") ;
436
			getImage().setUrl("") ;
437
			int nouvelleTaille = infosImages.length - 1 ;
437
			int nouvelleTaille = infosImages.length - 1 ;
438
			int indexSupp = index ;
438
			int indexSupp = index ;
439
			
439
			
440
			String[][] nouveauInfosImages = new String[nouvelleTaille][3] ;
440
			String[][] nouveauInfosImages = new String[nouvelleTaille][3] ;
441
			int j = 0 ;
441
			int j = 0 ;
442
			
442
			
443
			for(int i = 0 ; i < infosImages.length ; i++) {
443
			for(int i = 0 ; i < infosImages.length ; i++) {
444
				
444
				
445
				if(i != indexSupp) {
445
				if(i != indexSupp) {
446
					
446
					
447
					nouveauInfosImages[j] = infosImages[i] ;
447
					nouveauInfosImages[j] = infosImages[i] ;
448
					j++ ;
448
					j++ ;
449
				}
449
				}
450
			}
450
			}
451
			
451
			
452
			infosImages = nouveauInfosImages ;
452
			infosImages = nouveauInfosImages ;
453
			index = 0 ;
453
			index = 0 ;
454
			
454
			
455
			afficherImage() ;
455
			afficherImage() ;
456
		}
456
		}
457
	}
457
	}
458
	
458
	
459
	public void afficherMenu(int[] xy) {
459
	public void afficherMenu(int[] xy) {
460
		
460
		
461
		Menu mn = new Menu() ;
461
		Menu mn = new Menu() ;
462
		final Item suppLiaison = new Item("Supprimer la liaison") ;
462
		final Item suppLiaison = new Item("Supprimer la liaison") ;
463
		
463
		
464
		mn.addItem(suppLiaison) ;
464
		mn.addItem(suppLiaison) ;
465
		
465
		
466
		mn.addListener(new MenuListenerAdapter() {
466
		mn.addListener(new MenuListenerAdapter() {
467
			
467
			
468
			public void onItemClick(BaseItem item, EventObject e) {
468
			public void onItemClick(BaseItem item, EventObject e) {
469
				
469
				
470
				// si c'est l'aide
470
				// si c'est l'aide
471
				if (item.equals(suppLiaison)) {
471
				if (item.equals(suppLiaison)) {
472
					// on notifie le médiateur
472
					// on notifie le médiateur
473
					getIMediateur().supprimerLiaisonObsImage() ;
473
					getIMediateur().supprimerLiaisonObsImage() ;
474
				}
474
				}
475
			}
475
			}
476
			
476
			
477
		}) ;
477
		}) ;
478
		
478
		
479
		mn.showAt(xy) ;
479
		mn.showAt(xy) ;
480
	}
480
	}
481
		
481
		
482
	/**
482
	/**
483
	 * Verifie si l'image est plus grande que le conteneur et la retaille le cas
483
	 * Verifie si l'image est plus grande que le conteneur et la retaille le cas
484
	 * echeant
484
	 * echeant
485
	 */
485
	 */
486
	public void verifierEtRetaillerImage() {
486
	public void verifierEtRetaillerImage() {
487
		
487
		
488
		// si l'image est nulle
488
		// si l'image est nulle
489
		if (image == null) {
489
		if (image == null) {
490
			// on ne fait rien
490
			// on ne fait rien
491
			return;
491
			return;
492
		}
492
		}
493
		
493
		
494
		int[] dim = calculerDimensions(getTailleImage(),300,imageConteneur.getWidth());
494
		int[] dim = calculerDimensions(getTailleImage(),300,imageConteneur.getWidth());
495
		getImage().setSize("" + dim[0] + "px",
495
		getImage().setSize("" + dim[0] + "px",
496
				"" + dim[1] + "px");
496
				"" + dim[1] + "px");
497
		
497
		
498
		doLayout();
498
		doLayout();
499
		
499
		
500
		if(imgZoom.isVisible()) {
500
		if(imgZoom.isVisible()) {
501
			agrandirImage();
501
			agrandirImage();
502
		}
502
		}
503
	}
503
	}
504
	
504
	
505
	public int[] calculerDimensions(int[] tailleXY, double tailleMax, double tailleConteneur) {
505
	public int[] calculerDimensions(int[] tailleXY, double tailleMax, double tailleConteneur) {
506
	    
506
	    
507
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
507
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
508
        float tailleOr = Math.min(new Float(tailleMax),new Float(tailleConteneur)) ;
508
        float tailleOr = Math.min(new Float(tailleMax),new Float(tailleConteneur)) ;
509
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
509
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
510
        float[] XYresize = new float[2];
510
        float[] XYresize = new float[2];
511
        
511
        
512
        if(maxTaille == tailleXY[0]) {
512
        if(maxTaille == tailleXY[0]) {
513
            float rapport = tailleXYf[1]/tailleXYf[0] ;
513
            float rapport = tailleXYf[1]/tailleXYf[0] ;
514
            XYresize[0] = tailleOr ;
514
            XYresize[0] = tailleOr ;
515
            XYresize[1] = tailleOr*rapport ;
515
            XYresize[1] = tailleOr*rapport ;
516
        }else {
516
        }else {
517
            float rapport = tailleXYf[0]/tailleXYf[1] ;
517
            float rapport = tailleXYf[0]/tailleXYf[1] ;
518
            XYresize[1] = tailleOr ;
518
            XYresize[1] = tailleOr ;
519
            XYresize[0] = tailleOr*rapport ;
519
            XYresize[0] = tailleOr*rapport ;
520
        }
520
        }
521
        
521
        
522
        int[] res = {(int)Math.round(XYresize[0]*0.85),(int)Math.round(XYresize[1]*0.85)} ;
522
        int[] res = {(int)Math.round(XYresize[0]*0.85),(int)Math.round(XYresize[1]*0.85)} ;
523
        
523
        
524
        return res;
524
        return res;
525
    }
525
    }
526
	
526
	
527
	protected void agrandirImage() {
527
	protected void agrandirImage() {
528
		
528
		
529
			String urlAgrandie = "";
529
			String urlAgrandie = "";
530
			
530
			
531
			if(infosImages == null) {
531
			if(infosImages == null) {
532
				urlAgrandie = "ill_liaison.png";
532
				urlAgrandie = "ill_liaison.png";
533
				setTailleImage(265, 270);
533
				setTailleImage(265, 270);
534
			} else {
534
			} else {
535
				urlAgrandie = getUrlAgrandie(index);
535
				urlAgrandie = getUrlAgrandie(index);
536
			}
536
			}
537
			
537
			
538
			if(imgAgrandie == null) {
538
			if(imgAgrandie == null) {
539
				imgAgrandie = new Image(urlAgrandie); 
539
				imgAgrandie = new Image(urlAgrandie); 
540
				imgZoom.add(imgAgrandie);
540
				imgZoom.add(imgAgrandie);
541
				
541
				
542
				imgAgrandie.addLoadHandler(new LoadHandler() {
542
				imgAgrandie.addLoadHandler(new LoadHandler() {
543
 
543
 
544
					public void onLoad(LoadEvent event) {
544
					public void onLoad(LoadEvent event) {
545
						int[] tailleImage = calculerDimensions(getTailleImage(),getTailleImage()[1],Window.getClientHeight()*0.75);
545
						int[] tailleImage = calculerDimensions(getTailleImage(),getTailleImage()[1],Window.getClientHeight()*0.75);
546
						ExtElement imgElement = Ext.get(imgAgrandie.getElement());
546
						ExtElement imgElement = Ext.get(imgAgrandie.getElement());
547
						if(animerTransition) {
547
						if(animerTransition) {
548
							AnimationConfig a = new AnimationConfig() ;
548
							AnimationConfig a = new AnimationConfig() ;
549
							a.setDuration((float) dureeAnimation);
549
							a.setDuration((float) dureeAnimation);
550
							imgElement.setHeight(tailleImage[1], a);
550
							imgElement.setHeight(tailleImage[1], a);
551
							imgElement.setWidth(tailleImage[0], a);
551
							imgElement.setWidth(tailleImage[0], a);
552
							
552
							
553
							ExtElement winElement = Ext.get(imgZoom.getElement());
553
							ExtElement winElement = Ext.get(imgZoom.getElement());
554
							winElement.setHeight(tailleImage[1], a);
554
							winElement.setHeight(tailleImage[1], a);
555
							winElement.setWidth(tailleImage[0], a);
555
							winElement.setWidth(tailleImage[0], a);
556
						} else {
556
						} else {
557
							imgElement.setHeight(tailleImage[1], false);
557
							imgElement.setHeight(tailleImage[1], false);
558
							imgElement.setWidth(tailleImage[0], false);
558
							imgElement.setWidth(tailleImage[0], false);
559
							
559
							
560
							ExtElement winElement = Ext.get(imgZoom.getElement());
560
							ExtElement winElement = Ext.get(imgZoom.getElement());
561
							winElement.setHeight(tailleImage[1], false);
561
							winElement.setHeight(tailleImage[1], false);
562
							winElement.setWidth(tailleImage[0], false);
562
							winElement.setWidth(tailleImage[0], false);
563
						}
563
						}
564
					}
564
					}
565
					
565
					
566
				});
566
				});
567
				
567
				
568
			} else {
568
			} else {
569
				imgAgrandie.setUrl(urlAgrandie);
569
				imgAgrandie.setUrl(urlAgrandie);
570
				imgAgrandie.setVisible(true);
570
				imgAgrandie.setVisible(true);
571
			}
571
			}
572
	}
572
	}
573
	
573
	
574
	private String getUrlMiniature(int index) {
574
	private String getUrlMiniature(int index) {
575
		
575
		
576
		String[][] paramsImage = {{"ci_id_image",infosImages[index][0]}};
576
		String[][] paramsImage = {{"id_image",infosImages[index][0]}};
577
		ImageCarnet ic = new ImageCarnet(paramsImage);
577
		ImageCarnet ic = new ImageCarnet(paramsImage);
578
		
578
		
579
		return ic.getUrlFormatGalerie();
579
		return ic.getUrlFormatGalerie();
580
	}
580
	}
581
	
581
	
582
	private String getUrlAgrandie(int index) {
582
	private String getUrlAgrandie(int index) {
583
		String[][] paramsImage = {{"ci_id_image",infosImages[index][0]}};
583
		String[][] paramsImage = {{"id_image",infosImages[index][0]}};
584
		ImageCarnet ic = new ImageCarnet(paramsImage);
584
		ImageCarnet ic = new ImageCarnet(paramsImage);
585
		
585
		
586
		return ic.getUrlFormatZoom();
586
		return ic.getUrlFormatZoom();
587
	}
587
	}
588
	
588
	
589
	private void afficherPanneauAgrandi() {
589
	private void afficherPanneauAgrandi() {
590
		agrandirImage();
590
		agrandirImage();
591
		imgZoom.show(this.getElement());
591
		imgZoom.show(this.getElement());
592
		imgZoom.setPosition((int)(Window.getClientWidth() - Window.getClientWidth()*0.50),(int)(Window.getClientHeight() - Window.getClientHeight()*0.85));
592
		imgZoom.setPosition((int)(Window.getClientWidth() - Window.getClientWidth()*0.50),(int)(Window.getClientHeight() - Window.getClientHeight()*0.85));
593
	}
593
	}
594
}
594
}
595
 
595