Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 173 Rev 195
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues.image;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
 
5
 
6
import com.google.gwt.user.client.DOM;
6
import com.google.gwt.user.client.DOM;
7
import com.google.gwt.user.client.Event;
7
import com.google.gwt.user.client.Event;
8
import com.google.gwt.user.client.ui.ClickListener;
8
import com.google.gwt.user.client.ui.ClickListener;
9
import com.google.gwt.user.client.ui.Image;
9
import com.google.gwt.user.client.ui.Image;
10
import com.google.gwt.user.client.ui.Widget;
10
import com.google.gwt.user.client.ui.Widget;
11
import com.gwtext.client.core.EventObject;
11
import com.gwtext.client.core.EventObject;
12
import com.gwtext.client.core.RegionPosition;
12
import com.gwtext.client.core.RegionPosition;
13
import com.gwtext.client.dd.DragData;
13
import com.gwtext.client.dd.DragData;
14
import com.gwtext.client.dd.DragSource;
14
import com.gwtext.client.dd.DragSource;
15
import com.gwtext.client.dd.DropTarget;
15
import com.gwtext.client.dd.DropTarget;
16
import com.gwtext.client.dd.DropTargetConfig;
16
import com.gwtext.client.dd.DropTargetConfig;
17
import com.gwtext.client.widgets.Container;
17
import com.gwtext.client.widgets.Container;
18
import com.gwtext.client.widgets.Panel;
18
import com.gwtext.client.widgets.Panel;
19
import com.gwtext.client.widgets.ToolTip;
19
import com.gwtext.client.widgets.ToolTip;
20
import com.gwtext.client.widgets.event.PanelListenerAdapter;
20
import com.gwtext.client.widgets.event.PanelListenerAdapter;
21
import com.gwtext.client.widgets.grid.GridDragData;
21
import com.gwtext.client.widgets.grid.GridDragData;
22
import com.gwtext.client.widgets.layout.BorderLayout;
22
import com.gwtext.client.widgets.layout.BorderLayout;
23
import com.gwtext.client.widgets.layout.BorderLayoutData;
23
import com.gwtext.client.widgets.layout.BorderLayoutData;
24
 
24
 
25
/**
25
/**
26
 * Panneau d'affichage d'une image avec des boutons précdents et suivant
26
 * Panneau d'affichage d'une image avec des boutons précdents et suivant
27
 * 
27
 * 
28
 * @author aurelien
28
 * @author aurelien
29
 * 
29
 * 
30
 */
30
 */
