New file |
0,0 → 1,100 |
package org.tela_botanica.del.client.composants.observations; |
|
import java.util.List; |
|
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilantePresenteur; |
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImageVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.Observation; |
|
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
|
public class ObservationImagesPresenteur extends Presenteur { |
|
public abstract interface Vue extends IsWidget { |
public HasClickHandlers getPhotoPrincipale(); |
public HasWidgets getPhotos(); |
public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image); |
public void ajouterPhoto(Image image, ClickHandler gestionnaireClic); |
} |
|
private Vue vue; |
|
private Observation observation; |
|
private Image imagePrincipale; |
|
private List<Image> listeImages; |
|
public ObservationImagesPresenteur(Vue vue, Observation observation) { |
this.observation = observation; |
this.vue = vue; |
} |
|
public void chargerImagesObservation() { |
|
listeImages = observation.getImages(); |
|
if (listeImages.size() > 0){ |
final Image imagePrincipale = listeImages.get(0); |
vue.chargerImagePrincipale(imagePrincipale); |
vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClic(0, imagePrincipale)); |
} |
|
int nbImage = 0; |
for (final org.tela_botanica.del.client.modeles.Image imageCourante : listeImages) { |
if(!imageCourante.equals(imagePrincipale)) { |
int nbImageEncours = nbImage; |
vue.ajouterPhoto(imageCourante, creerGestionnaireClic(nbImageEncours, imageCourante)); |
} |
nbImage++; |
} |
} |
|
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
chargerImagesObservation(); |
//gererEvenements(); |
} |
|
protected void gererEvenements() { |
|
} |
|
protected ClickHandler creerGestionnaireClic(final int indexImage, final Image imageCourante) { |
ClickHandler gestionnaireClic = new ClickHandler() { |
public void onClick(ClickEvent event) { |
FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) { |
|
@Override |
public void surClicBoutonSuivant() { |
int index = getIndexElementAffiche() + 1; |
if(index >= listeImages.size()) { |
index = 0; |
} |
setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue())); |
} |
|
@Override |
public void surClicBoutonPrecedent() { |
int index = getIndexElementAffiche() - 1; |
if(index < 0) { |
index = listeImages.size() - 1; |
} |
setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue())); |
} |
}; |
presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue())); |
presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1)); |
} |
}; |
return gestionnaireClic; |
} |
} |