Subversion Repositories eFlore/Applications.del

Rev

Rev 2050 | Rev 2076 | Go to most recent revision | 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) {
156
				// S'il y a de nouveau évènements sur l'obs, on les affichera tous sur la même page
2054 aurelien 157
				int nbEvents = CacheClient.getInstance().getUtilisateur().getActivite().getNbEvenementsInt();
2050 aurelien 158
				if(CacheClient.getInstance().getPasPagination() < nbEvents) {
159
					CacheClient.getInstance().setPasPagination(nbEvents);
160
				}
161
 
162
				activerOnglet("monactivite");
163
				vue.cacherNbEvenements();
2054 aurelien 164
				CacheClient.reinitialiserTitreOngletNavigateur();
2050 aurelien 165
			}
166
		});
359 benjamin 167
	}
2050 aurelien 168
 
2054 aurelien 169
 
170
	public void gererTimerRequeteActiviteUtilisateur() {
171
		timerRequeteActiviteUtilisateur = new Timer() {
172
			@Override
173
			public void run() {
174
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
175
				if(utilisateur.estIdentifie()) {
176
					UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret();
177
					serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() {
178
						@Override
179
						public void surRetour(ActiviteUtilisateur activite) {
180
							CacheClient.getInstance().getUtilisateur().setActivite(activite);
181
							if(activite.getNbEvenementsInt() > 0) {
182
								vue.afficherNbEvenements(activite.getNbEvenements());
183
								CacheClient.ajouterAuTitreOngletNavigateur(" ("+activite.getNbEvenements()+")");
184
							}
185
						}
186
					});
187
				}
188
			}
189
		};
190
 
191
		timerRequeteActiviteUtilisateur.scheduleRepeating(30000);
192
	}
193
 
2050 aurelien 194
	protected void activerOnglet(String onglet) {
195
		CacheClient.getInstance().setFiltreStatut(onglet);
196
		CacheClient.getInstance().setPageCouranteRechercheObservations(1);
197
		chercherObservations();
198
		vue.setOngletActif(onglet);
199
	}
161 gduche 200
}