Subversion Repositories eFlore/Applications.cel

Rev

Rev 1292 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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