31
public class ZoomImageVue extends Panel implements Rafraichissable {
31
public class ZoomImageVue extends Panel implements Rafraichissable {
32
 
32
 
33
	/**
33
	/**
34
	 * Le médiateur associé à la vue
34
	 * Le médiateur associé à la vue
35
	 */
35
	 */
36
	private ImageMediateur iMediateur = null;
36
	private ImageMediateur iMediateur = null;
37
 
37
 
38
	/**
38
	/**
39
	 * Panneau conteneur pour l'image
39
	 * Panneau conteneur pour l'image
40
	 */
40
	 */
41
	private Panel imageConteneur = null;
41
	private Panel imageConteneur = null;
42
	/**
42
	/**
43
	 * l'image à afficher
43
	 * l'image à afficher
44
	 */
44
	 */
45
	private Image image = new Image("vide.jpg");
45
	private Image image = new Image("vide.jpg");
46
	/**
46
	/**
47
	 * Bouton précédent
47
	 * Bouton précédent
48
	 */
48
	 */
49
	private final com.google.gwt.user.client.ui.Button prev = new com.google.gwt.user.client.ui.Button();
49
	private final com.google.gwt.user.client.ui.Button prev = new com.google.gwt.user.client.ui.Button();
50
	/**
50
	/**
51
	 * Bouton suivant
51
	 * Bouton suivant
52
	 */
52
	 */
53
	private final com.google.gwt.user.client.ui.Button suiv = new com.google.gwt.user.client.ui.Button();
53
	private final com.google.gwt.user.client.ui.Button suiv = new com.google.gwt.user.client.ui.Button();
54
 
54
 
55
	/**
55
	/**
56
	 * Taille originale Y de l'image
56
	 * Taille originale Y de l'image
57
	 */
57
	 */
58
	private int imageHeight = 0;
58
	private int imageHeight = 0;
59
 
59
 
60
	/**
60
	/**
61
	 * Taille originale X de l'image
61
	 * Taille originale X de l'image
62
	 */
62
	 */
63
	private int imageWidth = 0;
63
	private int imageWidth = 0;
64
	
64
	
65
	/**
65
	/**
66
	 * Identifiant de l'image
66
	 * Identifiant de l'image
67
	 */
67
	 */
68
	private String idImage = "0" ;
68
	private String idImage = "0" ;
69
 
69
 
70
	/**
70
	/**
71
	 * Booleen d'initalisation général
71
	 * Booleen d'initalisation général
72
	 */
72
	 */
73
	private boolean initialise = false;
73
	private boolean initialise = false;
74
 
74
 
75
	/**
75
	/**
76
	 * Booleen d'initalisation du conteneur d'image
76
	 * Booleen d'initalisation du conteneur d'image
77
	 */
77
	 */
78
	private boolean conteneurInitialise = false;
78
	private boolean conteneurInitialise = false;
79
	
79
	
80
	private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour revenir à la vue précédente, utilisez la roulette ou les boutons fléchés pour faire défiler les images </div>") ;
80
	private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour revenir à la vue précédente, utilisez la roulette ou les boutons fléchés pour faire défiler les images </div>") ;
81
 
81
 
82
	/**
82
	/**
83
	 * Constructeur sans argument (privé car ne doit être utilisé)
83
	 * Constructeur sans argument (privé car ne doit être utilisé)
84
	 */
84
	 */
85
	@SuppressWarnings("unused")
85
	@SuppressWarnings("unused")
86
	private ZoomImageVue() {
86
	private ZoomImageVue() {
87
		super();
87
		super();
88
	}
88
	}
89
 
89
 
90
	/**
90
	/**
91
	 * Constructeur avec argument
91
	 * Constructeur avec argument
92
	 * 
92
	 * 
93
	 * @param im
93
	 * @param im
94
	 *            le médiateur à associer à la vue
94
	 *            le médiateur à associer à la vue
95
	 */
95
	 */
96
	public ZoomImageVue(ImageMediateur im) {
96
	public ZoomImageVue(ImageMediateur im) {
97
		super("Zoom");
97
		super("Zoom");
98
		setId("x-view-zoom-panel");
98
		setId("x-view-zoom-panel");
99
		// on associe le médiateur
99
		// on associe le médiateur
100
		iMediateur = im;
100
		iMediateur = im;
101
 
101
 
102
		prev.setStylePrimaryName("x-view-zoom-button-p");
102
		prev.setStylePrimaryName("x-view-zoom-button-p");
103
		suiv.setStylePrimaryName("x-view-zoom-button-s");
103
		suiv.setStylePrimaryName("x-view-zoom-button-s");
104
 
104
 
105
		// on crée une image qui gère le double clic et la roulette de la souris
105
		// on crée une image qui gère le double clic et la roulette de la souris
106
		image = new Image() {
106
		image = new Image() {
107
 
107
 
108
			public void onBrowserEvent(Event event) {
108
			public void onBrowserEvent(Event event) {
109
				
109
				
110
				// lors du double clic
110
				// lors du double clic
111
				if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
111
				if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
112
 
112
 
113
					// on notifie le médiateur
113
					// on notifie le médiateur
114
					getIMediateur().doubleClicZoomImage();
114
					getIMediateur().doubleClicZoomImage();
115
				}
115
				}
116
 
116
 
117
				// lors d'un déplacement de la roulette
117
				// lors d'un déplacement de la roulette
118
				if (Event.ONMOUSEWHEEL == DOM.eventGetType(event)) {
118
				if (Event.ONMOUSEWHEEL == DOM.eventGetType(event)) {
119
 
119
 
120
					// on simule un clic sur le bouton précédent
120
					// on simule un clic sur le bouton précédent
121
					if (event.getMouseWheelVelocityY() >= 1) {
121
					if (event.getMouseWheelVelocityY() >= 1) {
122
						prev.click();
122
						prev.click();
123
					}
123
					}
124
 
124
 
125
					// ou suivant
125
					// ou suivant
126
					if (event.getMouseWheelVelocityY() <= -1) {
126
					if (event.getMouseWheelVelocityY() <= -1) {
127
						suiv.click();
127
						suiv.click();
128
					}
128
					}
129
				}
129
				}
130
			}
130
			}
131
			
131
			
132
		};
132
		};
133
 
133
 
134
		this.setHeader(false);
134
		this.setHeader(false);
135
 
135
 
136
		imageConteneur = new Panel() ;
136
		imageConteneur = new Panel() ;
137
		imageConteneur.setBorder(false);
137
		imageConteneur.setBorder(false);
138
 
138
 
139
		imageConteneur.add(image);
139
		imageConteneur.add(image);
140
		imageConteneur.setId("x-view-zoom-img");
140
		imageConteneur.setId("x-view-zoom-img");
141
 
141
 
142
		// il n'existe pas de méthode pour ajouter un listener pour le double
142
		// il n'existe pas de méthode pour ajouter un listener pour le double
143
		// clic sur une image
143
		// clic sur une image
144
		// alors on lui dit manuellement de capter l'évènement double clic
144
		// alors on lui dit manuellement de capter l'évènement double clic
145
		image.sinkEvents(Event.ONDBLCLICK);
145
		image.sinkEvents(Event.ONDBLCLICK);
146
		image.sinkEvents(Event.ONMOUSEWHEEL);
146
		image.sinkEvents(Event.ONMOUSEWHEEL);
147
 
147
 
148
		// l'image de base est vide
148
		// l'image de base est vide
149
		image.setUrl("vide.jpg");
149
		image.setUrl("vide.jpg");
150
 
150
 
151
		this.setLayout(new BorderLayout());
151
		this.setLayout(new BorderLayout());
152
 
152
 
153
		prev.setWidth("60px");
153
		prev.setWidth("60px");
154
		suiv.setWidth("60px");
154
		suiv.setWidth("60px");
155
 
155
 
156
		this.add(prev, new BorderLayoutData(RegionPosition.WEST));
156
		this.add(prev, new BorderLayoutData(RegionPosition.WEST));
157
		this.add(imageConteneur, new BorderLayoutData(RegionPosition.CENTER));
157
		this.add(imageConteneur, new BorderLayoutData(RegionPosition.CENTER));
158
		this.add(suiv, new BorderLayoutData(RegionPosition.EAST));
158
		this.add(suiv, new BorderLayoutData(RegionPosition.EAST));
159
 
159
 
160
		imageConteneur.setMaskDisabled(true);
160
		imageConteneur.setMaskDisabled(true);
161
		this.setBorder(false);
161
		this.setBorder(false);
162
 
162
 
163
		conteneurInitialise = true;
163
		conteneurInitialise = true;
164
		initialise = true;
164
		initialise = true;
165
		
165
		
166
		configDragAndDrop() ;
166
		configDragAndDrop() ;
167
 
167
 
168
		// on ajoute les listeners
168
		// on ajoute les listeners
169
		ajouterListeners();
169
		ajouterListeners();
170
		
170
		
171
		tp.setDismissDelay(1750);
171
		tp.setDismissDelay(1750);
172
		tp.applyTo(image.getElement()) ;
172
		tp.applyTo(image.getElement()) ;
173
 
173
 
174
	}
174
	}
