New file |
0,0 → 1,212 |
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() { |
@Override |
public 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) { |
|
@Override |
public 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 onglets |
vue.getOngletTout().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
activerOnglet("tous"); |
// stats |
Analytics.pageVisitee("Identiplante/tous"); |
} |
}); |
|
vue.getOngletADeterminer().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
activerOnglet("adeterminer"); |
// stats |
Analytics.pageVisitee("Identiplante/adeterminer"); |
} |
}); |
|
vue.getOngletAConfirmer().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
activerOnglet("aconfirmer"); |
// stats |
Analytics.pageVisitee("Identiplante/aconfirmer"); |
} |
}); |
|
vue.getOngletValidees().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
activerOnglet("validees"); |
// stats |
Analytics.pageVisitee("Identiplante/validees"); |
} |
}); |
|
vue.getOngletMonActivite().addClickHandler(new ClickHandler() { |
@Override |
public 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"); |
// stats |
Analytics.pageVisitee("Identiplante/monactivite"); |
vue.cacherNbEvenements(); |
CacheClient.reinitialiserTitreOngletNavigateur(); |
} |
}); |
} |
|
|
public void gererTimerRequeteActiviteUtilisateur() { |
timerRequeteActiviteUtilisateur = new Timer() { |
@Override |
public void run() { |
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur(); |
if(utilisateur.estIdentifie()) { |
UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret(); |
serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() { |
@Override |
public 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); |
} |
} |