Subversion Repositories eFlore/Applications.cel

Rev

Rev 195 | Rev 225 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 195 Rev 207
Line 1... Line 1...
1
package org.tela_botanica.client.vues.image;
1
package org.tela_botanica.client.vues.image;
Line 2... Line 2...
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
Line 4... Line -...
4
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
5
 
4
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
5
 
-
 
6
import com.google.gwt.user.client.Event;
6
import com.google.gwt.user.client.DOM;
7
import com.google.gwt.user.client.Timer;
7
import com.google.gwt.user.client.Event;
8
import com.google.gwt.user.client.Window;
-
 
9
import com.google.gwt.user.client.ui.ClickListener;
-
 
10
import com.google.gwt.user.client.ui.Image;
-
 
11
import com.google.gwt.user.client.ui.LoadListener;
8
import com.google.gwt.user.client.ui.ClickListener;
12
import com.google.gwt.user.client.ui.MouseWheelListener;
-
 
13
import com.google.gwt.user.client.ui.MouseWheelVelocity;
9
import com.google.gwt.user.client.ui.Image;
14
import com.google.gwt.user.client.ui.Widget;
-
 
15
import com.gwtext.client.core.AnimationConfig;
-
 
16
import com.gwtext.client.core.EventObject;
-
 
17
import com.gwtext.client.core.Ext;
10
import com.google.gwt.user.client.ui.Widget;
18
import com.gwtext.client.core.ExtElement;
11
import com.gwtext.client.core.EventObject;
19
 
12
import com.gwtext.client.core.RegionPosition;
20
import com.gwtext.client.core.RegionPosition;
13
import com.gwtext.client.dd.DragData;
21
import com.gwtext.client.dd.DragData;
14
import com.gwtext.client.dd.DragSource;
22
import com.gwtext.client.dd.DragSource;
Line 78... Line 86...
78
	private boolean conteneurInitialise = false;
86
	private boolean conteneurInitialise = false;
Line 79... Line 87...
79
	
87
	
Line 80... Line 88...
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>") ;
88
	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>") ;
-
 
89
 
-
 
90
	/**
-
 
91
	 * true pour animer les transitions des animations
-
 
92
	 */
-
 
93
	private boolean animerTransition = false;
-
 
94
	
-
 
95
	/**
-
 
96
	 * duree des animation
-
 
97
	 */
-
 
98
	private float dureeAnimation = (float) 0.15 ;
-
 
99
	
-
 
100
	/**.
-
 
101
	 * boolean de gestion du double clic
-
 
102
	 */
-
 
103
	private boolean enClic = false;
81
 
104
	
82
	/**
105
	/**
83
	 * Constructeur sans argument (privé car ne doit être utilisé)
106
	 * Constructeur sans argument (privé car ne doit être utilisé)
84
	 */
107
	 */
85
	@SuppressWarnings("unused")
108
	@SuppressWarnings("unused")
Line 101... Line 124...
101
 
124
 
102
		prev.setStylePrimaryName("x-view-zoom-button-p");
125
		prev.setStylePrimaryName("x-view-zoom-button-p");
Line 103... Line 126...
103
		suiv.setStylePrimaryName("x-view-zoom-button-s");
126
		suiv.setStylePrimaryName("x-view-zoom-button-s");
104
 
127
 
105
		// on crée une image qui gère le double clic et la roulette de la souris
-
 
106
		image = new Image() {
-
 
107
 
-
 
108
			public void onBrowserEvent(Event event) {
-
 
109
				
-
 
110
				// lors du double clic
-
 
111
				if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
-
 
112
 
-
 
113
					// on notifie le médiateur
-
 
114
					getIMediateur().doubleClicZoomImage();
-
 
115
				}
-
 
116
 
-
 
117
				// lors d'un déplacement de la roulette
-
 
118
				if (Event.ONMOUSEWHEEL == DOM.eventGetType(event)) {
-
 
119
 
-
 
120
					// on simule un clic sur le bouton précédent
-
 
121
					if (event.getMouseWheelVelocityY() >= 1) {
-
 
122
						prev.click();
-
 
123
					}
-
 
124
 
-
 
125
					// ou suivant
-
 
126
					if (event.getMouseWheelVelocityY() <= -1) {
-
 
127
						suiv.click();
-
 
128
					}
-
 
129
				}
-
 
130
			}
-
 
131
			
128
		// on crée une image qui gère le double clic et la roulette de la souris
132
		};
129
		image = new Image();
Line 133... Line 130...
133
 
130
		
-
 
131
		this.setHeader(false);
134
		this.setHeader(false);
132
 
Line 135... Line 133...
135
 
133
		imageConteneur = new Panel();
136
		imageConteneur = new Panel() ;
134
		
Line 137... Line 135...
137
		imageConteneur.setBorder(false);
135
		imageConteneur.setBorder(false);
138
 
136
 
139
		imageConteneur.add(image);
137
		imageConteneur.add(image);
140
		imageConteneur.setId("x-view-zoom-img");
-
 
141
 
138
		imageConteneur.setId("x-view-zoom-img");
Line 142... Line 139...
142
		// il n'existe pas de méthode pour ajouter un listener pour le double
139
 
143
		// clic sur une image
140
		// il n'existe pas de méthode pour ajouter un listener pour le double
Line 144... Line 141...
144
		// alors on lui dit manuellement de capter l'évènement double clic
141
		// clic sur une image
Line 196... Line 193...
196
 
193
 
Line 197... Line 194...
197
				setTailleImage(x, y);
194
				setTailleImage(x, y);
