Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
161 gduche 1
package org.tela_botanica.del.client.vues.rechercheobservations;
2
 
335 benjamin 3
import org.tela_botanica.del.client.cache.CacheClient;
330 gduche 4
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
5
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
359 benjamin 6
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
391 aurelien 7
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
161 gduche 8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
166 gduche 9
import org.tela_botanica.del.client.modeles.Observation;
359 benjamin 10
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
392 aurelien 11
import org.tela_botanica.del.client.services.rest.ObservationService;
12
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
161 gduche 13
 
14
import com.google.gwt.user.client.ui.HasWidgets;
309 aurelien 15
import com.google.gwt.user.client.ui.IsWidget;
161 gduche 16
 
17
public class RechercheObservationsPresenteur extends Presenteur {
436 benjamin 18
 
392 aurelien 19
	private ObservationService serviceObs;
161 gduche 20
 
309 aurelien 21
	public abstract interface Vue extends IsWidget {
330 gduche 22
		public HasWidgets getZoneRecherche();
436 benjamin 23
 
309 aurelien 24
		public HasWidgets getZoneObservations();
436 benjamin 25
 
378 gduche 26
		public HasWidgets getZonePaginationHaut();
436 benjamin 27
 
378 gduche 28
		public HasWidgets getZonePaginationBas();
436 benjamin 29
 
392 aurelien 30
		public void startChargement();
436 benjamin 31
 
392 aurelien 32
		public void stopChargement();
436 benjamin 33
 
392 aurelien 34
		public void nettoyer();
309 aurelien 35
	}
335 benjamin 36
 
309 aurelien 37
	private Vue vue;
436 benjamin 38
 
392 aurelien 39
	public RechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
436 benjamin 40
 
309 aurelien 41
		this.vue = vue;
392 aurelien 42
		this.serviceObs = serviceObs;
161 gduche 43
	}
44
 
45
	public void go(HasWidgets composite) {
436 benjamin 46
 
309 aurelien 47
		composite.add(vue.asWidget());
330 gduche 48
		ajouterMoteurRechercheAvancee();
166 gduche 49
 
392 aurelien 50
		ObservationsCallback callback = new ObservationsCallback() {
51
			@Override
436 benjamin 52
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
53
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
54
				afficherObservations(observationsRecues);
392 aurelien 55
			}
56
		};
436 benjamin 57
 
58
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination(), callback);
161 gduche 59
	}
335 benjamin 60
 
330 gduche 61
	protected void ajouterMoteurRechercheAvancee() {
406 gduche 62
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") {
335 benjamin 63
		}, false, true) {
64
 
330 gduche 65
			@Override
335 benjamin 66
			public void lancerRecherche() {
359 benjamin 67
				chargerEtAfficherObservations(0, CacheClient.getInstance().getPasPagination());
161 gduche 68
			}
330 gduche 69
		};
70
		presenteur.go(vue.getZoneRecherche());
161 gduche 71
	}
72
 
335 benjamin 73
	protected void gererEvenements() {
166 gduche 74
	}
161 gduche 75
 
359 benjamin 76
	public void chargerEtAfficherObservations(int debut, int fin) {
392 aurelien 77
		vue.startChargement();
78
		vue.nettoyer();
79
		ObservationsCallback callback = new ObservationsCallback() {
436 benjamin 80
 
392 aurelien 81
			@Override
436 benjamin 82
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
83
				afficherObservations(observationsRecues);
392 aurelien 84
			}
85
		};
86
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
359 benjamin 87
	}
335 benjamin 88
 
359 benjamin 89
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
392 aurelien 90
		vue.nettoyer();
359 benjamin 91
		for (Observation observation : observationServiceResultat.getObservations()) {
309 aurelien 92
			ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
93
			presenteur.go(vue.getZoneObservations());
166 gduche 94
		}
392 aurelien 95
		vue.stopChargement();
161 gduche 96
	}
97
 
359 benjamin 98
	private void creerWidgetPagination(int nbObservations) {
436 benjamin 99
		PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
359 benjamin 100
 
101
			@Override
102
			public void changerPage(int debut, int fin) {
103
				chargerEtAfficherObservations(debut, fin);
104
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
105
			}
106
 
107
			@Override
108
			public void actualiserPasCache(int pas) {
109
				CacheClient.getInstance().setPasPagination(pas);
110
			}
436 benjamin 111
 
359 benjamin 112
		};
378 gduche 113
 
436 benjamin 114
		PaginationPresenteur paginationPresenteurBas = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
115
 
378 gduche 116
			@Override
117
			public void changerPage(int debut, int fin) {
436 benjamin 118
				chargerEtAfficherObservations(debut, fin);
119
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
378 gduche 120
			}
121
 
122
			@Override
123
			public void actualiserPasCache(int pas) {
124
				CacheClient.getInstance().setPasPagination(pas);
125
			}
436 benjamin 126
 
378 gduche 127
		};
436 benjamin 128
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
129
		paginationPresenteurBas.go(vue.getZonePaginationBas());
359 benjamin 130
	}
131
 
161 gduche 132
}