Subversion Repositories eFlore/Applications.del

Rev

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