175
 
175
 
176
	/**
176
	/**
177
	 * Méthode héritée de l'interface rafraichissable
177
	 * Méthode héritée de l'interface rafraichissable
178
	 * 
178
	 * 
179
	 * @param nouvelleDonnees
179
	 * @param nouvelleDonnees
180
	 *            les nouvelles données
180
	 *            les nouvelles données
181
	 * @param repandreRafraichissement
181
	 * @param repandreRafraichissement
182
	 *            le booleen qui dit si on doit répnadre l'évènement
182
	 *            le booleen qui dit si on doit répnadre l'évènement
183
	 */
183
	 */
184
	public void rafraichir(Object nouvelleDonnees,
184
	public void rafraichir(Object nouvelleDonnees,
185
			boolean repandreRafraichissement) {
185
			boolean repandreRafraichissement) {
186
 
186
 
187
		// si on reçoit une string
187
		// si on reçoit une string
188
		if (nouvelleDonnees instanceof String[] && initialise
188
		if (nouvelleDonnees instanceof String[] && initialise
189
				&& conteneurInitialise) {
189
				&& conteneurInitialise) {
190
			String[] infos = (String[]) nouvelleDonnees;
190
			String[] infos = (String[]) nouvelleDonnees;
191
			// c'est l'url de l'image qu'on associe à la vue
191
			// c'est l'url de l'image qu'on associe à la vue
192
			if (infos[0] != null && infos[1] != null && infos[2] != null && infos[3] != null) {
192
			if (infos[0] != null && infos[1] != null && infos[2] != null && infos[3] != null) {
193
				getImage().setUrl(infos[0]);
193
				getImage().setUrl(infos[0]);
194
				int x = Integer.parseInt(infos[1]);
194
				int x = Integer.parseInt(infos[1]);
195
				int y = Integer.parseInt(infos[2]);
195
				int y = Integer.parseInt(infos[2]);
196
 
196
 
197
				setTailleImage(x, y);
197
				setTailleImage(x, y);
198
				
198
				
199
				setIdImage(infos[3]) ;
199
				setIdImage(infos[3]) ;
200
 
200
 
201
				verifierEtRetaillerImage();
201
				verifierEtRetaillerImage();
202
			}
202
			}
203
		} else {
203
		} else {
204
			// sinon on met une image vide
204
			// sinon on met une image vide
205
			getImage().setUrl("vide.jpg");
205
			getImage().setUrl("vide.jpg");
206
		}
206
		}
207
	}
207
	}
