Subversion Repositories eFlore/Applications.del

Rev

Details | 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();
335 benjamin 21
 
309 aurelien 22
		public HasWidgets getZoneObservations();
335 benjamin 23
 
309 aurelien 24
		public HasWidgets getZonePagination();
25
	}
335 benjamin 26
 
309 aurelien 27
	private Vue vue;
335 benjamin 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) {
74
		PaginationPresenteur paginationPresenteur = new PaginationPresenteur(nbObservations, CacheClient.getInstance().getPasPagination()) {
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
			}
86
		};
87
		paginationPresenteur.go(vue.getZonePagination());
88
	}
89
 
161 gduche 90
}