Subversion Repositories eFlore/Applications.cel

Rev

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

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