Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 5 Rev 56
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
-
 
2
 
2
 
3
 
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.ListePaginable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
5
 
6
 
6
import com.gwtext.client.core.EventCallback;
7
import com.gwtext.client.core.EventCallback;
7
import com.gwtext.client.core.EventObject;
8
import com.gwtext.client.core.EventObject;
8
import com.gwtext.client.core.Template;
9
import com.gwtext.client.core.Template;
9
import com.gwtext.client.data.Record;
10
import com.gwtext.client.data.Record;
10
import com.gwtext.client.data.SimpleStore;
11
import com.gwtext.client.data.SimpleStore;
11
import com.gwtext.client.data.Store;
12
import com.gwtext.client.data.Store;
12
import com.gwtext.client.widgets.Button;
13
import com.gwtext.client.widgets.Button;
13
import com.gwtext.client.widgets.Toolbar;
14
import com.gwtext.client.widgets.Toolbar;
14
import com.gwtext.client.widgets.ToolbarButton;
15
import com.gwtext.client.widgets.ToolbarButton;
15
import com.gwtext.client.widgets.ToolbarTextItem;
16
import com.gwtext.client.widgets.ToolbarTextItem;
16
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
17
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
17
import com.gwtext.client.widgets.form.ComboBox;
18
import com.gwtext.client.widgets.form.ComboBox;
18
import com.gwtext.client.widgets.form.Field;
19
import com.gwtext.client.widgets.form.Field;
19
import com.gwtext.client.widgets.form.TextField;
20
import com.gwtext.client.widgets.form.TextField;
20
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
21
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
21
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter;
22
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter;
22
 
23
 
23
/**
24
/**
24
 * Barre de pagination asynchrone avec filtrage des touches et accès directs et
25
 * Barre de pagination asynchrone avec filtrage des touches et accès directs et
25
 * séquentiels à une page
26
 * séquentiels à une page
26
 * 
27
 * 
27
 * @author aurelien
28
 * @author aurelien
28
 * 
29
 * 
29
 */
30
 */