208
 
208
 
209
	/**
209
	/**
210
	 * Desactive visuellement le panneau et les boutons
210
	 * Desactive visuellement le panneau et les boutons
211
	 */
211
	 */
212
	public void desactiverPanneau() {
212
	public void desactiverPanneau() {
213
		getImage().setUrl("vide.jpeg");
213
		getImage().setUrl("vide.jpeg");
214
		prev.setEnabled(false);
214
		prev.setEnabled(false);
215
		suiv.setEnabled(false);
215
		suiv.setEnabled(false);
216
	}
216
	}
217
 
217
 
218
	/**
218
	/**
219
	 * Active visuellement le panneau et les boutons
219
	 * Active visuellement le panneau et les boutons
220
	 */
220
	 */
221
	public void activerPanneau() {
221
	public void activerPanneau() {
222
		prev.setEnabled(true);
222
		prev.setEnabled(true);
223
		suiv.setEnabled(true);
223
		suiv.setEnabled(true);
224
	}
224
	}
225
 
225
 
226
	/**
226
	/**
227
	 * Ajoute les listeners pour la gestions d'évènement
227
	 * Ajoute les listeners pour la gestions d'évènement
228
	 */
228
	 */
229
	public void ajouterListeners() {
229
	public void ajouterListeners() {
230
 
230
 
231
		// gestion du clic sur le bouton précedent
231
		// gestion du clic sur le bouton précedent
232
		prev.addClickListener(new ClickListener() {
232
		prev.addClickListener(new ClickListener() {
233
 
233
 
234
			// en cas de clic
234
			// en cas de clic
235
			public void onClick(Widget sender) {
235
			public void onClick(Widget sender) {
236
				// on notifie le médiateur
236
				// on notifie le médiateur
237
				getIMediateur().clicBoutonZoomImage("prev");
237
				getIMediateur().clicBoutonZoomImage("prev");
238
			}
238
			}
239
 
239
 
240
		});
240
		});
241
 
241
 
242
		// gestion du clic sur le bouton suivant
242
		// gestion du clic sur le bouton suivant
243
		suiv.addClickListener(new ClickListener() {
243
		suiv.addClickListener(new ClickListener() {
244
 
244
 
245
			// en cas de clic
245
			// en cas de clic
246
			public void onClick(Widget sender) {
246
			public void onClick(Widget sender) {
247
				// on notifie le médiateur
247
				// on notifie le médiateur
248
				getIMediateur().clicBoutonZoomImage("suiv");
248
				getIMediateur().clicBoutonZoomImage("suiv");
249
			}
249
			}
250
 
250
 
251
		});
251
		});
252
 
252
 
253
		// gestion du redimensionnement
253
		// gestion du redimensionnement
254
		this.addListener(new PanelListenerAdapter() {
254
		this.addListener(new PanelListenerAdapter() {
255
 
255
 
256
			// lors d'un redimensionnement de l'application
256
			// lors d'un redimensionnement de l'application
257
 
257
 
258
			public void onBodyResize(Panel panel, java.lang.String width,
258
			public void onBodyResize(Panel panel, java.lang.String width,
259
					java.lang.String height) {
259
					java.lang.String height) {
260
				// on vérifie et on retaille l'image
260
				// on vérifie et on retaille l'image
261
				verifierEtRetaillerImage();
261
				verifierEtRetaillerImage();
262
			}
262
			}
263
		});
263
		});
264
 
264
 
265
		// gestion du redimensionnement lors de l'affichage du conteneur
265
		// gestion du redimensionnement lors de l'affichage du conteneur
266
		imageConteneur.addListener(new PanelListenerAdapter() {
266
		imageConteneur.addListener(new PanelListenerAdapter() {
267
 
267
 
268
			// avant de finir d'afficher
268
			// avant de finir d'afficher
269
 
269
 
270
			public void onAfterLayout(Container self) {
270
			public void onAfterLayout(Container self) {
271
				// on redimensionne
271
				// on redimensionne
272
				verifierEtRetaillerImage();
272
				verifierEtRetaillerImage();
273
			}
273
			}
274
		});
274
		});
275
 
275
 
276
	}
276
	}
