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/detailImage.css
New file
0,0 → 1,23
.detailImage {
z-index:1500;
padding: 5px 5px 50px;
width:600px;
background:white;
margin:0 auto;
margin-top:75px;
}
 
.detailImage > *{
width: inherit;
height: inherit;
}
 
.superpositionImage {
position: absolute;
}
 
.superpositionImage:hover {
background-image: url("img/plein_ecran.png");
background-position: bottom 10px left 10px;
background-repeat: no-repeat;
}
/branches/v1.12-magnesium/src/org/tela_botanica/del/client/composants/images/DetailImageVue.ui.xml
New file
0,0 → 1,13
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.resources.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
 
<ui:style src="detailImage.css" />
<g:HTMLPanel styleName="{style.detailImage}">
<g:HTML ui:field="superpositionImage" styleName="{style.superpositionImage}">
</g:HTML>
<g:Image ui:field="photoPrincipale" />
<g:HTML ui:field="texteAlternatif"/>
</g:HTMLPanel>
</ui:UiBinder>
/branches/v1.12-magnesium/src/org/tela_botanica/del/client/composants/images/DetailImagePresenteur.java
New file
0,0 → 1,31
package org.tela_botanica.del.client.composants.images;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class DetailImagePresenteur extends Presenteur {
 
public abstract interface Vue extends IsWidget {
public abstract void chargerImage(Image image);
}
public Vue vue;
public DetailImagePresenteur(Image image, Vue vue) {
this.vue = vue;
this.vue.chargerImage(image);
}
 
@Override
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
}
 
@Override
protected void gererEvenements() {
// TODO Auto-generated method stub
}
 
}
/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");
}
}