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() |
{ |
|