Subversion Repositories eFlore/Applications.cel

Rev

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

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