Subversion Repositories eFlore/Applications.del

Rev

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

Rev 335 Rev 358
Line 8... Line 8...
8
import com.google.gwt.user.client.ui.HasWidgets;
8
import com.google.gwt.user.client.ui.HasWidgets;
9
import com.google.gwt.user.client.ui.HorizontalPanel;
9
import com.google.gwt.user.client.ui.HorizontalPanel;
10
import com.google.gwt.user.client.ui.ListBox;
10
import com.google.gwt.user.client.ui.ListBox;
Line 11... Line 11...
11
 
11
 
12
/**
-
 
13
 * @author gregoire
12
/**
14
 * Pagination GENERIQUE qui permet d'afficher un nombre donné d'éléments (pas)
13
 * @author gregoire Pagination GENERIQUE qui permet d'afficher un nombre donné
-
 
14
 *         d'éléments (pas) La méthode changerPage est abstraite et doit être
15
 * La méthode changerPage est abstraite et doit être définie lors de l'instanciation 
15
 *         définie lors de l'instanciation de la classe pagination pour
16
 * de la classe pagination pour permettre d'afficher la suite des éléments
16
 *         permettre d'afficher la suite des éléments La méthode
17
 * La méthode actualiserPasCache est abstraite car le pas est différent en 
17
 *         actualiserPasCache est abstraite car le pas est différent en fonction
18
 * fonction de la page où l'on se trouve
18
 *         de la page où l'on se trouve
19
 * */
19
 * */
