Subversion Repositories eFlore/Applications.del

Rev

Rev 564 | 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
 
592 gduche 78
		vue.getLabelDate().addClickHandler(new ClickHandler() {
459 benjamin 79
			@Override
592 gduche 80
			public void onClick(ClickEvent event) {
81
 
82
				if (triCourantDate == ModeTri.TRI_ASCENDANT) {
83
					triCourantDate = ModeTri.TRI_DESCENDANT;
84
					vue.masquerDateAscendant();
85
					vue.afficherDateDescendant();
86
				} else {
87
					triCourantDate = ModeTri.TRI_ASCENDANT;
88
					vue.masquerDateDescendant();
89
					vue.afficherDateAscendant();
90
				}
91
 
459 benjamin 92
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
592 gduche 93
				informationsRechercheObservations.setTriParDate(triCourantDate);
491 benjamin 94
				informationsRechercheObservations.setTriParNbVotes(ModeTri.PAS_DE_TRI);
459 benjamin 95
				chercherEtAfficherObservationsPageEnCours();
96
			}
97
		});
445 benjamin 98
	}
99
 
100
	public void chargerEtAfficherObservations(int debut, int fin) {
101
		vue.startChargement();
102
		vue.nettoyer();
103
		ObservationsCallback callback = new ObservationsCallback() {
104
 
105
			@Override
106
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
107
				afficherObservations(observationsRecues);
108
			}
109
		};
110
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
111
	}
112
 
113
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
114
		vue.nettoyer();
564 benjamin 115
 
116
		if (observationServiceResultat.getObservations() == null || observationServiceResultat.getObservations().size() == 0) {
117
			vue.afficherElementsAucunResultatTrouve();
445 benjamin 118
		}
564 benjamin 119
 
120
		else {
121
			vue.afficherElementsResultatsTrouves();
122
			for (Observation observation : observationServiceResultat.getObservations()) {
123
				ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
124
				presenteur.go(vue.getZoneObservations());
125
			}
126
		}
445 benjamin 127
		vue.stopChargement();
128
	}
129
 
130
	private void creerWidgetPagination(int nbObservations) {
131
		vue.getZonePaginationHaut().clear();
132
		vue.getZonePaginationBas().clear();
133
		PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
134
		PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
446 aurelien 135
		paginationPresenteurHaut.setGroupePagination("pagination_observations");
136
		paginationPresenteurBas.setGroupePagination("pagination_observations");
445 benjamin 137
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
138
		paginationPresenteurBas.go(vue.getZonePaginationBas());
139
	}
140
 
141
	private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
142
		PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheObservations()) {
143
 
144
			@Override
145
			public void chargerElements(int debut, int fin) {
146
				chargerEtAfficherObservations(debut, fin);
147
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
148
			}
149
 
150
			@Override
151
			public void actualiserPasCache(int pas) {
152
				CacheClient.getInstance().setPasPagination(pas);
153
			}
154
 
155
		};
156
		return paginationPresenteurHaut;
157
	}
158
 
159
	public void lancerRechercheEtCreerWidgetPagination() {
160
		ObservationsCallback callback = new ObservationsCallback() {
161
			@Override
162
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
163
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
164
				afficherObservations(observationsRecues);
165
			}
166
		};
167
 
168
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
169
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
170
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
171
	}
172
 
459 benjamin 173
	public void chercherEtAfficherObservationsPageEnCours() {
174
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
175
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
176
		chargerEtAfficherObservations(debut, fin);
177
	}
178
 
445 benjamin 179
}