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