Subversion Repositories eFlore/Applications.del

Rev

Rev 391 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 391 Rev 392
1
package org.tela_botanica.del.client.vues.rechercheobservations;
1
package org.tela_botanica.del.client.vues.rechercheobservations;
2
 
2
 
3
import org.tela_botanica.del.client.cache.CacheClient;
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
4
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
5
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
5
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
6
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
6
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
7
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
7
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
9
import org.tela_botanica.del.client.i18n.I18n;
9
import org.tela_botanica.del.client.i18n.I18n;
10
import org.tela_botanica.del.client.modeles.Observation;
10
import org.tela_botanica.del.client.modeles.Observation;
11
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
11
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
12
import org.tela_botanica.del.client.utils.MockDatasource;
12
import org.tela_botanica.del.client.services.rest.ObservationService;
-
 
13
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
13
 
14
 
14
import com.google.gwt.user.client.ui.HasWidgets;
15
import com.google.gwt.user.client.ui.HasWidgets;
15
import com.google.gwt.user.client.ui.IsWidget;
16
import com.google.gwt.user.client.ui.IsWidget;
16
import com.google.gwt.user.client.ui.RootPanel;
17
import com.google.gwt.user.client.ui.RootPanel;
17
 
18
 
18
public class RechercheObservationsPresenteur extends Presenteur {
19
public class RechercheObservationsPresenteur extends Presenteur {
-
 
20
	
-
 
21
	private ObservationService serviceObs;
19
 
22
 
20
	public abstract interface Vue extends IsWidget {
23
	public abstract interface Vue extends IsWidget {
21
		public HasWidgets getZoneRecherche();
24
		public HasWidgets getZoneRecherche();
22
		public HasWidgets getZoneObservations();
25
		public HasWidgets getZoneObservations();
23
		public HasWidgets getZonePaginationHaut();
26
		public HasWidgets getZonePaginationHaut();
24
		public HasWidgets getZonePaginationBas();
27
		public HasWidgets getZonePaginationBas();
-
 
28
		public void startChargement();
-
 
29
		public void stopChargement();
-
 
30
		public void nettoyer();
25
	}
31
	}
26
 
32
 
27
	private Vue vue;
33
	private Vue vue;
28
	private PaginationPresenteur paginationHautPresenteur, paginationBasPresenteur;
34
	private PaginationPresenteur paginationHautPresenteur, paginationBasPresenteur;
-
 
35
	
-
 
36
	/**
-
 
37
	 * Ceci sert à éviter que les deux présenteurs paginations fassent deux requêtes par changement de page
-
 
38
	 * En attendant d'en discuter avec les autres
-
 
39
	 */
-
 
40
	private boolean requeteEnCours = false;
29
	
41
	
30
	public RechercheObservationsPresenteur(Vue vue) {
42
	public RechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
-
 
43
		this.vue = vue;
31
		this.vue = vue;
44
		this.serviceObs = serviceObs;
32
	}
45
	}
33
 
46
 
34
	public void go(HasWidgets composite) {
47
	public void go(HasWidgets composite) {
35
		if (composite == null) {
48
		if (composite == null) {
36
			composite = RootPanel.get();
49
			composite = RootPanel.get();
37
		}
50
		}
38
		composite.add(vue.asWidget());
51
		composite.add(vue.asWidget());
39
		ajouterMoteurRechercheAvancee();
52
		ajouterMoteurRechercheAvancee();
40
 
53
 
-
 
54
		ObservationsCallback callback = new ObservationsCallback() {
-
 
55
			@Override
-
 
56
			public void surObservationsRecues(
41
		ObservationServiceResultat observationServiceResultat = MockDatasource.getInstance().getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination());
57
					ObservationServiceResultat observationsRecues) {		
42
		creerWidgetPagination(observationServiceResultat.getNbTotalObservationsPourLaRecherche());
58
					creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
-
 
59
					afficherObservations(observationsRecues);
-
 
60
			}
-
 
61
		};
-
 
62
		
43
		afficherObservations(observationServiceResultat);
63
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination(),callback);
44
	}
64
	}
45
 
65
 
46
	protected void ajouterMoteurRechercheAvancee() {
66
	protected void ajouterMoteurRechercheAvancee() {
47
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue(I18n.getVocabulary().rechercherObservation()) {
67
		MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue(I18n.getVocabulary().rechercherObservation()) {
48
		}, false, true) {
68
		}, false, true) {
49
 
69
 
50
			@Override
70
			@Override
51
			public void lancerRecherche() {
71
			public void lancerRecherche() {
52
				chargerEtAfficherObservations(0, CacheClient.getInstance().getPasPagination());
72
				chargerEtAfficherObservations(0, CacheClient.getInstance().getPasPagination());
53
			}
73
			}
54
		};
74
		};
55
		presenteur.go(vue.getZoneRecherche());
