Rev 1064 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
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.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 org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;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() {@Overridepublic 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());}}@Overridepublic void surErreur(String messageErreur) {vue.afficherAucuneImageTrouvee();Window.alert(messageErreur);}};imageService.getImagesParTaxon(informationsRecherche, debut, fin, callback);}private void gererEvenements() {vue.getScrollLeftImage().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() - 1);}});vue.getScrollRightImage().addClickHandler(new ClickHandler() {@Overridepublic 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() {@Overridepublic void onComparaisonEflore(EvenementComparaisonEflore event) {nomTaxonComparaison = event.getTaxonDemande();page=0;vue.setCurrentIndexImages(0);getImagesEflore().clear();chargerObservationsEflore();}});vue.getImagePrincipale().addClickHandler(new ClickHandler() {@Overridepublic 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() {@Overridepublic 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);}}