Subversion Repositories eFlore/Applications.del

Rev

Rev 2076 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1196 gduche 1
package org.tela_botanica.del.client.vues.identiplante.moteur;
161 gduche 2
 
1234 gduche 3
import org.tela_botanica.del.client.cache.CacheClient;
330 gduche 4
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
5
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
1183 gduche 6
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
7
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
161 gduche 8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
1010 aurelien 9
import org.tela_botanica.del.client.config.Config;
2054 aurelien 10
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
11
import org.tela_botanica.del.client.modeles.ActiviteUtilisateur;
453 aurelien 12
import org.tela_botanica.del.client.modeles.ModeRecherche;
2050 aurelien 13
import org.tela_botanica.del.client.modeles.Utilisateur;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
16
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
392 aurelien 17
import org.tela_botanica.del.client.services.rest.ObservationService;
445 benjamin 18
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
2054 aurelien 19
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
20
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
2109 mathias 21
import org.tela_botanica.del.client.utils.Analytics;
1196 gduche 22
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplantePresenteur;
23
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplanteVue;
161 gduche 24
 
1010 aurelien 25
import com.google.gwt.event.dom.client.ClickEvent;
26
import com.google.gwt.event.dom.client.ClickHandler;
27
import com.google.gwt.event.dom.client.HasClickHandlers;
2054 aurelien 28
import com.google.gwt.user.client.Timer;
1010 aurelien 29
import com.google.gwt.user.client.Window;
161 gduche 30
import com.google.gwt.user.client.ui.HasWidgets;
309 aurelien 31
import com.google.gwt.user.client.ui.IsWidget;
1183 gduche 32
import com.google.gwt.user.client.ui.Panel;
161 gduche 33
 
1196 gduche 34
public class MoteurIdentiplantePresenteur extends Presenteur {
436 benjamin 35
 
479 benjamin 36
	public interface Vue extends IsWidget {
330 gduche 37
		public HasWidgets getZoneRecherche();
436 benjamin 38
 
445 benjamin 39
		public HasWidgets getZoneResultats();
455 benjamin 40
 
1934 aurelien 41
		public HasClickHandlers getOngletAConfirmer();
1109 gduche 42
 
1234 gduche 43
		public HasClickHandlers getOngletADeterminer();
1109 gduche 44
 
1234 gduche 45
		public HasClickHandlers getOngletTout();
1444 raphael 46
 
47
		public HasClickHandlers getOngletValidees();
1109 gduche 48
 
2050 aurelien 49
		public HasClickHandlers getOngletMonActivite();
50
 
1234 gduche 51
		public void setOngletADeterminerActif();
52
 
53
		public void setOngletToutActif();
54
 
1934 aurelien 55
		public void setOngletAConfirmerActif();
1444 raphael 56
 
57
		public void setOngletValideesActif();
2050 aurelien 58
 
59
		void afficherCacherOngletMonActivite(boolean afficher);
60
 
61
		void setOngletMonActiviteActif();
62
 
63
		void setOngletActif(String onglet);
64
 
65
		public void afficherNbEvenements(String nbEvenements);
1234 gduche 66
 
2050 aurelien 67
		public void cacherNbEvenements();
309 aurelien 68
	}
335 benjamin 69
 
309 aurelien 70
	private Vue vue;
2054 aurelien 71
	private Timer timerRequeteActiviteUtilisateur = null;
436 benjamin 72
 
1196 gduche 73
	public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
309 aurelien 74
		this.vue = vue;
161 gduche 75
	}
76
 
77
	public void go(HasWidgets composite) {
436 benjamin 78
 
309 aurelien 79
		composite.add(vue.asWidget());
330 gduche 80
		ajouterMoteurRechercheAvancee();
455 benjamin 81
		gererEvenements();
2050 aurelien 82
		gererAffichageOngletMonActivite();
2054 aurelien 83
		gererTimerRequeteActiviteUtilisateur();
161 gduche 84
	}
335 benjamin 85
 
2050 aurelien 86
	private void gererAffichageOngletMonActivite() {
87
		vue.afficherCacherOngletMonActivite(CacheClient.getInstance().getUtilisateur().estIdentifie());
88
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
89
			@Override
90
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
91
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
92
				vue.afficherCacherOngletMonActivite(utilisateur.estIdentifie());
93
				vue.cacherNbEvenements();
94
				if(!utilisateur.estIdentifie()) {
95
					activerOnglet("tous");
96
				} else {
2054 aurelien 97
					if(utilisateur.getActivite().getNbEvenementsInt() > 0) {
98
						vue.afficherNbEvenements(utilisateur.getActivite().getNbEvenements());
99
						CacheClient.ajouterAuTitreOngletNavigateur(" ("+utilisateur.getActivite().getNbEvenements()+")");
2050 aurelien 100
					}
101
				}
102
			}
103
		});
104
	}
105
 
