Rev 2076 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.vues.identiplante.moteur;import org.tela_botanica.del.client.cache.CacheClient;import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;import org.tela_botanica.del.client.composants.presenteur.Presenteur;import org.tela_botanica.del.client.config.Config;import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;import org.tela_botanica.del.client.modeles.ActiviteUtilisateur;import org.tela_botanica.del.client.modeles.ModeRecherche;import org.tela_botanica.del.client.modeles.Utilisateur;import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;import org.tela_botanica.del.client.services.rest.ObservationService;import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;import org.tela_botanica.del.client.utils.Analytics;import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplantePresenteur;import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplanteVue;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.Timer;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.HasWidgets;import com.google.gwt.user.client.ui.IsWidget;import com.google.gwt.user.client.ui.Panel;public class MoteurIdentiplantePresenteur extends Presenteur {public interface Vue extends IsWidget {public HasWidgets getZoneRecherche();public HasWidgets getZoneResultats();public HasClickHandlers getOngletAConfirmer();public HasClickHandlers getOngletADeterminer();public HasClickHandlers getOngletTout();public HasClickHandlers getOngletValidees();public HasClickHandlers getOngletMonActivite();public void setOngletADeterminerActif();public void setOngletToutActif();public void setOngletAConfirmerActif();public void setOngletValideesActif();void afficherCacherOngletMonActivite(boolean afficher);void setOngletMonActiviteActif();void setOngletActif(String onglet);public void afficherNbEvenements(String nbEvenements);public void cacherNbEvenements();}private Vue vue;private Timer timerRequeteActiviteUtilisateur = null;public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {this.vue = vue;}public void go(HasWidgets composite) {composite.add(vue.asWidget());ajouterMoteurRechercheAvancee();gererEvenements();gererAffichageOngletMonActivite();gererTimerRequeteActiviteUtilisateur();}private void gererAffichageOngletMonActivite() {vue.afficherCacherOngletMonActivite(CacheClient.getInstance().getUtilisateur().estIdentifie());BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {@Overridepublic void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();vue.afficherCacherOngletMonActivite(utilisateur.estIdentifie());vue.cacherNbEvenements();if(!utilisateur.estIdentifie()) {activerOnglet("tous");} else {if(utilisateur.getActivite().getNbEvenementsInt() > 0) {vue.afficherNbEvenements(utilisateur.getActivite().getNbEvenements());CacheClient.ajouterAuTitreOngletNavigateur(" ("+utilisateur.getActivite().getNbEvenements()+")");}}}});}protected void ajouterMoteurRechercheAvancee() {MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") {}, ModeRecherche.MODE_OBSERVATION) {@Overridepublic void lancerRecherche() {chercherObservations();}};presenteur.go(vue.getZoneRecherche());}public void chercherObservations() {vue.getZoneResultats().clear();CacheClient.getInstance().mettreAjourUrlCourante();new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue()).go(vue.getZoneResultats());}protected void gererEvenements() {// Gestion du clic sur les ongletsvue.getOngletTout().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {activerOnglet("tous");// statsAnalytics.pageVisitee("Identiplante/tous");}});vue.getOngletADeterminer().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {activerOnglet("adeterminer");// statsAnalytics.pageVisitee("Identiplante/adeterminer");}});vue.getOngletAConfirmer().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {activerOnglet("aconfirmer");// statsAnalytics.pageVisitee("Identiplante/aconfirmer");}});vue.getOngletValidees().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {activerOnglet("validees");// statsAnalytics.pageVisitee("Identiplante/validees");}});vue.getOngletMonActivite().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {// S'il y a de nouveau évènements sur l'obs, on les affichera tous sur la même page (dans la limite de 50)int nbEvents = CacheClient.getInstance().getUtilisateur().getActivite().getNbEvenementsInt();nbEvents = Math.min(nbEvents, 50);if(CacheClient.getInstance().getPasPagination() < nbEvents) {CacheClient.getInstance().setPasPagination(nbEvents);}activerOnglet("monactivite");// statsAnalytics.pageVisitee("Identiplante/monactivite");vue.cacherNbEvenements();CacheClient.reinitialiserTitreOngletNavigateur();}});}public void gererTimerRequeteActiviteUtilisateur() {timerRequeteActiviteUtilisateur = new Timer() {@Overridepublic void run() {Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();if(utilisateur.estIdentifie()) {UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret();serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() {@Overridepublic void surRetour(ActiviteUtilisateur activite) {CacheClient.getInstance().getUtilisateur().setActivite(activite);if(activite.getNbEvenementsInt() > 0) {vue.afficherNbEvenements(activite.getNbEvenements());CacheClient.ajouterAuTitreOngletNavigateur(" ("+activite.getNbEvenements()+")");}}});}}};timerRequeteActiviteUtilisateur.scheduleRepeating(30000);}protected void activerOnglet(String onglet) {CacheClient.getInstance().setFiltreStatut(onglet);CacheClient.getInstance().setPageCouranteRechercheObservations(1);chercherObservations();vue.setOngletActif(onglet);}}