Rev 1934 | 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.core.shared.GWT;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 getTriParMoyenneArithmetiqueAscendant();public HasClickHandlers getTriParMoyenneArithmetiqueDescendant();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 getLabelMoyenneArithmetique();public void masquerMoyenneArithmetiqueAscendant();public void masquerMoyenneArithmetiqueDescendant();public void afficherMoyenneArithmetiqueAscendant();public void afficherMoyenneArithmetiqueDescendant();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 ModeTri triCourantMoyenneArithmetique = 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;}public void go(HasWidgets composite) {composite.add(vue.asWidget());vue.startChargement();rechercherImagesEtCreerWidgetPagination();gererEvenements();vue.masquerMoyenneArithmetiqueDescendant();vue.masquerMoyenneArithmetiqueAscendant();vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();initialiserAPartirInfosCache();}private void initialiserAPartirInfosCache() {InformationsRecherche infos = CacheClient.getInstance().getInformationsRechercheImage();if (infos.getTriParDatePublication() != ModeTri.PAS_DE_TRI) {triCourantDate = infos.getTriParDatePublication();mettreAJourAffichageTriDate();}if (infos.getTriParMoyenneArithmetique() != ModeTri.PAS_DE_TRI) {triCourantMoyenneArithmetique = infos.getTriParMoyenneArithmetique();mettreAJourAffichageTriMoyenneArithmetique();}if (infos.getTriParNbPoints() != ModeTri.PAS_DE_TRI) {triCourantPoints = infos.getTriParNbPoints();mettreAJourAffichageTriPoints();}if (infos.getTriParNbTags() != ModeTri.PAS_DE_TRI) {triCourantTag = infos.getTriParNbTags();mettreAjourAffichageTriTag();}}public void gererEvenements() {ClickHandler surClicTriMoyenneArithmetique = new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {surClicTriMoyenneArithmetique();}};vue.getLabelMoyenneArithmetique().addClickHandler(surClicTriMoyenneArithmetique);vue.getTriParMoyenneArithmetiqueAscendant().addClickHandler(surClicTriMoyenneArithmetique);vue.getTriParMoyenneArithmetiqueDescendant().addClickHandler(surClicTriMoyenneArithmetique);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.getTriParMoyenneArithmetique() != ModeTri.PAS_DE_TRI) {informationsRechercheImages.setIdProtocoleSelectionne(event.getProtocole().getId() + "");chargerEtAfficherImagesPageEnCours();}}});}protected void surClicTriTag() {triCourantTag = (triCourantTag == ModeTri.TRI_ASCENDANT) ? ModeTri.TRI_DESCENDANT : ModeTri.TRI_ASCENDANT;mettreAjourAffichageTriTag();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();informationsRechercheImages.setTriParNbTags(triCourantTag);informationsRechercheImages.setTriParDatePublication(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParMoyenneArithmetique(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbPoints(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAjourAffichageTriTag() {vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerMoyenneArithmetiqueDescendant();vue.masquerMoyenneArithmetiqueAscendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();if (triCourantTag == ModeTri.TRI_ASCENDANT) {vue.masquerTagDescendant();vue.afficherTagAscendant();} else {vue.masquerTagAscendant();vue.afficherTagDescendant();}}public void surClicTriMoyenneArithmetique() {triCourantMoyenneArithmetique = (triCourantMoyenneArithmetique == ModeTri.TRI_ASCENDANT) ? ModeTri.TRI_DESCENDANT : ModeTri.TRI_ASCENDANT;mettreAJourAffichageTriMoyenneArithmetique();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();informationsRechercheImages.setTriParMoyenneArithmetique(triCourantMoyenneArithmetique);informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");informationsRechercheImages.setTriParDatePublication(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbPoints(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAJourAffichageTriMoyenneArithmetique() {vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();if (triCourantMoyenneArithmetique == ModeTri.TRI_ASCENDANT) {vue.masquerMoyenneArithmetiqueDescendant();vue.afficherMoyenneArithmetiqueAscendant();} else {vue.masquerMoyenneArithmetiqueAscendant();vue.afficherMoyenneArithmetiqueDescendant();}}public void surClicTriPoints() {triCourantPoints = (triCourantPoints == ModeTri.TRI_ASCENDANT) ? ModeTri.TRI_DESCENDANT : ModeTri.TRI_ASCENDANT;mettreAJourAffichageTriPoints();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();informationsRechercheImages.setTriParNbPoints(triCourantPoints);informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");informationsRechercheImages.setTriParDatePublication(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI);informationsRechercheImages.setTriParMoyenneArithmetique(ModeTri.PAS_DE_TRI);chargerEtAfficherImagesPageEnCours();}private void mettreAJourAffichageTriPoints() {vue.masquerDateDescendant();vue.masquerDateAscendant();vue.masquerTagAscendant();vue.masquerTagDescendant();vue.masquerMoyenneArithmetiqueAscendant();vue.masquerMoyenneArithmetiqueDescendant();if (triCourantPoints == ModeTri.TRI_ASCENDANT) {vue.masquerPointsDescendant();vue.afficherPointsAscendant();} else {vue.masquerPointsAscendant();vue.afficherPointsDescendant();}}public void surClicTriDate() {triCourantDate = (triCourantDate == ModeTri.TRI_ASCENDANT) ? ModeTri.TRI_DESCENDANT : ModeTri.TRI_ASCENDANT;mettreAJourAffichageTriDate();InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();informationsRechercheImages.setTriParDatePublication(triCourantDate);informationsRechercheImages.setTriParMoyenneArithmetique(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.masquerMoyenneArithmetiqueDescendant();vue.masquerMoyenneArithmetiqueAscendant();vue.masquerPointsAscendant();vue.masquerPointsDescendant();if (triCourantDate == ModeTri.TRI_ASCENDANT) {vue.masquerDateDescendant();vue.afficherDateAscendant();} else {vue.masquerDateAscendant();vue.afficherDateDescendant();}}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, imageService, 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;}}