Subversion Repositories eFlore/Applications.del

Rev

Details | 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
		public HasWidgets getZoneObservations();
29
		public HasWidgets getZonePaginationHaut();
30
		public HasWidgets getZonePaginationBas();
31
		public void startChargement();
32
		public void stopChargement();
33
		public void nettoyer();
459 benjamin 34
		public HasClickHandlers getTriParDateAscendant();
35
		public HasClickHandlers getTriParDateDescendant();
564 benjamin 36
		public void afficherElementsAucunResultatTrouve();
652 aurelien 37
		public void afficherElementsResultatsTrouves();
677 gduche 38
		public HasClickHandlers getLabelDate();
592 gduche 39
		public void masquerDateAscendant();
40
		public void masquerDateDescendant();
41
		public void afficherDateAscendant();
42
		public void afficherDateDescendant();
445 benjamin 43
	}
44
 
45
	private Vue vue;
677 gduche 46
	private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;
592 gduche 47
 
445 benjamin 48
	public ResultatsRechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
49
		this.vue = vue;
50
		this.serviceObs = serviceObs;
592 gduche 51
		vue.masquerDateAscendant();
677 gduche 52
		//vue.masquerDateDescendant();
445 benjamin 53
	}
54
 
55
	public void go(HasWidgets composite) {
56
		composite.add(vue.asWidget());
57
		lancerRechercheEtCreerWidgetPagination();
459 benjamin 58
		gererEvenements();
445 benjamin 59
	}
60
 
61
	protected void gererEvenements() {
459 benjamin 62
 
595 gduche 63
 
64
		ClickHandler surClicDate = new ClickHandler() {
459 benjamin 65
			@Override
592 gduche 66
			public void onClick(ClickEvent event) {
67
 
68
				if (triCourantDate == ModeTri.TRI_ASCENDANT) {
69
					triCourantDate = ModeTri.TRI_DESCENDANT;
70
					vue.masquerDateAscendant();
71
					vue.afficherDateDescendant();
72
				} else {
73
					triCourantDate = ModeTri.TRI_ASCENDANT;
74
					vue.masquerDateDescendant();
75
					vue.afficherDateAscendant();
76
				}
77
 
459 benjamin 78
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
592 gduche 79
				informationsRechercheObservations.setTriParDate(triCourantDate);
491 benjamin 80
				informationsRechercheObservations.setTriParNbVotes(ModeTri.PAS_DE_TRI);
459 benjamin 81
				chercherEtAfficherObservationsPageEnCours();
82
			}
595 gduche 83
		};
84
 
85
		vue.getLabelDate().addClickHandler(surClicDate);
86
		vue.getTriParDateAscendant().addClickHandler(surClicDate);
87
		vue.getTriParDateDescendant().addClickHandler(surClicDate);
445 benjamin 88
	}
89
 
90
	public void chargerEtAfficherObservations(int debut, int fin) {
91
		vue.startChargement();
92
		vue.nettoyer();
93
		ObservationsCallback callback = new ObservationsCallback() {
94
 
95
			@Override
96
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
97
				afficherObservations(observationsRecues);
98
			}
99
		};
100
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
101
	}
102
 
103
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
104
		vue.nettoyer();
564 benjamin 105
 
106
		if (observationServiceResultat.getObservations() == null || observationServiceResultat.getObservations().size() == 0) {
107
			vue.afficherElementsAucunResultatTrouve();
445 benjamin 108
		}
564 benjamin 109
 
110
		else {
111
			vue.afficherElementsResultatsTrouves();
112
			for (Observation observation : observationServiceResultat.getObservations()) {
113
				ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
114
				presenteur.go(vue.getZoneObservations());
115
			}
116
		}
445 benjamin 117
		vue.stopChargement();
118
	}
119
 
120
	private void creerWidgetPagination(int nbObservations) {
121
		vue.getZonePaginationHaut().clear();
122
		vue.getZonePaginationBas().clear();
123
		PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
124
		PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
446 aurelien 125
		paginationPresenteurHaut.setGroupePagination("pagination_observations");
126
		paginationPresenteurBas.setGroupePagination("pagination_observations");
445 benjamin 127
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
128
		paginationPresenteurBas.go(vue.getZonePaginationBas());
129
	}
130
 
131
	private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
132
		PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheObservations()) {
133
 
134
			@Override
135
			public void chargerElements(int debut, int fin) {
136
				chargerEtAfficherObservations(debut, fin);
137
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
138
			}
139
 
140
			@Override
141
			public void actualiserPasCache(int pas) {
142
				CacheClient.getInstance().setPasPagination(pas);
143
			}
144
 
145
		};
146
		return paginationPresenteurHaut;
147
	}
148
 
149
	public void lancerRechercheEtCreerWidgetPagination() {
150
		ObservationsCallback callback = new ObservationsCallback() {
151
			@Override
152
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
153
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
154
				afficherObservations(observationsRecues);
155
			}
156
		};
157
 
158
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
159
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
160
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
161
	}
162
 
459 benjamin 163
	public void chercherEtAfficherObservationsPageEnCours() {
164
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
165
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
166
		chargerEtAfficherObservations(debut, fin);
167
	}
168
 
445 benjamin 169
}