Subversion Repositories eFlore/Applications.del

Rev

Rev 359 | Rev 391 | 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;
161 gduche 7
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
335 benjamin 8
import org.tela_botanica.del.client.i18n.I18n;
166 gduche 9
import org.tela_botanica.del.client.modeles.Observation;
359 benjamin 10
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
166 gduche 11
import org.tela_botanica.del.client.utils.MockDatasource;
161 gduche 12
 
13
import com.google.gwt.user.client.ui.HasWidgets;
309 aurelien 14
import com.google.gwt.user.client.ui.IsWidget;
161 gduche 15
import com.google.gwt.user.client.ui.RootPanel;
16
 
17
public class RechercheObservationsPresenteur extends Presenteur {
18
 
309 aurelien 19
	public abstract interface Vue extends IsWidget {
330 gduche 20
		public HasWidgets getZoneRecherche();
309 aurelien 21
		public HasWidgets getZoneObservations();
378 gduche 22
		public HasWidgets getZonePaginationHaut();
23
		public HasWidgets getZonePaginationBas();
309 aurelien 24
	}
335 benjamin 25
 
309 aurelien 26
	private Vue vue;
378 gduche 27
	private PaginationPresenteur paginationHautPresenteur, paginationBasPresenteur;
28
 
309 aurelien 29
	public RechercheObservationsPresenteur(Vue vue) {
30
		this.vue = vue;
161 gduche 31
	}
32
 
33
	public void go(HasWidgets composite) {
34
		if (composite == null) {
35
			composite = RootPanel.get();
36
		}
309 aurelien 37
		composite.add(vue.asWidget());
330 gduche 38
		ajouterMoteurRechercheAvancee();
166 gduche 39
 
359 benjamin 40
		ObservationServiceResultat observationServiceResultat = MockDatasource.getInstance().getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination());
41
		creerWidgetPagination(observationServiceResultat.getNbTotalObservationsPourLaRecherche());
42
		afficherObservations(observationServiceResultat);
161 gduche 43
	}
335 benjamin 44
 
330 gduche 45
	protected void ajouterMoteurRechercheAvancee() {
335 benjamin 46
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue(I18n.getVocabulary().rechercherObservation()) {
47
		}, false, true) {
48
 
330 gduche 49
			@Override
335 benjamin 50
			public void lancerRecherche() {
359 benjamin 51
				chargerEtAfficherObservations(0, CacheClient.getInstance().getPasPagination());
161 gduche 52
			}
330 gduche 53
		};
54
		presenteur.go(vue.getZoneRecherche());
161 gduche 55
	}
56
 
335 benjamin 57
	protected void gererEvenements() {
166 gduche 58
	}
161 gduche 59
 
359 benjamin 60
	public void chargerEtAfficherObservations(int debut, int fin) {
61
		ObservationServiceResultat observationServiceResultat = MockDatasource.getInstance().getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin);
62
		afficherObservations(observationServiceResultat);
63
	}
335 benjamin 64
 
359 benjamin 65
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
309 aurelien 66
		vue.getZoneObservations().clear();
359 benjamin 67
		for (Observation observation : observationServiceResultat.getObservations()) {
309 aurelien 68
			ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
69
			presenteur.go(vue.getZoneObservations());
166 gduche 70
		}
161 gduche 71
	}
72
 
359 benjamin 73
	private void creerWidgetPagination(int nbObservations) {
378 gduche 74
		this.paginationHautPresenteur = new PaginationPresenteur(nbObservations, CacheClient.getInstance().getPasPagination()) {
359 benjamin 75
 
76
			@Override
77
			public void changerPage(int debut, int fin) {
78
				chargerEtAfficherObservations(debut, fin);
79
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
80
			}
81
 
82
			@Override
83
			public void actualiserPasCache(int pas) {
84
				CacheClient.getInstance().setPasPagination(pas);
85
			}
378 gduche 86
 
87
			@Override
88
			public void synchroniser() {
89
				paginationBasPresenteur.setPageCourante(getPageCourante());
90
				paginationBasPresenteur.actualiserLiens();
91
				paginationBasPresenteur.changerPas(getPas());
92
			}
359 benjamin 93
		};
378 gduche 94
		paginationHautPresenteur.go(vue.getZonePaginationHaut());
95
 
96
		this.paginationBasPresenteur = new PaginationPresenteur(nbObservations, CacheClient.getInstance().getPasPagination()) {
97
 
98
			@Override
99
			public void changerPage(int debut, int fin) {
100
				chargerEtAfficherObservations(debut, fin);
101
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
102
			}
103
 
104
			@Override
105
			public void actualiserPasCache(int pas) {
106
				CacheClient.getInstance().setPasPagination(pas);
107
			}
108
 
109
			@Override
110
			public void synchroniser() {
111
				paginationHautPresenteur.setPageCourante(getPageCourante());
112
				paginationHautPresenteur.actualiserLiens();
113
				paginationHautPresenteur.changerPas(getPas());
114
			}
115
		};
116
		paginationBasPresenteur.go(vue.getZonePaginationBas());
359 benjamin 117
	}
118
 
161 gduche 119
}