277
 
277
 
278
	/**
278
	/**
279
	 * Verifie si l'image est plus grande que le conteneur et la retaille le cas
279
	 * Verifie si l'image est plus grande que le conteneur et la retaille le cas
280
	 * echeant
280
	 * echeant
281
	 */
281
	 */
282
	public void verifierEtRetaillerImage() {
282
	public void verifierEtRetaillerImage() {
283
		// si l'image est nulle
283
		// si l'image est nulle
284
		if (image == null) {
284
		if (image == null) {
285
			// on ne fait rien
285
			// on ne fait rien
286
			return;
286
			return;
287
		}
287
		}
288
 
288
 
289
		// on prend la taille originale de l'image
289
		// on prend la taille originale de l'image
290
		int originalX = getTailleImage()[0];
290
		int originalX = getTailleImage()[0];
291
		int originalY = getTailleImage()[1];
291
		int originalY = getTailleImage()[1];
292
 
292
 
293
		// on la transforme en float (la division entre entier donne de curieux
293
		// on la transforme en float (la division entre entier donne de curieux
294
		// résultats)
294
		// résultats)
295
		float fOriginalX = (new Float(originalX)).floatValue();
295
		float fOriginalX = (new Float(originalX)).floatValue();
296
		float fOriginalY = (new Float(originalY)).floatValue();
296
		float fOriginalY = (new Float(originalY)).floatValue();
297
 
297
 
298
		// et on fait le rapport longueur sur hauteur (pour connaitre le ratio)
298
		// et on fait le rapport longueur sur hauteur (pour connaitre le ratio)
299
		float rapportTaille = fOriginalX / fOriginalY;
299
		float rapportTaille = fOriginalX / fOriginalY;
300
 
300
 
301
		// la nouvelle taille est pour le moment égale à l'ancienne
301
		// la nouvelle taille est pour le moment égale à l'ancienne
302
		int nouvelleTailleX = originalX;
302
		int nouvelleTailleX = originalX;
303
		int nouvelleTailleY = originalY;
303
		int nouvelleTailleY = originalY;
304
 
304
 
305
		// on prend la taille du conteneur
305
		// on prend la taille du conteneur
306
		int tailleConteneurX = imageConteneur.getWidth();
306
		int tailleConteneurX = imageConteneur.getWidth();
307
		int tailleConteneurY = imageConteneur.getHeight();
307
		int tailleConteneurY = imageConteneur.getHeight();
308
 
308
 
309
		// si celle-ci est égale à 0 (conteneur mal initialisé)
309
		// si celle-ci est égale à 0 (conteneur mal initialisé)
310
		/*
310
		/*
311
		 * if(imageConteneur.getHeight() == 0 && tailleConteneurX == 0) { // on
311
		 * if(imageConteneur.getHeight() == 0 && tailleConteneurX == 0) { // on
312
		 * essaie de la calculer en fonction de la taille du parent et des
312
		 * essaie de la calculer en fonction de la taille du parent et des
313
		 * frères tailleConteneurY = this.getHeight() ; tailleConteneurX =
313
		 * frères tailleConteneurY = this.getHeight() ; tailleConteneurX =
314
		 * this.getWidth() - prev.getOffsetWidth() * 2 ;
314
		 * this.getWidth() - prev.getOffsetWidth() * 2 ;
315
		 *  }
315
		 *  }
316
		 */
316
		 */
317
 
317
 
318
		// si l'image ne rentre pas telle quelle (longueur ou hauteur trop
318
		// si l'image ne rentre pas telle quelle (longueur ou hauteur trop
319
		// grande)
319
		// grande)
320
		if (originalY > tailleConteneurY || originalX > tailleConteneurX) {
320
		if (originalY > tailleConteneurY || originalX > tailleConteneurX) {
321
			// si la longueur de l'image est la plus grande des deux
321
			// si la longueur de l'image est la plus grande des deux
322
			if (originalX > originalY) {
322
			if (originalX > originalY) {
323
				// on prend la longueur comme taille de référence, qu'on met à
323
				// on prend la longueur comme taille de référence, qu'on met à
324
				// la longueur du conteneur
324
				// la longueur du conteneur
325
				nouvelleTailleX = tailleConteneurX;
325
				nouvelleTailleX = tailleConteneurX;
326
				// et on recalcule la hauteur, par rapport à la nouvelle
326
				// et on recalcule la hauteur, par rapport à la nouvelle
327
				// longueur, en gardant le format de 'limage
327
				// longueur, en gardant le format de 'limage
328
				nouvelleTailleY = (int) Math.floor(nouvelleTailleX * 1
328
				nouvelleTailleY = (int) Math.floor(nouvelleTailleX * 1
329
						/ rapportTaille);
329
						/ rapportTaille);
330
			} else {
330
			} else {
331
				// si la hauteur est la plus grande, on fait le même genre
331
				// si la hauteur est la plus grande, on fait le même genre
332
				// d'opération en prenant la hauteur comme référence
332
				// d'opération en prenant la hauteur comme référence
333
				nouvelleTailleY = tailleConteneurY;
333
				nouvelleTailleY = tailleConteneurY;
334
				nouvelleTailleX = (int) Math.floor(nouvelleTailleY
334
				nouvelleTailleX = (int) Math.floor(nouvelleTailleY
335
						* rapportTaille);
335
						* rapportTaille);
336
			}
336
			}
337
		}
337
		}
338
 
338
 
339
		// on modifie enfin la taille de l'image pour qu'elle soit affichée
339
		// on modifie enfin la taille de l'image pour qu'elle soit affichée
340
		getImage().setSize("" + nouvelleTailleX + "px",
340
		getImage().setSize("" + nouvelleTailleX + "px",
341
				"" + nouvelleTailleY + "px");
341
				"" + nouvelleTailleY + "px");
342
	}
342
	}
