Subversion Repositories eFlore/Applications.del

Rev

Rev 567 | Rev 651 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 567 Rev 568
Line 3... Line 3...
3
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
3
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
4
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPage;
4
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPage;
5
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPas;
5
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPas;
6
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPage;
6
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPage;
7
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPas;
7
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPas;
8
 
-
 
9
import com.google.gwt.event.dom.client.ChangeEvent;
8
import com.google.gwt.event.dom.client.ChangeEvent;
10
import com.google.gwt.event.dom.client.ChangeHandler;
9
import com.google.gwt.event.dom.client.ChangeHandler;
11
import com.google.gwt.event.dom.client.ClickEvent;
10
import com.google.gwt.event.dom.client.ClickEvent;
12
import com.google.gwt.event.dom.client.ClickHandler;
11
import com.google.gwt.event.dom.client.ClickHandler;
13
import com.google.gwt.event.dom.client.HasChangeHandlers;
12
import com.google.gwt.event.dom.client.HasChangeHandlers;
14
import com.google.gwt.event.dom.client.HasClickHandlers;
13
import com.google.gwt.event.dom.client.HasClickHandlers;
15
import com.google.gwt.user.client.Window;
-
 
16
import com.google.gwt.user.client.ui.HasText;
-
 
17
import com.google.gwt.user.client.ui.HasWidgets;
14
import com.google.gwt.user.client.ui.HasWidgets;
18
import com.google.gwt.user.client.ui.IsWidget;
15
import com.google.gwt.user.client.ui.IsWidget;
Line 19... Line 16...
19
 
16
 
20
/**
17
/**
Line 26... Line 23...
26
 *         de la page où l'on se trouve
23
 *         de la page où l'on se trouve
27
 * */
24
 * */
