New file |
0,0 → 1,183 |
package org.tela_botanica.del.client.vues.comparaisoneflore; |
|
import java.util.ArrayList; |
import java.util.List; |
|
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImageVue; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ImageServiceResultat; |
import org.tela_botanica.del.client.modeles.InformationsRecherche; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.EvenementComparaisonEflore; |
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.GestionnaireEvenementComparaisonEflore; |
import org.tela_botanica.del.client.services.rest.ImageService; |
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback; |
|
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.Window; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
|
public class ComparaisonEflorePresenteur { |
|
public interface Vue extends IsWidget { |
public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image); |
|
public void chargerImagesEflore(List<org.tela_botanica.del.client.modeles.Image> observationsEflore, int indexImage); |
|
public HasClickHandlers getScrollLeftImage(); |
|
public HasClickHandlers getScrollRightImage(); |
|
public int getCurrentIndexImages(); |
|
public void startChargement(); |
|
public void stopChargement(); |
|
public void afficherAucuneImageTrouvee(); |
|
public HTMLPanel getFormulaireRecherche(); |
|
public void setCurrentIndexImages(int index); |
|
public com.google.gwt.user.client.ui.Image getImagePrincipale(); |
|
public com.google.gwt.user.client.ui.Image getImageEflore(); |
} |
|
private Vue vue; |
private final ImageService imageService; |
|
private Image imagePrincipale; |
private String nomTaxonComparaison; |
private List<org.tela_botanica.del.client.modeles.Image> imagesEflore = new ArrayList<Image>(); |
private int page = 0; |
private int nbImagesPreFetch = 10; |
|
public ComparaisonEflorePresenteur(Vue vue, ImageService imageService) { |
this.vue = vue; |
this.imagePrincipale = CacheClient.getInstance().getImageCourante(); |
this.nomTaxonComparaison = CacheClient.getInstance().getTaxonPourRechercheEflore(); |
this.imageService = imageService; |
} |
|
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
vue.chargerImagePrincipale(imagePrincipale); |
chargerObservationsEflore(); |
gererEvenements(); |
new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRecherche()); |
} |
|
public void chargerObservationsEflore() { |
|
int debut = (page * nbImagesPreFetch) + 1; |
int fin = (page + 1) * nbImagesPreFetch; |
|
vue.startChargement(); |
|
InformationsRecherche informationsRecherche = new InformationsRecherche(); |
informationsRecherche.setTaxon(nomTaxonComparaison); |
|
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() { |
|
@Override |
public void surRetour(ImageServiceResultat imagesRecues) { |
if (imagesRecues == null || imagesRecues.getImages() == null || imagesRecues.getImages().size() == 0) { |
vue.afficherAucuneImageTrouvee(); |
} else { |
addImagesEflore(imagesRecues.getImages()); |
vue.stopChargement(); |
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages()); |
} |
} |
|
@Override |
public void surErreur(String messageErreur) { |
vue.afficherAucuneImageTrouvee(); |
Window.alert(messageErreur); |
} |
|
}; |
|
imageService.getImagesParTaxon(informationsRecherche, debut, fin, callback); |
|
} |
|
private void gererEvenements() { |
vue.getScrollLeftImage().addClickHandler(new ClickHandler() { |
|
@Override |
public void onClick(ClickEvent event) { |
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() - 1); |
} |
}); |
|
vue.getScrollRightImage().addClickHandler(new ClickHandler() { |
|
@Override |
public void onClick(ClickEvent event) { |
|
if (vue.getCurrentIndexImages() == imagesEflore.size() - 1) { |
page += 1; |
vue.setCurrentIndexImages(vue.getCurrentIndexImages()+1); |
chargerObservationsEflore(); |
} else { |
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() + 1); |
} |
} |
}); |
|
BusEvenementiel.getInstance().addHandler(EvenementComparaisonEflore.TYPE, new GestionnaireEvenementComparaisonEflore() { |
|
@Override |
public void onComparaisonEflore(EvenementComparaisonEflore event) { |
nomTaxonComparaison = event.getTaxonDemande(); |
page=0; |
vue.setCurrentIndexImages(0); |
getImagesEflore().clear(); |
chargerObservationsEflore(); |
} |
}); |
|
vue.getImagePrincipale().addClickHandler(new ClickHandler() { |
|
@Override |
public void onClick(ClickEvent arg0) { |
FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(imagePrincipale, new DetailImageVue())); |
presenteurGalerie.afficherBoutonsSuivantsPrecedents(false); |
} |
}); |
|
vue.getImageEflore().addClickHandler(new ClickHandler() { |
|
@Override |
public void onClick(ClickEvent arg0) { |
FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(imagesEflore.get(vue.getCurrentIndexImages()), new DetailImageVue())); |
presenteurGalerie.afficherBoutonsSuivantsPrecedents(false); |
} |
}); |
} |
|
public List<org.tela_botanica.del.client.modeles.Image> getImagesEflore() { |
return imagesEflore; |
} |
|
public void addImagesEflore(List<org.tela_botanica.del.client.modeles.Image> imagesEflore) { |
this.imagesEflore.addAll(imagesEflore); |
} |
|
|
|
} |