330 gduche 106
	protected void ajouterMoteurRechercheAvancee() {
406 gduche 107
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") {
453 aurelien 108
		}, ModeRecherche.MODE_OBSERVATION) {
335 benjamin 109
 
330 gduche 110
			@Override
335 benjamin 111
			public void lancerRecherche() {
445 benjamin 112
				chercherObservations();
161 gduche 113
			}
330 gduche 114
		};
115
		presenteur.go(vue.getZoneRecherche());
161 gduche 116
	}
117
 
445 benjamin 118
	public void chercherObservations() {
119
		vue.getZoneResultats().clear();
1467 aurelien 120
		CacheClient.getInstance().mettreAjourUrlCourante();
1234 gduche 121
		new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue()).go(vue.getZoneResultats());
166 gduche 122
	}
161 gduche 123
 
445 benjamin 124
	protected void gererEvenements() {
1234 gduche 125
		// Gestion du clic sur les onglets
2050 aurelien 126
		vue.getOngletTout().addClickHandler(new ClickHandler() {
1234 gduche 127
			@Override
128
			public void onClick(ClickEvent event) {
2050 aurelien 129
				activerOnglet("tous");
2109 mathias 130
				// stats
131
				Analytics.pageVisitee("Identiplante/tous");
1234 gduche 132
			}
133
		});
1109 gduche 134
 
2109 mathias 135
		vue.getOngletADeterminer().addClickHandler(new ClickHandler() {
1109 gduche 136
			@Override
137
			public void onClick(ClickEvent event) {
2050 aurelien 138
				activerOnglet("adeterminer");
2109 mathias 139
				// stats
140
				Analytics.pageVisitee("Identiplante/adeterminer");
1109 gduche 141
			}
142
		});
143
 
2109 mathias 144
		vue.getOngletAConfirmer().addClickHandler(new ClickHandler() {
1109 gduche 145
			@Override
146
			public void onClick(ClickEvent event) {
2050 aurelien 147
				activerOnglet("aconfirmer");
2109 mathias 148
				// stats
149
				Analytics.pageVisitee("Identiplante/aconfirmer");
1109 gduche 150
			}
151
		});
1444 raphael 152
 
2109 mathias 153
		vue.getOngletValidees().addClickHandler(new ClickHandler() {
1444 raphael 154
			@Override
155
			public void onClick(ClickEvent event) {
2050 aurelien 156
				activerOnglet("validees");
2109 mathias 157
				// stats
158
				Analytics.pageVisitee("Identiplante/validees");
1444 raphael 159
			}
160
		});
2050 aurelien 161
 
2109 mathias 162
		vue.getOngletMonActivite().addClickHandler(new ClickHandler() {
2050 aurelien 163
			@Override
164
			public void onClick(ClickEvent event) {
2076 aurelien 165
				// 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)
2054 aurelien 166
				int nbEvents = CacheClient.getInstance().getUtilisateur().getActivite().getNbEvenementsInt();
2076 aurelien 167
				nbEvents = Math.min(nbEvents, 50);
2050 aurelien 168
				if(CacheClient.getInstance().getPasPagination() < nbEvents) {
169
					CacheClient.getInstance().setPasPagination(nbEvents);
170
				}
171
 
172
				activerOnglet("monactivite");
2109 mathias 173
				// stats
174
				Analytics.pageVisitee("Identiplante/monactivite");
2050 aurelien 175
				vue.cacherNbEvenements();
2054 aurelien 176
				CacheClient.reinitialiserTitreOngletNavigateur();
2050 aurelien 177
			}
178
		});
359 benjamin 179
	}
2050 aurelien 180
 
2054 aurelien 181
 
182
	public void gererTimerRequeteActiviteUtilisateur() {
183
		timerRequeteActiviteUtilisateur = new Timer() {
184
			@Override
185
			public void run() {
186
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
187
				if(utilisateur.estIdentifie()) {
188
					UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret();
189
					serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() {
190
						@Override
191
						public void surRetour(ActiviteUtilisateur activite) {
192
							CacheClient.getInstance().getUtilisateur().setActivite(activite);
193
							if(activite.getNbEvenementsInt() > 0) {
194
								vue.afficherNbEvenements(activite.getNbEvenements());
195
								CacheClient.ajouterAuTitreOngletNavigateur(" ("+activite.getNbEvenements()+")");
196
							}
197
						}
198
					});
199
				}
200
			}
201
		};
202
 
203
		timerRequeteActiviteUtilisateur.scheduleRepeating(30000);
204
	}
205
 
2050 aurelien 206
	protected void activerOnglet(String onglet) {
207
		CacheClient.getInstance().setFiltreStatut(onglet);
208
		CacheClient.getInstance().setPageCouranteRechercheObservations(1);
209
		chercherObservations();
210
		vue.setOngletActif(onglet);
211
	}
161 gduche 212
}