Subversion Repositories eFlore/Applications.del

Rev

Rev 592 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
445 benjamin 1
package org.tela_botanica.del.client.vues.rechercheobservations.resultats;
2
 
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
5
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
6
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
459 benjamin 7
import org.tela_botanica.del.client.modeles.InformationsRecherche;
8
import org.tela_botanica.del.client.modeles.ModeTri;
445 benjamin 9
import org.tela_botanica.del.client.modeles.Observation;
10
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
11
import org.tela_botanica.del.client.services.rest.ObservationService;
12
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
480 benjamin 13
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observations.ObservationPresenteur;
14
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observations.ObservationVue;
445 benjamin 15
 
459 benjamin 16
import com.google.gwt.event.dom.client.ClickEvent;
17
import com.google.gwt.event.dom.client.ClickHandler;
18
import com.google.gwt.event.dom.client.HasClickHandlers;
445 benjamin 19
import com.google.gwt.user.client.ui.HasWidgets;
20
import com.google.gwt.user.client.ui.IsWidget;
592 gduche 21
import com.google.gwt.user.client.ui.Label;
445 benjamin 22
 
23
public class ResultatsRechercheObservationsPresenteur extends Presenteur {
24
 
25
	private ObservationService serviceObs;
26
 
27
	public abstract interface Vue extends IsWidget {
28
 
29
		public HasWidgets getZoneObservations();
30
 
31
		public HasWidgets getZonePaginationHaut();
32
 
33
		public HasWidgets getZonePaginationBas();
34
 
35
		public void startChargement();
36
 
37
		public void stopChargement();
38
 
39
		public void nettoyer();
459 benjamin 40
 
41
		public HasClickHandlers getTriParDateAscendant();
42
 
43
		public HasClickHandlers getTriParDateDescendant();
564 benjamin 44
 
45
		public void afficherElementsAucunResultatTrouve();
46
 
47
		public void afficherElementsResultatsTrouves();
592 gduche 48
 
49
		public Label getLabelDate();
50
 
51
		public void masquerDateAscendant();
52
 
53
		public void masquerDateDescendant();
54
 
55
		public void afficherDateAscendant();
56
 
57
		public void afficherDateDescendant();
445 benjamin 58
	}
59
 
60
	private Vue vue;
592 gduche 61
	private ModeTri triCourantDate = ModeTri.TRI_ASCENDANT;
62
 
445 benjamin 63
	public ResultatsRechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
64
		this.vue = vue;
65
		this.serviceObs = serviceObs;
592 gduche 66
		vue.masquerDateAscendant();
67
		vue.masquerDateDescendant();
445 benjamin 68
	}
69
 
70
	public void go(HasWidgets composite) {
71
		composite.add(vue.asWidget());
72
		lancerRechercheEtCreerWidgetPagination();
459 benjamin 73
		gererEvenements();
445 benjamin 74
	}
75
 
76
	protected void gererEvenements() {
459 benjamin 77
 
595 gduche 78
 
79
		ClickHandler surClicDate = new ClickHandler() {
459 benjamin 80
			@Override
592 gduche 81
			public void onClick(ClickEvent event) {
82
 
83
				if (triCourantDate == ModeTri.TRI_ASCENDANT) {
84
					triCourantDate = ModeTri.TRI_DESCENDANT;
85
					vue.masquerDateAscendant();
86
					vue.afficherDateDescendant();
87
				} else {
88
					triCourantDate = ModeTri.TRI_ASCENDANT;
89
					vue.masquerDateDescendant();
90
					vue.afficherDateAscendant();
91
				}
92
 
459 benjamin 93
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
592 gduche 94
				informationsRechercheObservations.setTriParDate(triCourantDate);
491 benjamin 95
				informationsRechercheObservations.setTriParNbVotes(ModeTri.PAS_DE_TRI);
459 benjamin 96
				chercherEtAfficherObservationsPageEnCours();
97
			}
595 gduche 98
		};
99
 
100
		vue.getLabelDate().addClickHandler(surClicDate);
101
		vue.getTriParDateAscendant().addClickHandler(surClicDate);
102
		vue.getTriParDateDescendant().addClickHandler(surClicDate);
445 benjamin 103
	}
104
 
105
	public void chargerEtAfficherObservations(int debut, int fin) {
106
		vue.startChargement();
107
		vue.nettoyer();
108
		ObservationsCallback callback = new ObservationsCallback() {
109
 
110
			@Override
111
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
112
				afficherObservations(observationsRecues);
113
			}
114
		};
115
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
116
	}
117
 
118
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
119
		vue.nettoyer();
564 benjamin 120
 
121
		if (observationServiceResultat.getObservations() == null || observationServiceResultat.getObservations().size() == 0) {
122
			vue.afficherElementsAucunResultatTrouve();
445 benjamin 123
		}
564 benjamin 124
 
125
		else {
126
			vue.afficherElementsResultatsTrouves();
127
			for (Observation observation : observationServiceResultat.getObservations()) {
128
				ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
129
				presenteur.go(vue.getZoneObservations());
130
			}
131
		}
445 benjamin 132
		vue.stopChargement();
133
	}
134
 
135
	private void creerWidgetPagination(int nbObservations) {
136
		vue.getZonePaginationHaut().clear();
137
		vue.getZonePaginationBas().clear();
138
		PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
139
		PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
446 aurelien 140
		paginationPresenteurHaut.setGroupePagination("pagination_observations");
141
		paginationPresenteurBas.setGroupePagination("pagination_observations");
445 benjamin 142
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
143
		paginationPresenteurBas.go(vue.getZonePaginationBas());
144
	}
145
 
146
	private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
147
		PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheObservations()) {
148
 
149
			@Override
150
			public void chargerElements(int debut, int fin) {
151
				chargerEtAfficherObservations(debut, fin);
152
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
153
			}
154
 
155
			@Override
156
			public void actualiserPasCache(int pas) {
157
				CacheClient.getInstance().setPasPagination(pas);
158
			}
159
 
160
		};
161
		return paginationPresenteurHaut;
162
	}
163
 
164
	public void lancerRechercheEtCreerWidgetPagination() {
165
		ObservationsCallback callback = new ObservationsCallback() {
166
			@Override
167
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
168
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
169
				afficherObservations(observationsRecues);
170
			}
171
		};
172
 
173
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
174
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
175
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
176
	}
177
 
459 benjamin 178
	public void chercherEtAfficherObservationsPageEnCours() {
179
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
180
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
181
		chargerEtAfficherObservations(debut, fin);
182
	}
183
 
445 benjamin 184
}