Line 20... Line 20...
20
public abstract class PaginationPresenteur {
20
public abstract class PaginationPresenteur {
21
 
21
 
22
	private final PaginationVue vue;
22
	private final PaginationVue vue;
23
	private int nbPage;
23
	private int nbPage;
24
	private int pageCourante = 1;
24
	private int pageCourante = 1;
25
	private int nbElementsTotal = 0;
25
	private int nbElementsTotal = 0;
26
	private int pas = 10;
26
	private int pas = 10;
27
	
27
 
-
 
28
	/**
-
 
29
	 * Constructeur de l'application
28
	/**
30
	 * 
-
 
31
	 * @param nbElementsTotal
29
	 * Constructeur de l'application
32
	 *            : le nombre total des éléments à paginer
30
	 * @param nbElementsTotal : le nombre total des éléments à paginer
33
	 * @param pas
31
	 * @param pas : le nombre d'éléments à afficher par page
34
	 *            : le nombre d'éléments à afficher par page
32
	 * */
35
	 * */
33
	public PaginationPresenteur(int nbElementsTotal, int pas) {
-
 
34
		this.nbElementsTotal = nbElementsTotal;
36
	public PaginationPresenteur(int nbElementsTotal, int pas) {
-
 
37
		this.nbElementsTotal = nbElementsTotal;
-
 
38
		vue = new PaginationVue();
-
 
39
		changerPas(pas);
-
 
40
	}
-
 
41
 
-
 
42
	/**
-
 
43
	 * Methode go du modèle MVP
-
 
44
	 * 
-
 
45
	 * @param container
-
 
46
	 *            : la vue ou éxécuter l'affichage
-
 
47
	 */
-
 
48
	public void go(HasWidgets container) {
35
		this.pas=pas;
49
		actualiserLiens();
36
		vue = new PaginationVue();
50
		container.add(vue);
37
	}
51
	}
38
	
52
 
39
	/** Met à jour le nombre de page en fonction du pas */
53
	/** Met à jour le nombre de page en fonction du pas */
40
	private void actualiserNbPage() {
54
	private void actualiserNbPage() {
41
		Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
55
		Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
Line -... Line 56...
-
 
56
		this.nbPage = nombrePages.intValue();
42
		this.nbPage = nombrePages.intValue();
57
	}
-
 
58
 
-
 
59
	/**
43
	}
60
	 * Changer le pas de la pagination
-
 
61
	 * 
44
 
62
	 * @param pas
-
 
63
	 *            : le nombre d'éléments à afficher par page
45
	/** Changer le pas de la pagination 
64
	 */
46
	 *  @param pas : le nombre d'éléments à afficher par page */
65
	public void changerPas(int pas) {
-
 
66
		this.pas = pas;
-
 
67
		actualiserNbPage();
-
 
68
		changerPage(pas * pageCourante, pas * (pageCourante + 1));
-
 
69
		switch (pas) {
-
 
70
		case 5:
-
 
71
			vue.getSelecteurPas().setSelectedIndex(0);
-
 
72
			break;
-
 
73
		case 10:
-
 
74
			vue.getSelecteurPas().setSelectedIndex(1);
-
 
75
			break;
-
 
76
		case 15:
-
 
77
			vue.getSelecteurPas().setSelectedIndex(2);
-
 
78
			break;
-
 
79
		case 20:
-
 
80
			vue.getSelecteurPas().setSelectedIndex(3);
-
 
81
			break;
47
	public void changerPas(int pas) {
82
		default:
48
		actualiserNbPage();
83
			break;
49
		changerPage(pas * pageCourante, pas * (pageCourante + 1));
84
		}
50
		actualiserPasCache(pas);
-
 
51
	}
-
 
52
	
-
 
53
	/** Methode Go du modèle MVP 
-
 
54
	 * @param container : la vue ou éxécuter l'affichage */
-
 
55
	public void go(HasWidgets container) {
85
		actualiserPasCache(pas);
56
		actualiserLiens();
-
 
57
		container.add(vue);
86
	}
58
	}
87
 
59
	
88
	/**
-
 
89
	 * Actualiser les liens pour n'afficher 5 avant et 5 après
60
	/** Actualiser les liens pour n'afficher 5 avant et 5 après
90
	 * */
61
	 * */
91
	public void actualiserLiens() {
62
	public void actualiserLiens() {
-
 
63
		HorizontalPanel zoneLiens = vue.zoneLiens;
92
 
64
		zoneLiens.clear();
93
		HorizontalPanel zoneLiens = vue.zoneLiens;
65
		
94
		zoneLiens.clear();
66
		
95
 
67
		int pageDebut = pagesAvant();
96
		int pageDebut = pagesAvant();
68
		int pageFin = pagesApres();
97
		int pageFin = pagesApres();
69
		
98
 
70
		for (int i = pageDebut; i < pageFin; i++) {
99
		for (int i = pageDebut; i < pageFin; i++) {
71
			Button bouton = new Button(String.valueOf(i));
100
			Button bouton = new Button(String.valueOf(i));
72
			zoneLiens.add(bouton);
101
			zoneLiens.add(bouton);
73
		}
102
		}
74
		setBoutonActif();
103
		setBoutonActif();
75
		gererEvenements();
104
		gererEvenements();
76
	}
105
	}
77
	
106
 
78
	private int pagesAvant() {
107
	private int pagesAvant() {
79
		int pageDebut = pageCourante - 5;
108
		int pageDebut = pageCourante - 5;
80
		vue.afficherBoutonDebut();
109
		vue.afficherBoutonDebut();
81
		if (pageDebut < 1) {
110
		if (pageDebut < 1) {
82
			pageDebut = 1;
111
			pageDebut = 1;
83
			//Masquer le bouton de début
112
			// Masquer le bouton de début
84
			vue.masquerBoutonDebut();
113
			vue.masquerBoutonDebut();
85
		}
114
		}
86
		return pageDebut;
115
		return pageDebut;
87
	}
116
	}
88
	
117
 
89
	private int pagesApres() {
118
	private int pagesApres() {
90
		int pageFin = pageCourante + 5;
119
		int pageFin = pageCourante + 5;
91
		vue.afficherBoutonSuivant();
120
		vue.afficherBoutonSuivant();
92
		if (pageFin > nbPage) {
121
		if (pageFin > nbPage) {
93
			pageFin = nbPage;
122
			pageFin = nbPage;
94
			vue.masquerBoutonSuivant();
123
			vue.masquerBoutonSuivant();
95
		}
124
		}
96
		return pageFin;
125
		return pageFin;
97
	}
126
	}
98
	
127
 
99
	private void setBoutonActif() {
128
	private void setBoutonActif() {
100
		int nbLiens = vue.zoneLiens.getWidgetCount();
129
		int nbLiens = vue.zoneLiens.getWidgetCount();
101
		for (int i=0; i < nbLiens; i++) {
130
		for (int i = 0; i < nbLiens; i++) {
102
			Button boutonCourant = (Button) vue.zoneLiens.getWidget(i);
131
			Button boutonCourant = (Button) vue.zoneLiens.getWidget(i);
103
			if (boutonCourant.getText().equals(String.valueOf(pageCourante))) {
132
			if (boutonCourant.getText().equals(String.valueOf(pageCourante))) {
104
				boutonCourant.setStyleName("actif");
133
				boutonCourant.setStyleName("actif");
105
			} else {
134
			} else {
106
				boutonCourant.setStyleName("inactif");
135
				boutonCourant.setStyleName("inactif");
Line -... Line 136...
-
 
136
			}
107
			}
137
		}
108
		}
138
	}
109
	}
139
 
110
 
140
	/**
111
	/** Gérer les évènements sur les boutons
141
	 * Gérer les évènements sur les boutons
112
	 * */
142
	 * */
Line 118... Line 148...
118
				int index = nbElements.getSelectedIndex();
148
				int index = nbElements.getSelectedIndex();
119
				changerPas(Integer.parseInt(nbElements.getValue(index)));
149
				changerPas(Integer.parseInt(nbElements.getValue(index)));
120
			}
150
			}
Line 121... Line 151...
121
 
151
 
122
		});
