Subversion Repositories eFlore/Applications.del

Rev

Rev 480 | 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;
21
 
22
public class ResultatsRechercheObservationsPresenteur extends Presenteur {
23
 
24
	private ObservationService serviceObs;
25
 
26
	public abstract interface Vue extends IsWidget {
27
 
28
		public HasWidgets getZoneObservations();
29
 
30
		public HasWidgets getZonePaginationHaut();
31
 
32
		public HasWidgets getZonePaginationBas();
33
 
34
		public void startChargement();
35
 
36
		public void stopChargement();
37
 
38
		public void nettoyer();
459 benjamin 39
 
40
		public HasClickHandlers getTriParNbVotesAscendant();
41
 
42
		public HasClickHandlers getTriParNbVotesDescendant();
43
 
44
		public HasClickHandlers getTriParDateAscendant();
45
 
46
		public HasClickHandlers getTriParDateDescendant();
445 benjamin 47
	}
48
 
49
	private Vue vue;
50
 
51
	public ResultatsRechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
52
		this.vue = vue;
53
		this.serviceObs = serviceObs;
54
	}
55
 
56
	public void go(HasWidgets composite) {
57
		composite.add(vue.asWidget());
58
		lancerRechercheEtCreerWidgetPagination();
459 benjamin 59
		gererEvenements();
445 benjamin 60
	}
61
 
62
	protected void gererEvenements() {
459 benjamin 63
 
64
		vue.getTriParNbVotesAscendant().addClickHandler(new ClickHandler() {
65
 
66
			@Override
67
			public void onClick(ClickEvent arg0) {
68
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
69
				informationsRechercheObservations.setTriParNbVotes(ModeTri.TRI_ASCENDANT);
70
				chercherEtAfficherObservationsPageEnCours();
71
			}
72
		});
73
 
74
		vue.getTriParNbVotesDescendant().addClickHandler(new ClickHandler() {
75
 
76
			@Override
77
			public void onClick(ClickEvent arg0) {
78
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
79
				informationsRechercheObservations.setTriParNbVotes(ModeTri.TRI_DESCENDANT);
80
				chercherEtAfficherObservationsPageEnCours();
81
			}
82
		});
83
 
84
		vue.getTriParDateAscendant().addClickHandler(new ClickHandler() {
85
 
86
			@Override
87
			public void onClick(ClickEvent arg0) {
88
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
89
				informationsRechercheObservations.setTriParDate(ModeTri.TRI_ASCENDANT);
90
				chercherEtAfficherObservationsPageEnCours();
91
			}
92
		});
93
 
94
		vue.getTriParDateDescendant().addClickHandler(new ClickHandler() {
95
 
96
			@Override
97
			public void onClick(ClickEvent arg0) {
98
				InformationsRecherche informationsRechercheObservations = CacheClient.getInstance().getInformationsRechercheObservation();
99
				informationsRechercheObservations.setTriParDate(ModeTri.TRI_DESCENDANT);
100
				chercherEtAfficherObservationsPageEnCours();
101
			}
102
		});
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();
120
		for (Observation observation : observationServiceResultat.getObservations()) {
121
			ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
122
			presenteur.go(vue.getZoneObservations());
123
		}
124
		vue.stopChargement();
125
	}
126
 
127
	private void creerWidgetPagination(int nbObservations) {
128
		vue.getZonePaginationHaut().clear();
129
		vue.getZonePaginationBas().clear();
130
		PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
131
		PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
446 aurelien 132
		paginationPresenteurHaut.setGroupePagination("pagination_observations");
133
		paginationPresenteurBas.setGroupePagination("pagination_observations");
445 benjamin 134
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
135
		paginationPresenteurBas.go(vue.getZonePaginationBas());
136
	}
137
 
138
	private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
139
		PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheObservations()) {
140
 
141
			@Override
142
			public void chargerElements(int debut, int fin) {
143
				chargerEtAfficherObservations(debut, fin);
144
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
145
			}
146
 
147
			@Override
148
			public void actualiserPasCache(int pas) {
149
				CacheClient.getInstance().setPasPagination(pas);
150
			}
151
 
152
		};
153
		return paginationPresenteurHaut;
154
	}
155
 
156
	public void lancerRechercheEtCreerWidgetPagination() {
157
		ObservationsCallback callback = new ObservationsCallback() {
158
			@Override
159
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
160
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
161
				afficherObservations(observationsRecues);
162
			}
163
		};
164
 
165
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
166
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
167
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
168
	}
169
 
459 benjamin 170
	public void chercherEtAfficherObservationsPageEnCours() {
171
		int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
172
		int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
173
		chargerEtAfficherObservations(debut, fin);
174
	}
175
 
445 benjamin 176
}