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"); |
} |
} |