Line 198... Line 195...
198
				
195
				
199
				setIdImage(infos[3]) ;
196
				setIdImage(infos[3]) ;
200
 
197
 
201
				verifierEtRetaillerImage();
198
				//verifierEtRetaillerImage();
202
			}
199
			}
203
		} else {
200
		} else {
Line 226... Line 223...
226
	/**
223
	/**
227
	 * Ajoute les listeners pour la gestions d'évènement
224
	 * Ajoute les listeners pour la gestions d'évènement
228
	 */
225
	 */
229
	public void ajouterListeners() {
226
	public void ajouterListeners() {
Line -... Line 227...
-
 
227
 
-
 
228
		image.addLoadListener(new LoadListener() {
-
 
229
 
-
 
230
			public void onError(Widget sender) {
-
 
231
				// TODO Auto-generated method stub
-
 
232
				
-
 
233
			}
-
 
234
 
-
 
235
			public void onLoad(Widget sender) {
-
 
236
				
-
 
237
				int max = Math.min(imageConteneur.getHeight(), imageConteneur.getWidth());
-
 
238
				int[] tailleImage = calculerDimensions(getTailleImage(), max, max);
-
 
239
				ExtElement imgElement = Ext.get(image.getElement());
-
 
240
				if(animerTransition) {
-
 
241
					AnimationConfig a = new AnimationConfig() ;
-
 
242
					a.setDuration((float) dureeAnimation);
-
 
243
					imgElement.setHeight(tailleImage[1], a);
-
 
244
					imgElement.setWidth(tailleImage[0], a);
-
 
245
				} else {
-
 
246
					imgElement.setHeight(tailleImage[1], false);
-
 
247
					imgElement.setWidth(tailleImage[0], false);
-
 
248
				}
-
 
249
				
-
 
250
			}
-
 
251
			
-
 
252
		});
-
 
253
		
-
 
254
		image.addClickListener(new ClickListener() {
-
 
255
 
-
 
256
			public void onClick(Widget sender) {
-
 
257
				
-
 
258
				Window.alert(""+Event.getCurrentEvent().getButton());
-
 
259
					if(enClic) {
-
 
260
						getIMediateur().doubleClicZoomImage();
-
 
261
					} else {
-
 
262
						Timer t = new Timer() {
-
 
263
							public void run() {
-
 
264
								enClic = false;
-
 
265
							}
-
 
266
							
-
 
267
						};
-
 
268
						enClic = true;
-
 
269
						t.schedule(800);
-
 
270
					}
-
 
271
			}
-
 
272
			
-
 
273
		});
-
 
274
		
-
 
275
		image.addMouseWheelListener(new MouseWheelListener() {
-
 
276
 
-
 
277
			public void onMouseWheel(Widget sender, MouseWheelVelocity velocity) {
-
 
278
				
-
 
279
				if(velocity.getDeltaY() > 0) {
-
 
280
					suiv.click();
-
 
281
				} else {
-
 
282
					prev.click();
-
 
283
				}
-
 
284
			}
-
 
285
			
-
 
286
		});
230
 
287
		
231
		// gestion du clic sur le bouton précedent
288
		// gestion du clic sur le bouton précedent
Line 232... Line 289...
232
		prev.addClickListener(new ClickListener() {
289
		prev.addClickListener(new ClickListener() {
233
 
290
 
Line 270... Line 327...
270
			public void onAfterLayout(Container self) {
327
			public void onAfterLayout(Container self) {
271
				// on redimensionne
328
				// on redimensionne
272
				verifierEtRetaillerImage();
329
				verifierEtRetaillerImage();
273
			}
330
			}
274
		});
331
		});
275
 
-
 
276
	}
332
	}
Line 277... Line 333...
277
 
333
 
278
	/**
334
	/**
279
	 * Verifie si l'image est plus grande que le conteneur et la retaille le cas
335
	 * Verifie si l'image est plus grande que le conteneur et la retaille le cas
Line 339... Line 395...
339
		// on modifie enfin la taille de l'image pour qu'elle soit affichée
395
		// on modifie enfin la taille de l'image pour qu'elle soit affichée
340
		getImage().setSize("" + nouvelleTailleX + "px",
396
		getImage().setSize("" + nouvelleTailleX + "px",
341
				"" + nouvelleTailleY + "px");
397
				"" + nouvelleTailleY + "px");
342
	}
398
	}
Line -... Line 399...
-
 
399
	
-
 
400
	public int[] calculerDimensions(int[] tailleXY, double tailleMax, double tailleConteneur) {
-
 
401
	    
-
 
402
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
-
 
403
        float tailleOr = Math.min(new Float(tailleMax),new Float(tailleConteneur)) ;
-
 
404
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
-
 
405
        float[] XYresize = new float[2];
-
 
406
        
-
 
407
        if(maxTaille == tailleXY[0]) {
-
 
408
            float rapport = tailleXYf[1]/tailleXYf[0] ;
-
 
409
            XYresize[0] = tailleOr ;
-
 
410
            XYresize[1] = tailleOr*rapport ;
-
 
411
        }else {
-
 
412
            float rapport = tailleXYf[0]/tailleXYf[1] ;
-
 
413
            XYresize[1] = tailleOr ;
-
 
414
            XYresize[0] = tailleOr*rapport ;
-
 
415
        }
-
 
416
        
-
 
417
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
-
 
418
        
-
 
419
        return res;
-
 
420
    }
343
	
421
	
344
	public void configDragAndDrop()
422
	public void configDragAndDrop()
Line 345... Line 423...
345
	{
423
	{
346
 
424