75
		presenteur.go(vue.getZoneRecherche());
56
	}
76
	}
57
 
77
 
58
	protected void gererEvenements() {
78
	protected void gererEvenements() {
59
	}
79
	}
60
 
80
 
61
	public void chargerEtAfficherObservations(int debut, int fin) {
81
	public void chargerEtAfficherObservations(int debut, int fin) {
-
 
82
		vue.startChargement();
-
 
83
		vue.nettoyer();
-
 
84
		ObservationsCallback callback = new ObservationsCallback() {
-
 
85
			
-
 
86
			@Override
62
		ObservationServiceResultat observationServiceResultat = MockDatasource.getInstance().getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin);
87
			public void surObservationsRecues(ObservationServiceResultat observationsRecues) {		
63
		afficherObservations(observationServiceResultat);
88
					afficherObservations(observationsRecues);
-
 
89
					requeteEnCours = false;
-
 
90
			}
-
 
91
		};
-
 
92
		requeteEnCours = true;
-
 
93
		serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
64
	}
94
	}
65
 
95
 
66
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
96
	private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
67
		vue.getZoneObservations().clear();
97
		vue.nettoyer();
68
		for (Observation observation : observationServiceResultat.getObservations()) {
98
		for (Observation observation : observationServiceResultat.getObservations()) {
69
			ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
99
			ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
70
			presenteur.go(vue.getZoneObservations());
100
			presenteur.go(vue.getZoneObservations());
71
		}
101
		}
-
 
102
		vue.stopChargement();
72
	}
103
	}
73
 
104
 
74
	private void creerWidgetPagination(int nbObservations) {
105
	private void creerWidgetPagination(int nbObservations) {
75
		this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
106
		this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
76
 
107
 
77
			@Override
108
			@Override
78
			public void changerPage(int debut, int fin) {
109
			public void changerPage(int debut, int fin) {
79
				chargerEtAfficherObservations(debut, fin);
110
				chargerEtAfficherObservations(debut, fin);
80
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
111
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
81
			}
112
			}
82
 
113
 
83
			@Override
114
			@Override
84
			public void actualiserPasCache(int pas) {
115
			public void actualiserPasCache(int pas) {
85
				CacheClient.getInstance().setPasPagination(pas);
116
				CacheClient.getInstance().setPasPagination(pas);
86
			}
117
			}
87
			
118
			
88
			@Override
119
			@Override
89
			public void synchroniser() {
120
			public void synchroniser() {
90
				paginationBasPresenteur.setPas(getPas());
121
				paginationBasPresenteur.setPas(getPas());
91
				paginationBasPresenteur.setPageCourante(getPageCourante());
122
				paginationBasPresenteur.setPageCourante(getPageCourante());
92
				paginationBasPresenteur.setNbPages(getNbPages());
123
				paginationBasPresenteur.setNbPages(getNbPages());
93
				paginationBasPresenteur.actualiserLiens();
124
				paginationBasPresenteur.actualiserLiens();
94
			}
125
			}
95
		};
126
		};
96
		paginationHautPresenteur.go(vue.getZonePaginationHaut());
127
		paginationHautPresenteur.go(vue.getZonePaginationHaut());
97
		
128
		
98
		this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
129
		this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
99
 
130
 
100
			@Override
131
			@Override
101
			public void changerPage(int debut, int fin) {
132
			public void changerPage(int debut, int fin) {
-
 
133
				if(!requeteEnCours) {
102
				chargerEtAfficherObservations(debut, fin);
134
					chargerEtAfficherObservations(debut, fin);
103
				CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
135
					CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
-
 
136
				}
104
			}
137
			}
105
 
138
 
106
			@Override
139
			@Override
107
			public void actualiserPasCache(int pas) {
140
			public void actualiserPasCache(int pas) {
108
				CacheClient.getInstance().setPasPagination(pas);
141
				CacheClient.getInstance().setPasPagination(pas);
109
			}
142
			}
110
			
143
			
111
			@Override
144
			@Override
112
			public void synchroniser() {
145
			public void synchroniser() {
113
				paginationHautPresenteur.setPas(getPas());
146
				paginationHautPresenteur.setPas(getPas());
114
				paginationHautPresenteur.setPageCourante(getPageCourante());
147
				paginationHautPresenteur.setPageCourante(getPageCourante());
115
				paginationHautPresenteur.setNbPages(getNbPages());
148
				paginationHautPresenteur.setNbPages(getNbPages());
116
				paginationHautPresenteur.actualiserLiens();
149
				paginationHautPresenteur.actualiserLiens();
117
			}
150
			}
118
		};
151
		};
119
		paginationBasPresenteur.go(vue.getZonePaginationBas());
152
		paginationBasPresenteur.go(vue.getZonePaginationBas());
120
	}
153
	}
121
 
154
 
122
}
155
}