30
public class pageToolBarVue extends Toolbar implements Rafraichissable {
31
public class pageToolBarVue extends Toolbar implements Rafraichissable {
31
 
32
 
32
	/**
33
	/**
33
	 * Instance du médiateur à qui on notifie les évnènements
34
	 * Instance du médiateur à qui on notifie les évnènements
34
	 */
35
	 */
35
	private ImageMediateur iMediateur = null;
36
	private ListePaginable listePaginable = null;
36
 
37
 
37
	/**
38
	/**
38
	 * Bouton précédent
39
	 * Bouton précédent
39
	 */
40
	 */
40
	private ToolbarButton prevPage = new ToolbarButton();
41
	private ToolbarButton prevPage = new ToolbarButton();
41
	/**
42
	/**
42
	 * Bouton suivant
43
	 * Bouton suivant
43
	 */
44
	 */
44
	private ToolbarButton suivPage = new ToolbarButton();
45
	private ToolbarButton suivPage = new ToolbarButton();
45
	/**
46
	/**
46
	 * Numéro de la page courante (attention, commence à zéro pour des raisons
47
	 * Numéro de la page courante (attention, commence à zéro pour des raisons
47
	 * pratiques)
48
	 * pratiques)
48
	 */
49
	 */
49
	private int pageCourante = 0;
50
	private int pageCourante = 0;
50
	/**
51
	/**
51
	 * Nombre de page total
52
	 * Nombre de page total
52
	 */
53
	 */
53
	private int pageTotale = 1;
54
	private int pageTotale = 1;
54
	/**
55
	/**
55
	 * Nombre d'élements total
56
	 * Nombre d'élements total
56
	 */
57
	 */
57
	private int nbElement = 0;
58
	private int nbElement = 0;
58
	/**
59
	/**
59
	 * Nombre d'élément par page
60
	 * Nombre d'élément par page
60
	 */
61
	 */
61
	private int taillePage = 0;
62
	private int taillePage = 0;
62
	/**
63
	/**
63
	 * Texte statique de la toolbar 1
64
	 * Texte statique de la toolbar 1
64
	 */
65
	 */
65
	private ToolbarTextItem page = new ToolbarTextItem("Page ");
66
	private ToolbarTextItem page = new ToolbarTextItem("Page ");
66
	/**
67
	/**
67
	 * Affichage de la page courante
68
	 * Affichage de la page courante
68
	 */
69
	 */
69
	private TextField champPage = new TextField("" + (pageCourante + 1));
70
	private TextField champPage = new TextField("" + (pageCourante + 1));
70
	/**
71
	/**
71
	 * Affichage de "sur pageTotale "
72
	 * Affichage de "sur pageTotale "
72
	 */
73
	 */
73
	private ToolbarTextItem surTotalPage = new ToolbarTextItem(" sur "
74
	private ToolbarTextItem surTotalPage = new ToolbarTextItem(" sur "
74
			+ pageTotale);
75
			+ pageTotale);
75
	/**
76
	/**
76
	 * Texte statique de la toolbar 2
77
	 * Texte statique de la toolbar 2
77
	 */
78
	 */
78
	private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ");
79
	private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ");
79
	/**
80
	/**
80
	 * Combobox permettant de selectionner le nombre d'élements à afficher par
81
	 * Combobox permettant de selectionner le nombre d'élements à afficher par
81
	 * page et donc de changer la variable taillePage
82
	 * page et donc de changer la variable taillePage
82
	 */
83
	 */
83
	private ComboBox selecteurTaillePage = new ComboBox();
84
	private ComboBox selecteurTaillePage = new ComboBox();
84
	/**
85
	/**
85
	 * Texte statique de la toolbar 3
86
	 * Texte statique de la toolbar 3
86
	 */
87
	 */
87
	private ToolbarTextItem nbElemParPage = new ToolbarTextItem(
88
	private ToolbarTextItem nbElemParPage = new ToolbarTextItem(
88
			" images par page ");
89
			" images par page ");
89
	/**
90
	/**
90
	 * Affiche l'intervalle des éléments contenus dans la page
91
	 * Affiche l'intervalle des éléments contenus dans la page
91
	 */
92
	 */
92
	private ToolbarTextItem intervalleElements = new ToolbarTextItem("Images "
93
	private ToolbarTextItem intervalleElements = new ToolbarTextItem("Images "
93
			+ pageCourante * taillePage + " sur " + nbElement);
94
			+ pageCourante * taillePage + " sur " + nbElement);
94
 
95
 
95
	/**
96
	/**
96
	 * retourne le mediateur associe à la barre
97
	 * retourne la liste associé à la barre
97
	 */
98
	 */
-
 
99
	
98
	public ImageMediateur getImediateur() {
100
	public ListePaginable getlistePaginable() {
99
		return iMediateur;
101
		return listePaginable;
100
	}
102
	}
101
 
103
 
102
	/***************************************************************************
104
	/***************************************************************************
103
	 * constructeur sans argument (privé car ne doit pas être utilisé)
105
	 * constructeur sans argument (privé car ne doit pas être utilisé)
104
	 */
106
	 */
105
	@SuppressWarnings("unused")
107
	@SuppressWarnings("unused")
106
	private pageToolBarVue() {
108
	private pageToolBarVue() {
107
		super();
109
		super();
108
	}
110
	}
109
 
111
 
110
	/**
112
	/**
111
	 * constructeur avec paramètres
113
	 * constructeur avec paramètres
112
	 * 
114
	 * 
113
	 * @param im
115
	 * @param im
114
	 *            le médiateur à associer à la barre
116
	 *            le médiateur à associer à la barre
115
	 */
117
	 */
116
	public pageToolBarVue(ImageMediateur im) {
118
	public pageToolBarVue(ListePaginable lst) {
117
		super();
119
		super();
118
 
120
 
119
		iMediateur = im;
121
		listePaginable = lst;
120
 
122
 
121
		// on dispose un peu de texte et quelques espaces pour séparer les
123
		// on dispose un peu de texte et quelques espaces pour séparer les
122
		// éléments
124
		// éléments
123
		addButton(prevPage);
125
		addButton(prevPage);
124
		addSpacer();
126
		addSpacer();
125
		addItem(page);
127
		addItem(page);
126
		addField(champPage);
128
		addField(champPage);
127
		addItem(surTotalPage);
129
		addItem(surTotalPage);
128
		addSpacer();
130
		addSpacer();
129
		addButton(suivPage);
131
		addButton(suivPage);
130
 
132
 
131
		champPage.setWidth(30);
133
		champPage.setWidth(30);
132
 
134
 
133
		addSpacer();
135
		addSpacer();
134
		addItem(afficherNbElem);
136
		addItem(afficherNbElem);
135
 
137
 
136
		prevPage.setIcon("page_prev.png");
138
		prevPage.setIcon("page_prev.png");
137
		suivPage.setIcon("page_suiv.png");
139
		suivPage.setIcon("page_suiv.png");
138
 
140
 
139
		// le store contient les valeur possibles pour les tailles de page
141
		// le store contient les valeur possibles pour les tailles de page
140
		final Store store = new SimpleStore(new String[] { "nb_page" },
142
		final Store store = new SimpleStore(new String[] { "nb_page" },
141
				getNbPages());
143
				getNbPages());
142
		store.load();
144
		store.load();
143
 
145
 
144
		// le template definit ce que l'on affiche pour chaque element du store
146
		// le template definit ce que l'on affiche pour chaque element du store
145
		// dans la combobox
147
		// dans la combobox
146
		final Template tp = new Template("<div class=\"x-combo-list-item\">"
148
		final Template tp = new Template("<div class=\"x-combo-list-item\">"
147
				+ "{nb_page}" + "<div class=\"x-clear\"></div></div>");
149
				+ "{nb_page}" + "<div class=\"x-clear\"></div></div>");
148
		tp.compile();
150
		tp.compile();
149
 
151
 
150
		selecteurTaillePage.setTpl(tp);
152
		selecteurTaillePage.setTpl(tp);
151
		selecteurTaillePage.setStore(store);
153
		selecteurTaillePage.setStore(store);
152
		selecteurTaillePage.setWidth(40);
154
		selecteurTaillePage.setWidth(40);
153
		selecteurTaillePage.setEditable(false);
155
		selecteurTaillePage.setEditable(false);
154
		addField(selecteurTaillePage);
156
		addField(selecteurTaillePage);
155
		selecteurTaillePage.setValue("50");
157
		selecteurTaillePage.setValue("50");
156
		selecteurTaillePage.setWidth(50);
158
		selecteurTaillePage.setWidth(50);
157
		addItem(nbElemParPage);
159
		addItem(nbElemParPage);
158
 
160
 
159
		// on remplit l'espace pour que l'intervalle d'élement se place à droite
161
		// on remplit l'espace pour que l'intervalle d'élement se place à droite
160
		// de la barre
162
		// de la barre
161
		addFill();
163
		addFill();
162
		addItem(intervalleElements);
164
		addItem(intervalleElements);
163
		addSpacer();
165
		addSpacer();
164
 
166
 
165
		// on ajoute les différents listeners
167
		// on ajoute les différents listeners
166
		ajouterListeners();
168
		ajouterListeners();
167
	}
169
	}
168
 
170
 
169
	/**
171
	/**
170
	 * ajoute les différents listeners nécessaires au bon fonctionnement des
172
	 * ajoute les différents listeners nécessaires au bon fonctionnement des
171
	 * éléments de la barre de pagination
173
	 * éléments de la barre de pagination
172
	 */
174
	 */
173
	private void ajouterListeners() {
175
	private void ajouterListeners() {
174
		// boutons suivants et précédents
176
		// boutons suivants et précédents
175
		prevPage.addListener(new ButtonListenerAdapter() {
177
		prevPage.addListener(new ButtonListenerAdapter() {
176
 
178
 
177
			public void onClick(Button button, EventObject e) {
179
			public void onClick(Button button, EventObject e) {
178
 
180
 
179
				// si la page courante n'est pas la première
181
				// si la page courante n'est pas la première
180
				if (pageCourante > 0) {
182
				if (pageCourante > 0) {
181
					// on décrémente la page courante de 1
183
					// on décrémente la page courante de 1
182
					pageCourante--;
184
					pageCourante--;
183
					// on rafraichit l'affichage
185
					// on rafraichit l'affichage
184
					rafraichirNumeroPage();
186
					rafraichirNumeroPage();
185
					// et on notifie le médiateur de l'évenement
187
					// et on notifie le médiateur de l'évenement
186
					getImediateur().changerNumeroPage(pageCourante);
188
					listePaginable.changerNumeroPage(pageCourante);
187
 
189
 
188
				}
190
				}
189
			}
191
			}
190
		});
192
		});
191
 
193
 
192
		suivPage.addListener(new ButtonListenerAdapter() {
194
		suivPage.addListener(new ButtonListenerAdapter() {
193
 
195
 
194
			public void onClick(Button button, EventObject e) {
196
			public void onClick(Button button, EventObject e) {
195
 
197
 
196
				// si la page courante n'est pas la dernière
198
				// si la page courante n'est pas la dernière
197
				if (pageCourante < pageTotale - 1) {
199
				if (pageCourante < pageTotale - 1) {
198
					// on incrémente la page courante de 1
200
					// on incrémente la page courante de 1
199
					pageCourante++;
201
					pageCourante++;
200
					// on rafraichit l'affichage
202
					// on rafraichit l'affichage
201
					rafraichirNumeroPage();
203
					rafraichirNumeroPage();
202
					// et on notifie le médiateur de l'évenement
204
					// et on notifie le médiateur de l'évenement
203
					getImediateur().changerNumeroPage(pageCourante);
205
					listePaginable.changerNumeroPage(pageCourante);
204
 
206
 
205
				}
207
				}
206
			}
208
			}
207
		});
209
		});
208
 
210
 
209
		champPage.addListener(new TextFieldListenerAdapter() {
211
		champPage.addListener(new TextFieldListenerAdapter() {
210
 
212
 
211
			public void onSpecialKey(Field field, EventObject e) {
213
			public void onSpecialKey(Field field, EventObject e) {
212
 
214
 
213
				// on teste si la touche entrée a été pressée
215
				// on teste si la touche entrée a été pressée
214
				if (e.getKey() == EventObject.ENTER) {
216
				if (e.getKey() == EventObject.ENTER) {
215
					int nouvellePage = pageCourante;
217
					int nouvellePage = pageCourante;
216
					// on teste avec parseInt si la valeur entrée est un entier
218
					// on teste avec parseInt si la valeur entrée est un entier
217
					try {
219
					try {
218
						nouvellePage = Integer
220
						nouvellePage = Integer
219
								.parseInt(champPage.getRawValue());
221
								.parseInt(champPage.getRawValue());
220
					}
222
					}
221
					// si ce n'est pas le cas alors on remet le numéro de page
223
					// si ce n'est pas le cas alors on remet le numéro de page
222
					// correct
224
					// correct
223
					catch (NumberFormatException nfe) {
225
					catch (NumberFormatException nfe) {
224
						rafraichirNumeroPage();
226
						rafraichirNumeroPage();
225
						champPage.focus(true);
227
						champPage.focus(true);
226
						return;
228
						return;
227
					}
229
					}
228
 
230
 
229
					// si la conversion reussit on verifie s'il est nécessaire
231
					// si la conversion reussit on verifie s'il est nécessaire
230
					// de changer de page
232
					// de changer de page
231
					// et si la nouvelle est comprise dans l'intervalle des
233
					// et si la nouvelle est comprise dans l'intervalle des
232
					// pages existantes (0..pageTotale)
234
					// pages existantes (0..pageTotale)
233
					if (nouvellePage != pageCourante + 1 && nouvellePage > 0
235
					if (nouvellePage != pageCourante + 1 && nouvellePage > 0
234
							&& nouvellePage <= pageTotale) {
236
							&& nouvellePage <= pageTotale) {
235
						// le cas échéant, on charge la nouvelle page et on
237
						// le cas échéant, on charge la nouvelle page et on
236
						// notifie le médiateur
238
						// notifie le médiateur
237
						changerPageCourante(nouvellePage - 1);
239
						changerPageCourante(nouvellePage - 1);
238
						getImediateur().changerNumeroPage(pageCourante);
240
						listePaginable.changerNumeroPage(pageCourante);
239
 
241
 
240
					} else {
242
					} else {
241
						// sinon on reaffiche l'ancien numero de page sans rien
243
						// sinon on reaffiche l'ancien numero de page sans rien
242
						// changer
244
						// changer
243
						rafraichirNumeroPage();
245
						rafraichirNumeroPage();
244
						champPage.focus(true);
246
						champPage.focus(true);
245
					}
247
					}
246
				}
248
				}
247
			}
249
			}
248
 
250
 
249
			public void onFocus(Field field) {
251
			public void onFocus(Field field) {
250
 
252
 
251
				champPage.focus(true);
253
				champPage.focus(true);
252
			}
254
			}
253
 
255
 
254
		});
256
		});
255
 
257
 
256
		// pour éviter de se compliquer la vie, on filtre tous les charactères
258
		// pour éviter de se compliquer la vie, on filtre tous les charactères
257
		// non numériques
259
		// non numériques
258
		champPage.addKeyPressListener(new EventCallback() {
260
		champPage.addKeyPressListener(new EventCallback() {
259
 
261
 
260
			public void execute(EventObject e) {
262
			public void execute(EventObject e) {
261
 
263
 
262
				// si c'est un numerique
264
				// si c'est un numerique
263
				if (Character.isDigit((char) e.getCharCode())) {
265
				if (Character.isDigit((char) e.getCharCode())) {
264
					// on laisse passer
266
					// on laisse passer
265
					return;
267
					return;
266
				}
268
				}
267
 
269
 
268
				// si c'est la touche entrée ou backspace (valider ou effacer)
270
				// si c'est la touche entrée ou backspace (valider ou effacer)
269
				if (e.getKey() == EventObject.ENTER
271
				if (e.getKey() == EventObject.ENTER
270
						|| e.getKey() == EventObject.BACKSPACE) {
272
						|| e.getKey() == EventObject.BACKSPACE) {
271
					// on laisse passer
273
					// on laisse passer
272
					return;
274
					return;
273
				} else {
275
				} else {
274
					// sinon on remet le numero de page correct et on annule
276
					// sinon on remet le numero de page correct et on annule
275
					// l'évenement
277
					// l'évenement
276
					rafraichirNumeroPage();
278
					rafraichirNumeroPage();
277
					e.stopEvent();
279
					e.stopEvent();
278
				}
280
				}
279
			}
281
			}
280
 
282
 
281
		});
283
		});
282
 
284
 
283
		// listener pour la selection dans la combobox
285
		// listener pour la selection dans la combobox
284
		selecteurTaillePage.addListener(new ComboBoxListenerAdapter() {
286
		selecteurTaillePage.addListener(new ComboBoxListenerAdapter() {
285
 
287
 
286
			public void onSelect(ComboBox comboBox, Record record, int index) {
288
			public void onSelect(ComboBox comboBox, Record record, int index) {
287
 
289
 
288
				String nouvelleTaillePageString = comboBox.getStore()
290
				String nouvelleTaillePageString = comboBox.getStore()
289
						.getRecordAt(index).getAsString("nb_page");
291
						.getRecordAt(index).getAsString("nb_page");
290
				int nouvelleTaillePage = Integer
292
				int nouvelleTaillePage = Integer
291
						.parseInt(nouvelleTaillePageString);
293
						.parseInt(nouvelleTaillePageString);
292
 
294
 
293
				// si la taille de page est différente de l'ancienne
295
				// si la taille de page est différente de l'ancienne
294
				if (nouvelleTaillePage != taillePage) {
296
				if (nouvelleTaillePage != taillePage) {
295
					// on la change
297
					// on la change
296
					changerTaillePage(nouvelleTaillePage);
298
					changerTaillePage(nouvelleTaillePage);
297
				}
299
				}
298
				// et on met la valeur à jour dans la combobox
300
				// et on met la valeur à jour dans la combobox
299
				comboBox.setValue(nouvelleTaillePageString);
301
				comboBox.setValue(nouvelleTaillePageString);
300
			}
302
			}
301
 
303
 
302
		});
304
		});
303
	}
305
	}
304
 
306
 
305
	/**
307
	/**
306
	 * Met à jour les affichage sur les numéros de pages et d'intervalle
308
	 * Met à jour les affichage sur les numéros de pages et d'intervalle
307
	 * d'éléments à partir des variables de classes
309
	 * d'éléments à partir des variables de classes
308
	 */
310
	 */
309
	public void rafraichirNumeroPage() {
311
	public void rafraichirNumeroPage() {
310
		surTotalPage.setText(" sur " + pageTotale);
312
		surTotalPage.setText(" sur " + pageTotale);
311
 
313
 
312
		if (nbElement == 0) {
314
		if (nbElement == 0) {
313
			champPage.setValue("" + (0));
315
			champPage.setValue("" + (0));
314
			// on met simplement à jour l'intervalle qui contient toujours le
316
			// on met simplement à jour l'intervalle qui contient toujours le
315
			// même nombre d'éléments
317
			// même nombre d'éléments
316
			intervalleElements.setText("Images 0 - 0 sur 0");
318
			intervalleElements.setText("Images 0 - 0 sur 0");
317
		} else {
319
		} else {
318
			champPage.setValue("" + (pageCourante + 1));
320
			champPage.setValue("" + (pageCourante + 1));
319
 
321
 
320
			// si la page n'est pas la dernière
322
			// si la page n'est pas la dernière
321
			if (pageCourante + 1 != pageTotale) {
323
			if (pageCourante + 1 != pageTotale) {
322
				// sauf pour la dernière page qui contient souvent moins
324
				// sauf pour la dernière page qui contient souvent moins
323
				// d'élements que le nombre d'élements par page
325
				// d'élements que le nombre d'élements par page
324
				intervalleElements.setText("Images " + pageCourante
326
				intervalleElements.setText("Images " + pageCourante
325
						* taillePage + " - " + (pageCourante + 1) * taillePage
327
						* taillePage + " - " + (pageCourante + 1) * taillePage
326
						+ " sur " + nbElement);
328
						+ " sur " + nbElement);
327
			} else {
329
			} else {
328
				// on met simplement à jour l'intervalle qui contient toujours
330
				// on met simplement à jour l'intervalle qui contient toujours
329
				// le même nombre d'éléments
331
				// le même nombre d'éléments
330
				intervalleElements.setText("Images " + pageCourante
332
				intervalleElements.setText("Images " + pageCourante
331
						* taillePage + " - " + nbElement + " sur " + nbElement);
333
						* taillePage + " - " + nbElement + " sur " + nbElement);
332
			}
334
			}
333
		}
335
		}
334
	}
336
	}
335
 
337
 
336
	/**
338
	/**
337
	 * Met à jour la page en cours
339
	 * Met à jour la page en cours
338
	 * 
340
	 * 
339
	 * @param nouvellePageCourante
341
	 * @param nouvellePageCourante
340
	 *            la nouvelle page en cours
342
	 *            la nouvelle page en cours
341
	 */
343
	 */
342
	public void changerPageCourante(int nouvellePageCourante) {
344
	public void changerPageCourante(int nouvellePageCourante) {
343
		pageCourante = nouvellePageCourante;
345
		pageCourante = nouvellePageCourante;
344
	}
346
	}
345
 
347
 
346
	/**
348
	/**
347
	 * Methode héritée de l'interface rafraichissable
349
	 * Methode héritée de l'interface rafraichissable
348
	 */
350
	 */
349
	public void rafraichir(Object nouvelleDonnees,
351
	public void rafraichir(Object nouvelleDonnees,
350
			boolean repandreRaffraichissement) {
352
			boolean repandreRaffraichissement) {
351
 
353
 
352
		// si on reçoit un tableau de int
354
		// si on reçoit un tableau de int
353
		if (nouvelleDonnees instanceof int[]) {
355
		if (nouvelleDonnees instanceof int[]) {
354
			int[] page = (int[]) nouvelleDonnees;
356
			int[] page = (int[]) nouvelleDonnees;
355
			// le premier élement est le nombre de pages totales
357
			// le premier élement est le nombre de pages totales
356
			pageTotale = page[0];
358
			pageTotale = page[0];
357
			// le second la page en cours
359
			// le second la page en cours
358
			pageCourante = page[1];
360
			pageCourante = page[1];
359
			// le troisième la taille de la page
361
			// le troisième la taille de la page
360
			taillePage = page[2];
362
			taillePage = page[2];
361
			// et le dernier le nombre total d'éléments
363
			// et le dernier le nombre total d'éléments
362
			nbElement = page[3];
364
			nbElement = page[3];
363
 
365
 
364
			// si la page courante dépasse la page totale (cas normalement
366
			// si la page courante dépasse la page totale (cas normalement
365
			// improbable car géré en amont)
367
			// improbable car géré en amont)
366
			// on met le numéro de page à la page courante -1 (car la page
368
			// on met le numéro de page à la page courante -1 (car la page
367
			// courante est comptée à partir
369
			// courante est comptée à partir
368
			// de zéro)
370
			// de zéro)
369
			if (pageCourante >= pageTotale && pageCourante != 0) {
371
			if (pageCourante >= pageTotale && pageCourante != 0) {
370
				pageCourante = pageTotale - 1;
372
				pageCourante = pageTotale - 1;
371
				// le cas échéant on en notifie le médiateur
373
				// le cas échéant on en notifie le médiateur
372
				getImediateur().changerNumeroPage(pageCourante);
374
				listePaginable.changerNumeroPage(pageCourante);
373
			}
375
			}
374
		}
376
		}
375
 
377
 
376
		// enfin on rafraichit les informations affichées à partir des nouvelles
378
		// enfin on rafraichit les informations affichées à partir des nouvelles
377
		// variables de classes mises à jour
379
		// variables de classes mises à jour
378
		rafraichirNumeroPage();
380
		rafraichirNumeroPage();
379
	}
381
	}
380
 
382
 
381
	/**
383
	/**
382
	 * Renvoie les différents intervalles de pages possibles
384
	 * Renvoie les différents intervalles de pages possibles
383
	 * 
385
	 * 
384
	 * @return un tableau de tableau de string qui contient les différentes
386
	 * @return un tableau de tableau de string qui contient les différentes
385
	 *         taille de pages
387
	 *         taille de pages
386
	 */
388
	 */
387
	public String[][] getNbPages() {
389
	public String[][] getNbPages() {
388
		String[][] pages = { { "200" }, { "100" }, { "50" }, { "20" }, { "10" } };
390
		String[][] pages = { { "200" }, { "100" }, { "50" }, { "20" }, { "10" } };
389
 
391
 
390
		return pages;
392
		return pages;
391
	}
393
	}
392
 
394
 
393
	/**
395
	/**
394
	 * Envoie au médiateur une demande pour modifier la taille de la page (qui
396
	 * Envoie au médiateur une demande pour modifier la taille de la page (qui
395
	 * va à son tour faire les modifications nécessaires)
397
	 * va à son tour faire les modifications nécessaires)
396
	 * 
398
	 * 
397
	 * @param nouvelleTaillePage
399
	 * @param nouvelleTaillePage
398
	 *            la nouvelle taille de page (élement appartenant au tableau
400
	 *            la nouvelle taille de page (élement appartenant au tableau
399
	 *            renvoyé par getNbPages())
401
	 *            renvoyé par getNbPages())
400
	 */
402
	 */
401
	public void changerTaillePage(int nouvelleTaillePage) {
403
	public void changerTaillePage(int nouvelleTaillePage) {
402
 
404
 
403
		getImediateur().changerTaillePage(nouvelleTaillePage);
405
		listePaginable.changerTaillePage(nouvelleTaillePage);
404
 
406
 
405
	}
407
	}
406
 
408
 
407
	/**
409
	/**
408
	 * Selectionne la valeur correspond à celle passée en paramètre dans la
410
	 * Selectionne la valeur correspond à celle passée en paramètre dans la
409
	 * combobox (si elle existe)
411
	 * combobox (si elle existe)
410
	 * 
412
	 * 
411
	 * @param nouvelleTaillePage
413
	 * @param nouvelleTaillePage
412
	 *            la nouvelle taille de page
414
	 *            la nouvelle taille de page
413
	 */
415
	 */
414
	public void selectionnerTaillePage(int nouvelleTaillePage) {
416
	public void selectionnerTaillePage(int nouvelleTaillePage) {
415
 
417
 
416
		selecteurTaillePage.setValue("" + nouvelleTaillePage);
418
		selecteurTaillePage.setValue("" + nouvelleTaillePage);
417
	}
419
	}
418
 
420
 
419
}
421
}