Subversion Repositories eFlore/Applications.del

Rev

Rev 2054 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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