28
public abstract class PaginationPresenteur {
25
public abstract class PaginationPresenteur {
Line 29... Line 26...
29
 
26
 
30
	public interface Vue extends IsWidget {
-
 
31
		public HasWidgets getZoneLiens();
-
 
32
 
-
 
33
		public int getNbWidgetsZoneLiens();
-
 
34
 
-
 
35
		public HasClickHandlers getWidgetZoneLiensHasClickHandlers(int index);
-
 
36
 
-
 
37
		public HasText getWidgetZoneLiensAsText(int index);
-
 
38
 
-
 
39
		public void changerStyleBoutonZoneLiens(int index, String style);
-
 
40
 
-
 
41
		public void ajouterBoutonZoneLiens(String label);
-
 
42
 
27
	public interface Vue extends IsWidget {
43
		public HasClickHandlers getBoutonSuivant();
-
 
44
 
28
		public HasClickHandlers getBoutonSuivant();
45
		public HasClickHandlers getBoutonPrecedent();
-
 
46
 
29
		public HasClickHandlers getBoutonPrecedent();
47
		public HasClickHandlers getBoutonPremierePage();
-
 
48
 
30
		public HasClickHandlers getBoutonPremierePage();
49
		public HasClickHandlers getBoutonDernierePage();
-
 
50
 
31
		public HasClickHandlers getBoutonDernierePage();
51
		public void masquerBoutonPrecedent();
-
 
52
 
32
		public void masquerBoutonPrecedent();
53
		public void afficherBoutonPrecedent();
-
 
54
 
33
		public void afficherBoutonPrecedent();
55
		public void masquerBoutonSuivant();
-
 
56
 
34
		public void masquerBoutonSuivant();
57
		public void afficherBoutonSuivant();
-
 
58
 
35
		public void afficherBoutonSuivant();
59
		public boolean boutonPrecedentEstAffiche();
-
 
60
 
36
		public boolean boutonPrecedentEstAffiche();
61
		public boolean boutonSuivantEstAffiche();
-
 
62
 
37
		public boolean boutonSuivantEstAffiche();
63
		public HasChangeHandlers getSelecteurPas();
-
 
64
 
38
		public HasChangeHandlers getSelecteurPas();
65
		public int getPasSelectionne();
-
 
66
 
39
		public int getPasSelectionne();
67
		public void afficherPas(int pas);
-
 
68
 
-
 
69
		public void mettreEnValeurPageActive(int pageActive);
-
 
70
 
40
		public void afficherPas(int pas);
-
 
41
		public void mettreNbTotalPages(int nbPages);
-
 
42
		public HasChangeHandlers getSaisiePageCourante();
-
 
43
		public int getPageSaisie();
71
		public void mettreNbTotalPages(int nbPages);
44
		public void setPageCourante(int pageCourante);
Line 72... Line 45...
72
	}
45
	}
73
 
46
 
74
	private Vue vue;
47
	private Vue vue;
Line 90... Line 63...
90
	public PaginationPresenteur(Vue vue, int nbElementsTotal, int pas, int pageCourante) {
63
	public PaginationPresenteur(Vue vue, int nbElementsTotal, int pas, int pageCourante) {
91
		this.nbElementsTotal = nbElementsTotal;
64
		this.nbElementsTotal = nbElementsTotal;
92
		this.vue = vue;
65
		this.vue = vue;
93
		this.pas = pas;
66
		this.pas = pas;
94
		this.pageCourante = pageCourante;
67
		this.pageCourante = pageCourante;
-
 
68
		vue.setPageCourante(pageCourante);
95
		this.nbPage = calculerNbPage();
69
		this.nbPage = calculerNbPage();
96
	}
70
	}
Line 97... Line 71...
97
 
71
 
98
	/**
72
	/**
Line 102... Line 76...
102
	 *            : la vue ou éxécuter l'affichage
76
	 *            : la vue ou éxécuter l'affichage
103
	 */
77
	 */
104
	public void go(HasWidgets container) {
78
	public void go(HasWidgets container) {
105
		container.add(vue.asWidget());
79
		container.add(vue.asWidget());
106
		gererEvenements();
80
		gererEvenements();
107
		actualiserLiensPagesPagination();
-
 
108
		actualiserPas();
81
		actualiserPas();
109
		actualiserAffichageBoutons();
82
		actualiserAffichageBoutons();
110
	}
83
	}
Line 111... Line 84...
111
 
84
 
112
	/**
85
	/**
113
	 * Gérer les évènements sur les boutons statiques (précédent, suivant et
86
	 * Gérer les évènements sur les boutons statiques (précédent, suivant et
114
	 * selecteur pas)
87
	 * selecteur pas)
115
	 * */
88
	 * */
-
 
89
	protected void gererEvenements() {
-
 
90
		
-
 
91
		vue.getSaisiePageCourante().addChangeHandler(new ChangeHandler() {
-
 
92
			@Override
-
 
93
			public void onChange(ChangeEvent event) {
-
 
94
				int pageSaisie;
-
 
95
				try {
-
 
96
					pageSaisie = vue.getPageSaisie();
-
 
97
					if (pageSaisie < 0) {
-
 
98
						pageSaisie = 1;
-
 
99
					} else if (pageSaisie > nbPage){
-
 
100
						pageSaisie = nbPage;
-
 
101
					}
-
 
102
				} catch (NumberFormatException e) {
-
 
103
					pageSaisie = pageCourante;
-
 
104
				}
-
 
105
				pageCourante = pageSaisie;
-
 
106
				chargerElements(pas * (pageCourante - 1), pas * (pageCourante));
-
 
107
				vue.setPageCourante(pageCourante);
-
 
108
				actualiserAffichageBoutons();
-
 
109
			}
-
 
110
		});
116
	protected void gererEvenements() {
111
		
117
		vue.getSelecteurPas().addChangeHandler(new ChangeHandler() {
112
		vue.getSelecteurPas().addChangeHandler(new ChangeHandler() {
118
			@Override
113
			@Override
119
			public void onChange(ChangeEvent event) {
114
			public void onChange(ChangeEvent event) {
120
				int pasSelectionne;
115
				int pasSelectionne;
Line 165... Line 160...
165
 
160
 
166
			@Override
161
			@Override
167
			public void onChangementPage(EvenementChangementPage event) {
162
			public void onChangementPage(EvenementChangementPage event) {
168
				if (event.getGroupePagination() == groupePagination) {
163
				if (event.getGroupePagination() == groupePagination) {
169
					pageCourante = event.getPageAAfficher();
164
					pageCourante = event.getPageAAfficher();
170
					mettreEnValeurPageCourante();
165
					vue.setPageCourante(pageCourante);
171
					actualiserAffichageBoutons();
166
					actualiserAffichageBoutons();
172
				}
167
				}
173
			}
168
			}
Line 179... Line 174...
179
			public void onChangementPas(EvenementChangementPas event) {
174
			public void onChangementPas(EvenementChangementPas event) {
180
				if (event.getGroupePagination() == groupePagination) {
175
				if (event.getGroupePagination() == groupePagination) {
181
					// modifie le pas et les liens en fonction
176
					// modifie le pas et les liens en fonction
182
					pas = event.getPas();
177
					pas = event.getPas();
183
					actualiserPas();
178
					actualiserPas();
184
					actualiserLiensPagesPagination();
-
 
185
				}
179
				}
186
			}
180
			}
187
		});
181
		});
188
	}
182
	}
Line 192... Line 186...
192
			double rapportPas = (double) ancienPas / (double) nouveauPas;
186
			double rapportPas = (double) ancienPas / (double) nouveauPas;
193
			pageCourante = (int) (Math.ceil((double) pageCourante * (double) rapportPas));
187
			pageCourante = (int) (Math.ceil((double) pageCourante * (double) rapportPas));
194
		}
188
		}
195
	}
189
	}
