Rev 1963 | Blame | Compare with Previous | Last modification | View Log | RSS feed
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'UiBinderinterface Binder extends UiBinder<Widget, DetailImageVue> {}private static Binder binder = GWT.create(Binder.class);@UiFieldprotected Image photoPrincipale;@UiFieldprotected HTML superpositionImage;@UiFieldprotected HTML texteAlternatif;public DetailImageVue() {initWidget(binder.createAndBindUi(this));photoPrincipale.addLoadHandler(new LoadHandler() {@Overridepublic void onLoad(LoadEvent event) {setTailleOptimale();}});Window.addResizeHandler(new ResizeHandler() {Timer resizeTimer = new Timer() {@Overridepublic void run() {setTailleOptimale();}};@Overridepublic 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 zoomsuperpositionImage.addClickHandler(new ClickHandler() {@Overridepublic 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");}}