343
	
343
	
344
	public void configDragAndDrop()
344
	public void configDragAndDrop()
345
	{
345
	{
346
 
346
 
347
		// on fabrique la nouvelle configuration
347
		// on fabrique la nouvelle configuration
348
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
348
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
349
		DropTargetConfig dtc = new DropTargetConfig();
349
		DropTargetConfig dtc = new DropTargetConfig();
350
		dtc.setdDdGroup("DragGroupName");
350
		dtc.setdDdGroup("DragGroupName");
351
 
351
 
352
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
352
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
353
		@SuppressWarnings("unused")
353
		@SuppressWarnings("unused")
354
		DropTarget tg = new DropTarget(this, dtc)
354
		DropTarget tg = new DropTarget(this, dtc)
355
		{
355
		{
356
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
356
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
357
				
357
				
358
				// si on reçoit des données provenant d'une grille
358
				// si on reçoit des données provenant d'une grille
359
				if(data instanceof GridDragData)
359
				if(data instanceof GridDragData)
360
		    	  {
360
		    	  {
361
		    		  		// on appelle le médiateur
361
		    		  		// on appelle le médiateur
362
		    		  		return iMediateur.lierObsDD(source, e, data,getId()) ;   
362
		    		  		return iMediateur.lierObsDD(source, e, data,getId()) ;   
363
		    	  }
363
		    	  }
364
				return false ;
364
				return false ;
365
			}
365
			}
366
			
366
			
367
			public String notifyOver(DragSource source, EventObject e, DragData data){
367
			public String notifyOver(DragSource source, EventObject e, DragData data){
368
			    return "x-dd-drop-ok";
368
			    return "x-dd-drop-ok";
369
			}
369
			}
370
		};
370
		};
371
        
371
        
372
	}
372
	}
373
 
373
 
374
	/**
374
	/**
375
	 * Accesseur pour le médiateur
375
	 * Accesseur pour le médiateur
376
	 * 
376
	 * 
377
	 * @return le médiateur associé à la vue
377
	 * @return le médiateur associé à la vue
378
	 */
