Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 206 → Rev 207

/trunk/src/org/tela_botanica/client/vues/image/ZoomImageVue.java
3,12 → 3,20
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
 
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.LoadListener;
import com.google.gwt.user.client.ui.MouseWheelListener;
import com.google.gwt.user.client.ui.MouseWheelVelocity;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.AnimationConfig;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
 
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.dd.DragData;
import com.gwtext.client.dd.DragSource;
80,6 → 88,21
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>") ;
 
/**
* true pour animer les transitions des animations
*/
private boolean animerTransition = false;
/**
* duree des animation
*/
private float dureeAnimation = (float) 0.15 ;
/**.
* boolean de gestion du double clic
*/
private boolean enClic = false;
/**
* Constructeur sans argument (privé car ne doit être utilisé)
*/
@SuppressWarnings("unused")
103,37 → 126,12
suiv.setStylePrimaryName("x-view-zoom-button-s");
 
// on crée une image qui gère le double clic et la roulette de la souris
image = new Image() {
 
public void onBrowserEvent(Event event) {
// lors du double clic
if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
 
// on notifie le médiateur
getIMediateur().doubleClicZoomImage();
}
 
// lors d'un déplacement de la roulette
if (Event.ONMOUSEWHEEL == DOM.eventGetType(event)) {
 
// on simule un clic sur le bouton précédent
if (event.getMouseWheelVelocityY() >= 1) {
prev.click();
}
 
// ou suivant
if (event.getMouseWheelVelocityY() <= -1) {
suiv.click();
}
}
}
};
 
image = new Image();
this.setHeader(false);
 
imageConteneur = new Panel() ;
imageConteneur = new Panel();
imageConteneur.setBorder(false);
 
imageConteneur.add(image);
142,8 → 140,7
// il n'existe pas de méthode pour ajouter un listener pour le double
// clic sur une image
// alors on lui dit manuellement de capter l'évènement double clic
image.sinkEvents(Event.ONDBLCLICK);
image.sinkEvents(Event.ONMOUSEWHEEL);
//imageConteneur.sinkEvents(Event.ONMOUSEWHEEL);
 
// l'image de base est vide
image.setUrl("vide.jpg");
198,7 → 195,7
setIdImage(infos[3]) ;
 
verifierEtRetaillerImage();
//verifierEtRetaillerImage();
}
} else {
// sinon on met une image vide
228,6 → 225,66
*/
public void ajouterListeners() {
 
image.addLoadListener(new LoadListener() {
 
public void onError(Widget sender) {
// TODO Auto-generated method stub
}
 
public void onLoad(Widget sender) {
int max = Math.min(imageConteneur.getHeight(), imageConteneur.getWidth());
int[] tailleImage = calculerDimensions(getTailleImage(), max, max);
ExtElement imgElement = Ext.get(image.getElement());
if(animerTransition) {
AnimationConfig a = new AnimationConfig() ;
a.setDuration((float) dureeAnimation);
imgElement.setHeight(tailleImage[1], a);
imgElement.setWidth(tailleImage[0], a);
} else {
imgElement.setHeight(tailleImage[1], false);
imgElement.setWidth(tailleImage[0], false);
}
}
});
image.addClickListener(new ClickListener() {
 
public void onClick(Widget sender) {
Window.alert(""+Event.getCurrentEvent().getButton());
if(enClic) {
getIMediateur().doubleClicZoomImage();
} else {
Timer t = new Timer() {
public void run() {
enClic = false;
}
};
enClic = true;
t.schedule(800);
}
}
});
image.addMouseWheelListener(new MouseWheelListener() {
 
public void onMouseWheel(Widget sender, MouseWheelVelocity velocity) {
if(velocity.getDeltaY() > 0) {
suiv.click();
} else {
prev.click();
}
}
});
// gestion du clic sur le bouton précedent
prev.addClickListener(new ClickListener() {
 
272,7 → 329,6
verifierEtRetaillerImage();
}
});
 
}
 
/**
341,6 → 397,28
"" + nouvelleTailleY + "px");
}
public int[] calculerDimensions(int[] tailleXY, double tailleMax, double tailleConteneur) {
float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
float tailleOr = Math.min(new Float(tailleMax),new Float(tailleConteneur)) ;
float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
float[] XYresize = new float[2];
if(maxTaille == tailleXY[0]) {
float rapport = tailleXYf[1]/tailleXYf[0] ;
XYresize[0] = tailleOr ;
XYresize[1] = tailleOr*rapport ;
}else {
float rapport = tailleXYf[0]/tailleXYf[1] ;
XYresize[1] = tailleOr ;
XYresize[0] = tailleOr*rapport ;
}
int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
return res;
}
public void configDragAndDrop()
{