Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2210 → Rev 2211

/branches/v1.12-magnesium/src/org/tela_botanica/del/client/composants/images/DetailImageVue.java
New file
0,0 → 1,127
package org.tela_botanica.del.client.composants.images;
 
import org.tela_botanica.del.client.i18n.I18n;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.event.dom.client.MouseOutEvent;
import com.google.gwt.event.dom.client.MouseOutHandler;
import com.google.gwt.event.dom.client.MouseOverEvent;
import com.google.gwt.event.dom.client.MouseOverHandler;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageVue extends Composite implements DetailImagePresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, DetailImageVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected Image photoPrincipale;
 
@UiField
protected HTML superpositionImage;
 
@UiField
protected HTML texteAlternatif;
 
public DetailImageVue() {
initWidget(binder.createAndBindUi(this));
photoPrincipale.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
setTailleOptimale();
}
});
Window.addResizeHandler(new ResizeHandler() {
Timer resizeTimer = new Timer() {
@Override
public void run() {
setTailleOptimale();
}
};
@Override
public void onResize(ResizeEvent event) {
resizeTimer.cancel();
resizeTimer.schedule(250);
}
});
}
 
public void chargerImage(org.tela_botanica.del.client.modeles.Image imageCourante) {
setUrlImage(imageCourante.getUrlFormat("L"));
setAltImage(imageCourante.getObservation().getAuteur() + " - " + imageCourante.getObservation().getNomRetenu());
setTitle("Cliquer pour ouvrir l'image originale dans un nouvel onglet");
setTexteAlternatif("<strong> "+I18n.getVocabulary().imageNumero()+""+ imageCourante.getIdImage() +" - "+ imageCourante.getObservation().getNomRetenuFormateReferentiel() + " " + I18n.getVocabulary().par() + " " + imageCourante.getObservation().getAuteur() + "</strong><br />"
+ I18n.getVocabulary().publiee() + " "+ imageCourante.getObservation().getDateReleve() + " - " + imageCourante.getObservation().getLocaliteAvecIdFormatee());
final String urlImageOriginale = imageCourante.getUrlFormat("O");
 
// ouvre l'image originale dans un nouvel onglet, en attendant un futur outil de zoom
superpositionImage.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.open(urlImageOriginale, "_blank", "");
}
});
}
 
public void setUrlImage(String urlImage) {
photoPrincipale.setUrl(urlImage);
}
 
// définit le "alt" sur l'image (ajouté pour l'intégration aux réseaux sociaux)
public void setAltImage(String altImage) {
photoPrincipale.setAltText(altImage);
}
 
public void setTexteAlternatif(String texteAlternatif) {
this.texteAlternatif.setHTML(texteAlternatif);
}
public void setTailleOptimale() {
double fenetreH = Window.getClientHeight();
double fenetreW = Window.getClientWidth();
double photoH = photoPrincipale.getHeight();
double photoW = photoPrincipale.getWidth();
double rapport = 0;
double reduction = 150;
if(photoH > (fenetreH - reduction) || photoW > (fenetreW - reduction)) {
if(photoH >= (fenetreH - reduction)) {
rapport = photoW/photoH;
photoH = fenetreH-reduction;
photoW = photoH*rapport;
}
if(photoW >= (fenetreW - reduction)) {
rapport = photoH/photoW;
photoW = fenetreW-reduction;
photoH = photoW*rapport;
}
}
setWidth(photoW+"px");
setHeight(photoH+"px");
}
}