378
	 */
379
	public ImageMediateur getIMediateur() {
379
	public ImageMediateur getIMediateur() {
380
		return iMediateur;
380
		return iMediateur;
381
	}
381
	}
382
 
382
 
383
	/**
383
	/**
384
	 * Accesseur au conteneur de l'image
384
	 * Accesseur au conteneur de l'image
385
	 * 
385
	 * 
386
	 * @return le conteneur de l'image
386
	 * @return le conteneur de l'image
387
	 */
387
	 */
388
	public Image getImage() {
388
	public Image getImage() {
389
		return image;
389
		return image;
390
	}
390
	}
391
	
391
	
392
	/**
392
	/**
393
	 * Acesseurs pour l'identifiant de l'image
393
	 * Acesseurs pour l'identifiant de l'image
394
	 * @return l'id de l'image
394
	 * @return l'id de l'image
395
	 */
395
	 */
396
	public String getIdImage()
396
	public String getIdImage()
397
	{
397
	{
398
		return idImage ;
398
		return idImage ;
399
	}
399
	}
400
 
400
 
401
	/**
401
	/**
402
	 * Accesseur pour le bouton précédent
402
	 * Accesseur pour le bouton précédent
403
	 * 
403
	 * 
404
	 * @return le bouton précédent
404
	 * @return le bouton précédent
405
	 */
405
	 */
406
	public com.google.gwt.user.client.ui.Button getPrev() {
406
	public com.google.gwt.user.client.ui.Button getPrev() {
407
		return prev;
407
		return prev;
408
	}
408
	}
409
 
409
 
410
	/**
410
	/**
411
	 * Accesseur pour le bouton suivant
411
	 * Accesseur pour le bouton suivant
412
	 * 
412
	 * 
413
	 * @return le bouton suivant
413
	 * @return le bouton suivant
414
	 */
414
	 */
415
	public com.google.gwt.user.client.ui.Button getSuiv() {
415
	public com.google.gwt.user.client.ui.Button getSuiv() {
416
		return suiv;
416
		return suiv;
417
	}
417
	}
418
 
418
 
419
	/**
419
	/**
420
	 * Setter pour la taille de l'image
420
	 * Setter pour la taille de l'image
421
	 * 
421
	 * 
422
	 * @param x
422
	 * @param x
423
	 *            la largeur en pixels
423
	 *            la largeur en pixels
424
	 * @param y
424
	 * @param y
425
	 *            la hauteur en pixels
425
	 *            la hauteur en pixels
426
	 */
426
	 */
427
	public void setTailleImage(int x, int y) {
427
	public void setTailleImage(int x, int y) {
428
		imageHeight = y;
428
		imageHeight = y;
429
		imageWidth = x;
429
		imageWidth = x;
430
	}
430
	}
431
	
431
	
432
	/**
432
	/**
433
	 * Setteur pour l'identifiant de l'image
433
	 * Setteur pour l'identifiant de l'image
434
	 * @param id le nouvel identifiant
434
	 * @param id le nouvel identifiant
435
	 */
435
	 */
436
	public void setIdImage(String id)
436
	public void setIdImage(String id)
437
	{
437
	{
438
		idImage = id ;
438
		idImage = id ;
439
	}
439
	}
440
 
440
 
441
	/**
441
	/**
442
	 * renvoie la taille originale de l'image
442
	 * renvoie la taille originale de l'image
443
	 * 
443
	 * 
444
	 * @return un tableau de deux entiers contenant la largeur puis la hauteur
444
	 * @return un tableau de deux entiers contenant la largeur puis la hauteur
445
	 */
445
	 */
446
	public int[] getTailleImage() {
446
	public int[] getTailleImage() {
447
		int[] taille = { imageHeight, imageWidth };
447
		int[] taille = { imageHeight, imageWidth };
448
 
448
 
449
		return taille;
449
		return taille;
450
	}
450
	}
451
	
451
	
452
	/**
452
	/**
453
	 * Accesseur pour le conteneur de l'image
453
	 * Accesseur pour le conteneur de l'image
454
	 * @return le conteur de l'image
454
	 * @return le conteur de l'image
455
	 */
455
	 */
456
	public Panel getImageConteneur() {
456
	public Panel getImageConteneur() {
457
 
457
 
458
		return imageConteneur;
458
		return imageConteneur;
459
 
459
 
460
	}
460
	}
461
}
461
}