Rev 1501 | Rev 1862 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.vues.pictoflora.resultats;import java.util.List;import org.tela_botanica.del.client.cache.CacheClient;import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;import org.tela_botanica.del.client.composants.pagination.PaginationVue;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.modeles.ModeTri;import org.tela_botanica.del.client.modeles.Protocole;import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;import org.tela_botanica.del.client.services.rest.ImageService;import org.tela_botanica.del.client.services.rest.ProtocoleService;import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;import org.tela_botanica.del.client.vues.pictoflora.resultats.images.ImagePresenteur;import org.tela_botanica.del.client.vues.pictoflora.resultats.images.ImageVue;import com.google.gwt.dom.client.NodeList;import com.google.gwt.dom.client.OptionElement;import com.google.gwt.dom.client.SelectElement;import com.google.gwt.event.dom.client.ChangeEvent;import com.google.gwt.event.dom.client.ChangeHandler;import com.google.gwt.event.dom.client.ClickEvent;import com.google.gwt.event.dom.client.ClickHandler;import com.google.gwt.event.dom.client.HasChangeHandlers;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;import com.google.gwt.user.client.ui.ListBox;public class ResultatPictofloraPresenteur {public interface Vue extends IsWidget {public void startChargement();public void nettoyer();public void creerPanneauxObservations(int size);public void stopChargement();public List<HasWidgets> getPanneauxImages();public HasWidgets getPanneauPagination();public HasWidgets getPanneauPaginationHaut();public HasClickHandlers getTriParNbVotesAscendant();public HasClickHandlers getTriParNbVotesDescendant();public HasClickHandlers getTriParPointsAscendant();public HasClickHandlers getTriParPointsDescendant();public HasClickHandlers getTriParDateAscendant();public HasClickHandlers getTriParDateDescendant();public HasClickHandlers getTriParNbTagsAscendant();public HasClickHandlers getTriParNbTagsDescendant();public void afficherElementsAucunResultatTrouve();public void afficherElementsResultatsTrouve();public HTMLPanel getImageTable();public HasClickHandlers getLabelVote();public void masquerVoteAscendant();public void masquerVoteDescendant();public void afficherVoteAscendant();public void afficherVoteDescendant();public HasClickHandlers getLabelDate();public void masquerDateAscendant();public void masquerDateDescendant();public void afficherDateAscendant();public void afficherDateDescendant();public HasClickHandlers getLabelTag();public void masquerTagAscendant();public void afficherTagDescendant();public void masquerTagDescendant();public void afficherTagAscendant();public HasClickHandlers getLabelPoints();public void afficherPointsAscendant();public void afficherPointsDescendant();public void masquerPointsAscendant();public void masquerPointsDescendant();}private Vue vue;private ImageService imageService;private final ProtocoleService protocoleService;private ModeTri triCourantVote = ModeTri.TRI_ASCENDANT;private ModeTri triCourantPoints = ModeTri.TRI_ASCENDANT;private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;private ModeTri triCourantTag = ModeTri.TRI_DESCENDANT;public ResultatPictofloraPresenteur(ImageService imageService, ProtocoleService protocoleService, Vue vue) {this.vue = vue;this.imageService = imageService;this.protocoleService=protocoleService;}public void go(HasWidgets composite) {composite.add(vue.asWidget());vue.startChargement();rechercherImagesEtCreerWidgetPagination();gererEvenements();vue.masquerVoteDescendant();vue.masquerVoteAscendant();vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();initialiserAPartirInfosCache();}private void initialiserAPartirInfosCache() {InformationsRecherche infos = CacheClient.getInstance().getInformationsRechercheImage();if(infos.getTriParDate() != ModeTri.PAS_DE_TRI) {mettreAJourAffichageTriDate();}if(infos.getTriParNbVotes() != ModeTri.PAS_DE_TRI) {mettreAJourAffichageTriVote();}if(infos.getTriParNbTags() != ModeTri.PAS_DE_TRI) {mettreAjourAffichageTriTag();}}public void gererEvenements() {ClickHandler surClicTriVote = new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {surClicTriVote();}};vue.getLabelVote().addClickHandler(surClicTriVote);vue.getTriParNbVotesAscendant().addClickHandler(surClicTriVote);vue.getTriParNbVotesDescendant().addClickHandler(surClicTriVote);ClickHandler surClicTriPoints = new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {surClicTriPoints();}};vue.getLabelPoints().addClickHandler(surClicTriPoints);vue.getTriParPointsAscendant().addClickHandler(surClicTriPoints);vue.getTriParPointsDescendant().addClickHandler(surClicTriPoints);ClickHandler surClicTriDate = new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {surClicTriDate();}};vue.getLabelDate().addClickHandler(surClicTriDate);vue.getTriParDateAscendant().addClickHandler(surClicTriDate);vue.getTriParDateDescendant().addClickHandler(surClicTriDate);ClickHandler surClicTriTag = new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {surClicTriTag();}};vue.getLabelTag().addClickHandler(surClicTriTag);vue.getTriParNbTagsAscendant().addClickHandler(surClicTriTag);vue.getTriParNbTagsDescendant().addClickHandler(surClicTriTag);BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {@Overridepublic void onChangementProtocole(EvenementChangementProtocole event) {InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();if (informationsRechercheImages.getTriParNbVotes() != ModeTri.PAS_DE_TRI) {informationsRechercheImages.setIdProtocoleSelectionne(event.getProtocole().getId() + "");chargerEtAfficherImagesPageEnCours();}}});}protected void surClicTriTag() {mettreAjourAffichageTriTag();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();informationsRechercheImages.setTriParNbTags(triCourantTag);informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbPoints(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAjourAffichageTriTag() {vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerVoteDescendant();vue.masquerVoteAscendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();if (triCourantTag == ModeTri.TRI_ASCENDANT) {triCourantTag = ModeTri.TRI_DESCENDANT;vue.masquerTagAscendant();vue.afficherTagDescendant();} else {triCourantTag = ModeTri.TRI_ASCENDANT;vue.masquerTagDescendant();vue.afficherTagAscendant();}}public void surClicTriVote() {mettreAJourAffichageTriVote();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();informationsRechercheImages.setTriParNbVotes(triCourantVote);informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbPoints(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAJourAffichageTriVote() {vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();if (triCourantVote == ModeTri.TRI_ASCENDANT) {triCourantVote = ModeTri.TRI_DESCENDANT;vue.masquerVoteAscendant();vue.afficherVoteDescendant();} else {triCourantVote = ModeTri.TRI_ASCENDANT;vue.masquerVoteDescendant();vue.afficherVoteAscendant();}}public void surClicTriPoints() {mettreAJourAffichageTriPoints();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();informationsRechercheImages.setTriParNbPoints(triCourantPoints);informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAJourAffichageTriPoints() {vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerVoteAscendant();vue.masquerVoteDescendant();if (triCourantPoints == ModeTri.TRI_ASCENDANT) {triCourantPoints = ModeTri.TRI_DESCENDANT;vue.masquerPointsAscendant();vue.afficherPointsDescendant();} else {triCourantPoints = ModeTri.TRI_ASCENDANT;vue.masquerPointsDescendant();vue.afficherPointsAscendant();}}public void surClicTriDate() {mettreAJourAffichageTriDate();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();informationsRechercheImages.setTriParDate(triCourantDate);informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbPoints(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAJourAffichageTriDate() {vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerVoteDescendant();vue.masquerVoteAscendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();if (triCourantDate == ModeTri.TRI_ASCENDANT) {triCourantDate = ModeTri.TRI_DESCENDANT;vue.masquerDateAscendant();vue.afficherDateDescendant();} else {triCourantDate = ModeTri.TRI_ASCENDANT;vue.masquerDateDescendant();vue.afficherDateAscendant();}}public void rechercherImagesEtCreerWidgetPagination() {// appel du service d'image pour avoir le nb total d'elements pour la// paginationImagesParTaxonCallback callback = new ImagesParTaxonCallback() {@Overridepublic void surRetour(ImageServiceResultat imagesRecues) {creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());afficherImages(imagesRecues);}@Overridepublic void surErreur(String messageErreur) {Window.alert(messageErreur);}};final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), debut, fin, callback);}private void chargerEtAfficherImages(final int premier, final int dernier) {vue.startChargement();vue.nettoyer();ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {@Overridepublic void surRetour(ImageServiceResultat imagesRecues) {afficherImages(imagesRecues);}@Overridepublic void surErreur(String messageErreur) {Window.alert(messageErreur);}};imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);}public void afficherImages(ImageServiceResultat imageServiceResult) {List<Image> images = imageServiceResult.getImages();if (images == null || images.size() == 0) {vue.afficherElementsAucunResultatTrouve();} else {vue.afficherElementsResultatsTrouve();for (Image image : images) {ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());imagePresenteur.go(vue.getImageTable());}}CacheClient.getInstance().mettreAjourUrlCourante();vue.stopChargement();}private void creerWidgetPagination(int nbImages) {PaginationPresenteur imagesPaginationPresenteurHaut = creerPresenteurPagination(nbImages);PaginationPresenteur imagesPaginationPresenteurBas = creerPresenteurPagination(nbImages);imagesPaginationPresenteurHaut.setGroupePagination("pagination_images");imagesPaginationPresenteurBas.setGroupePagination("pagination_images");imagesPaginationPresenteurHaut.go(vue.getPanneauPaginationHaut());imagesPaginationPresenteurBas.go(vue.getPanneauPagination());}public PaginationPresenteur creerPresenteurPagination(int nbImages) {PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) {@Overridepublic void chargerElements(int debut, int fin) {chargerEtAfficherImages(debut, fin);CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());}@Overridepublic void actualiserPasCache(int pas) {CacheClient.getInstance().setPasPagination(pas);}};return imagesPaginationPresenteur;}public void chargerEtAfficherImagesPageEnCours() {final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();chargerEtAfficherImages(debut, fin);}public Vue getVue() {return vue;}}