Line 196... Line -...
196
 
-
 
197
	/**
-
 
198
	 * Gérer les évènements sur les boutons dynamiques (qui sont recréés à
-
 
199
	 * chaque fois)
-
 
200
	 * */
-
 
201
	private void gererEvenementsBoutonsDynamiques() {
-
 
202
		int nbLiens = vue.getNbWidgetsZoneLiens();
-
 
203
		for (int i = 0; i < nbLiens; i++) {
-
 
204
			HasClickHandlers boutonCourant = vue.getWidgetZoneLiensHasClickHandlers(i);
-
 
205
			boutonCourant.addClickHandler(new ClickHandler() {
-
 
206
				@Override
-
 
207
				public void onClick(ClickEvent event) {
-
 
208
					HasText boutonCourant = (HasText) event.getSource();
-
 
209
					int pageAAfficher = Integer.parseInt(boutonCourant.getText());
-
 
210
					pageCourante = pageAAfficher;
-
 
211
					chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
-
 
212
					BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher, groupePagination));
-
 
213
				}
-
 
214
			});
-
 
215
		}
-
 
216
	}
-
 
217
 
190
 
218
	public void actualiserPas() {
191
	public void actualiserPas() {
219
		actualiserPasCache(pas);
192
		actualiserPasCache(pas);
220
		vue.afficherPas(pas);
193
		vue.afficherPas(pas);
Line 221... Line -...
221
	}
-
 
222
 
-
 
223
	/**
-
 
224
	 * Actualiser les liens pour n'afficher 5 avant et 5 après
-
 
225
	 * */
-
 
226
	public void actualiserLiensPagesPagination() {
-
 
227
 
-
 
228
		this.nbPage = calculerNbPage();
-
 
229
 
-
 
230
		vue.mettreNbTotalPages(nbPage);
-
 
231
		HasWidgets zoneLiens = vue.getZoneLiens();
-
 
232
		zoneLiens.clear();
-
 
233
 
-
 
234
		int pageDebut = 1;
-
 
235
		int pageFin = nbPage;
-
 
236
 
-
 
237
		for (int i = pageDebut; i <= pageFin; i++) {
-
 
238
			vue.ajouterBoutonZoneLiens(i + "");
-
 
239
		}
-
 
240
		gererEvenementsBoutonsDynamiques();
-
 
241
		mettreEnValeurPageCourante();
-
 
242
	}
194
	}
243
 
195
 
244
	public int getPageCourante() {
196
		public int getPageCourante() {
Line 245... Line 197...
245
		return this.pageCourante;
197
		return this.pageCourante;
246
	}
198
	}
Line 302... Line 254...
302
	private int calculerNbPage() {
254
	private int calculerNbPage() {
303
		Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
255
		Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
304
		return nombrePages.intValue();
256
		return nombrePages.intValue();
305
	}
257
	}
Line 306... Line -...
306
 
-
 
307
	public void mettreEnValeurPageCourante() {
-
 
308
		getVue().mettreEnValeurPageActive(getPageCourante());
-
 
309
	}
-
 
310
 
258
 
311
	public void setNbPages(int nbPages) {
259
	public void setNbPages(int nbPages) {
312
		this.nbPage = nbPages;
260
		this.nbPage = nbPages;
Line 313... Line 261...
313
	}
261
	}