152
		});
123
		
153
 
124
		vue.boutonPrecedent.addClickHandler(new ClickHandler() {
154
		vue.boutonPrecedent.addClickHandler(new ClickHandler() {
125
			@Override
155
			@Override
126
			public void onClick(ClickEvent event) {
156
			public void onClick(ClickEvent event) {
127
				pagePrecedente();
157
				pagePrecedente();
Line 132... Line 162...
132
			@Override
162
			@Override
133
			public void onClick(ClickEvent event) {
163
			public void onClick(ClickEvent event) {
134
				pageSuivante();
164
				pageSuivante();
135
			}
165
			}
136
		});
166
		});
137
		
-
 
138
		
167
 
139
		int nbLiens = vue.zoneLiens.getWidgetCount();
168
		int nbLiens = vue.zoneLiens.getWidgetCount();
140
		for (int i=0; i < nbLiens; i++) {
169
		for (int i = 0; i < nbLiens; i++) {
141
			Button boutonCourant = (Button) vue.zoneLiens.getWidget(i);
170
			Button boutonCourant = (Button) vue.zoneLiens.getWidget(i);
Line 142... Line 171...
142
 
171
 
Line 143... Line 172...
143
			boutonCourant.addClickHandler(new ClickHandler() {
172
			boutonCourant.addClickHandler(new ClickHandler() {
Line 154... Line 183...
154
				}
183
				}
155
			});
184
			});
156
		}
185
		}
157
	}
186
	}
Line -... Line 187...
-
 
187
 
158
 
188
	/**
159
	/** Retourne la limite supèrieur du nombre de pages à afficher
189
	 * Retourne la limite supèrieur du nombre de pages à afficher
160
	 * */
190
	 * */
161
	public void pageSuivante() {
191
	public void pageSuivante() {
162
		if (pageCourante < nbPage - 1) {
192
		if (pageCourante < nbPage - 1) {
163
			pageCourante++;
193
			pageCourante++;
164
			int debut = pageCourante * pas;
194
			int debut = pageCourante * pas;
165
			int fin = debut + pas;
195
			int fin = debut + pas;
166
			changerPage(debut, fin);
196
			changerPage(debut, fin);
167
			actualiserLiens();
197
			actualiserLiens();
168
		}
198
		}
169
	}
199
	}
-
 
200
 
170
	
201
	/**
171
	/** Retourne la limite infèrieure du nombre de pages à afficher
202
	 * Retourne la limite infèrieure du nombre de pages à afficher
172
	 * */
203
	 * */
173
	public void pagePrecedente() {
204
	public void pagePrecedente() {
174
		if (pageCourante > 1) {
205
		if (pageCourante > 1) {
175
			pageCourante--;
206
			pageCourante--;
176
			int debut = pageCourante * pas;
207
			int debut = pageCourante * pas;
177
			int fin = debut + pas;
208
			int fin = debut + pas;
178
			changerPage(debut, fin);
209
			changerPage(debut, fin);
179
			actualiserLiens();
210
			actualiserLiens();
180
		}
211
		}
181
	}
212
	}
182
	
213
 
183
	protected int getPageCourante() {
214
	protected int getPageCourante() {
184
		return this.pageCourante;
215
		return this.pageCourante;
Line 185... Line 216...
185
	}
216
	}
-
 
217
 
186
 
218
	public abstract void changerPage(int debut, int fin);
Line 187... Line 219...
187
	public abstract void changerPage(int debut, int fin);
219