Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1040 Rev 1059
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import java.util.Iterator;
3
import java.util.Iterator;
4
import java.util.LinkedList;
4
import java.util.LinkedList;
5
 
5
 
6
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.images.Images;
7
import org.tela_botanica.client.images.Images;
8
import org.tela_botanica.client.interfaces.ListePaginable;
8
import org.tela_botanica.client.interfaces.ListePaginable;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.util.UtilString;
10
import org.tela_botanica.client.util.UtilString;
11
 
11
 
12
import com.extjs.gxt.ui.client.event.ButtonEvent;
12
import com.extjs.gxt.ui.client.event.ButtonEvent;
13
import com.extjs.gxt.ui.client.event.ComponentEvent;
13
import com.extjs.gxt.ui.client.event.ComponentEvent;
14
import com.extjs.gxt.ui.client.event.KeyListener;
14
import com.extjs.gxt.ui.client.event.KeyListener;
15
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
15
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
16
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
16
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
17
import com.extjs.gxt.ui.client.event.SelectionListener;
17
import com.extjs.gxt.ui.client.event.SelectionListener;
18
import com.extjs.gxt.ui.client.store.ListStore;
18
import com.extjs.gxt.ui.client.store.ListStore;
19
import com.extjs.gxt.ui.client.widget.Text;
19
import com.extjs.gxt.ui.client.widget.Text;
20
import com.extjs.gxt.ui.client.widget.button.Button;
20
import com.extjs.gxt.ui.client.widget.button.Button;
21
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
21
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
22
import com.extjs.gxt.ui.client.widget.form.TextField;
22
import com.extjs.gxt.ui.client.widget.form.TextField;
23
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
23
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
24
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
24
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
25
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
25
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
26
import com.google.gwt.event.dom.client.KeyCodes;
26
import com.google.gwt.event.dom.client.KeyCodes;
27
import com.google.gwt.i18n.client.Dictionary;
27
import com.google.gwt.i18n.client.Dictionary;
28
import com.google.gwt.user.client.Window;
28
import com.google.gwt.user.client.Window;
29
 
29
 
30
public class BarrePaginationVue extends ToolBar implements Rafraichissable {
30
public class BarrePaginationVue extends ToolBar implements Rafraichissable {
31
 
31
 
32
	private ListePaginable listePaginable = null;
32
	private ListePaginable listePaginable = null;
33
	
33
	
34
	private Button prevPage, suivPage, premierePage, dernierePage, rafraichir;
34
	private Button prevPage, suivPage, premierePage, dernierePage, rafraichir;
35
	
35
	
36
	private int pageCourante, nbElement = 0;
36
	private int pageCourante, nbElement = 0;
37
	private int taillePage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
37
	private int taillePage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
38
	private int pageTotale = 1;
38
	private int pageTotale = 1;
39
	private Text page, surTotalPage, afficherNbElem, nbElemParPage, intervalleElements;
39
	private Text page, surTotalPage, afficherNbElem, nbElemParPage, intervalleElements;
40
	
40
	
41
	private TextField<String> champPage = new TextField<String>();
41
	private TextField<String> champPage = new TextField<String>();
42
	private SimpleComboBox selecteurTaillePage = new SimpleComboBox();
42
	private SimpleComboBox selecteurTaillePage = new SimpleComboBox();
43
	private Text labelFiltre;
43
	private Text labelFiltre;
44
	private TextField<String> filtre;
44
	private TextField<String> filtre;
45
	private Button annulerFiltre;
45
	private Button annulerFiltre;
46
	private boolean filtreActive = false;
46
	private boolean filtreActive = false;
47
	private String termeRecherche = "";
47
	private String termeRecherche = "";
48
	
48
	
49
	LinkedList<Integer> intervallePages = new LinkedList<Integer>();
49
	LinkedList<Integer> intervallePages = new LinkedList<Integer>();
50
	
50
	
51
	ListStore storeIntervalle = new ListStore() ;
51
	ListStore storeIntervalle = new ListStore() ;
52
		
52
		
53
	private String labelElement;
53
	private String labelElement;
54
	private int taillePageDefaut = 50;
54
	private int taillePageDefaut = 50;
55
	
55
	
56
	public ListePaginable getlistePaginable() {
56
	public ListePaginable getlistePaginable() {
57
		return listePaginable;
57
		return listePaginable;
58
	}
58
	}
59
	
59
	
60
	public void setlistePaginable(ListePaginable listePaginable) {
60
	public void setlistePaginable(ListePaginable listePaginable) {
61
		this.listePaginable = listePaginable;
61
		this.listePaginable = listePaginable;
62
	}
62
	}
63
	
63
	
64
	private Mediateur mediateur;
64
	private Mediateur mediateur;
65
	
65
	
66
	public int valeur = 0;
66
	public int valeur = 0;
67
	/***************************************************************************
67
	/***************************************************************************
68
	 * constructeur sans argument (privé car ne doit pas être utilisé)
68
	 * constructeur sans argument (privé car ne doit pas être utilisé)
69
	 */
69
	 */
70
	@SuppressWarnings("unused")
70
	@SuppressWarnings("unused")
71
	private BarrePaginationVue() {
71
	private BarrePaginationVue() {
72
		super();
72
		super();
73
	}
73
	}
74
 
74
 
75
	/**
75
	/**
76
	 * constructeur avec paramètres
76
	 * constructeur avec paramètres
77
	 * 
77
	 * 
78
	 * @param im
78
	 * @param im
79
	 *            le médiateur à associer à la barre
79
	 *            le médiateur à associer à la barre
80
	 */
80
	 */
81
	public BarrePaginationVue(ListePaginable listePaginable, Mediateur mediateur) {
81
	public BarrePaginationVue(ListePaginable listePaginable, Mediateur mediateur) {
82
		
82
		
83
		super();
83
		super();
84
		
84
		
85
		this.listePaginable = listePaginable;		
85
		this.listePaginable = listePaginable;		
86
		this.mediateur = mediateur;
86
		this.mediateur = mediateur;
87
		
87
		
88
		intervallePages.add(10);
88
		intervallePages.add(10);
89
		intervallePages.add(20);
89
		intervallePages.add(20);
90
		intervallePages.add(50);
90
		intervallePages.add(50);
91
		intervallePages.add(100);
91
		intervallePages.add(100);
92
		intervallePages.add(200);
92
		intervallePages.add(200);
93
		
93
		
94
		premierePage = new Button();
94
		premierePage = new Button();
95
		premierePage.setIcon(Images.ICONES.resultsetFirst());
95
		premierePage.setIcon(Images.ICONES.resultsetFirst());
96
		add(premierePage);
96
		add(premierePage);
97
		
97
		
98
		prevPage = new Button();
98
		prevPage = new Button();
99
		prevPage.setIcon(Images.ICONES.resultsetPrevious());
99
		prevPage.setIcon(Images.ICONES.resultsetPrevious());
100
		add(prevPage);
100
		add(prevPage);
101
		
101
		
102
		add(new SeparatorToolItem());		
102
		add(new SeparatorToolItem());		
103
		
103
		
104
		page = new Text(mediateur.i18nC.page());
104
		page = new Text(mediateur.i18nC.page());
105
		page.setStyleAttribute("padding", "0 5px 0 5px");
105
		page.setStyleAttribute("padding", "0 5px 0 5px");
106
		add(page);
106
		add(page);
107
		
107
		
108
		champPage.setValue(String.valueOf(pageCourante+1));
108
		champPage.setValue(String.valueOf(pageCourante+1));
109
		champPage.setStyleAttribute("text-align","right");
109
		champPage.setStyleAttribute("text-align","right");
110
		champPage.setWidth(30);
110
		champPage.setWidth(30);
111
		add(champPage);
111
		add(champPage);
112
		
112
		
113
		surTotalPage = new Text(mediateur.i18nC.sur() + " " + pageTotale);
113
		surTotalPage = new Text(mediateur.i18nC.sur() + " " + pageTotale);
114
		surTotalPage.setStyleAttribute("padding-left", "5px");
114
		surTotalPage.setStyleAttribute("padding-left", "5px");
115
		add(surTotalPage);
115
		add(surTotalPage);
116
		
116
		
117
		//Séparation
117
		//Séparation
118
		add(new SeparatorToolItem());
118
		add(new SeparatorToolItem());
119
		
119
		
120
		suivPage = new Button();
120
		suivPage = new Button();
121
		suivPage.setIcon(Images.ICONES.resultsetNext());
121
		suivPage.setIcon(Images.ICONES.resultsetNext());
122
		add(suivPage);
122
		add(suivPage);
123
		
123
		
124
		dernierePage = new Button();
124
		dernierePage = new Button();
125
		dernierePage.setIcon(Images.ICONES.resultsetLast());
125
		dernierePage.setIcon(Images.ICONES.resultsetLast());
126
		add(dernierePage);
126
		add(dernierePage);
127
 
127
 
128
		//Séparation
128
		//Séparation
129
		add(new SeparatorToolItem());
129
		add(new SeparatorToolItem());
130
		
130
		
131
		rafraichir = new Button();
131
		rafraichir = new Button();
132
		rafraichir.setIcon(Images.ICONES.rafraichir());
132
		rafraichir.setIcon(Images.ICONES.rafraichir());
133
		add(rafraichir);
133
		add(rafraichir);
134
		
134
		
135
		//Séparation
135
		//Séparation
136
		add(new SeparatorToolItem());
136
		add(new SeparatorToolItem());
137
		
137
		
138
		afficherNbElem = new Text(mediateur.i18nC.afficher());
138
		afficherNbElem = new Text(mediateur.i18nC.afficher());
139
		afficherNbElem.setStyleAttribute("padding", "0 5px 0 5px");
139
		afficherNbElem.setStyleAttribute("padding", "0 5px 0 5px");
140
		add(afficherNbElem);
140
		add(afficherNbElem);
141
 
141
 
142
		
142
		
143
		selecteurTaillePage.setWidth("40px");
143
		selecteurTaillePage.setWidth("40px");
144
		setIntervallesPages();
144
		setIntervallesPages();
145
		add(selecteurTaillePage);
145
		add(selecteurTaillePage);
146
		
146
		
147
		labelElement = mediateur.i18nC.elements();
147
		labelElement = mediateur.i18nC.elements();
148
		
148
		
149
		nbElemParPage = new Text(labelElement + " " +mediateur.i18nC.parPage());
149
		nbElemParPage = new Text(labelElement + " " + mediateur.i18nC.parPage());
150
		nbElemParPage.setStyleAttribute("padding-left", "5px");
150
		nbElemParPage.setStyleAttribute("padding-left", "5px");
151
		add(nbElemParPage);
151
		add(nbElemParPage);
-
 
152
		
152
		
153
		//Séparation
-
 
154
		add(new SeparatorToolItem());
153
		// Ajout d'un espace pour mettre le nombre d'éléments à droite
155
		
154
		labelFiltre = new Text("Recherche rapide : ");
-
 
155
		labelFiltre.setStyleAttribute("padding-left", "15px");
156
		labelFiltre = new Text("Recherche rapide : ");
156
		labelFiltre.setStyleAttribute("padding-right", "5px");
157
		labelFiltre.setStyleAttribute("padding-right", "5px");
157
		add(labelFiltre);
158
		add(labelFiltre);
158
		
159
		
159
		filtre = new TextField<String>();
160
		filtre = new TextField<String>();
160
		filtre.setWidth(150);
161
		filtre.setWidth(150);
161
		this.add(filtre);
162
		this.add(filtre);
162
		
163
		
163
		annulerFiltre = new Button();
164
		annulerFiltre = new Button();
164
		annulerFiltre.setIcon(Images.ICONES.annuler());
165
		annulerFiltre.setIcon(Images.ICONES.annuler());
-
 
166
		annulerFiltre.setVisible(false);
165
		add(annulerFiltre);
167
		add(annulerFiltre);
166
		
168
		
167
		add(new FillToolItem());
169
		add(new FillToolItem());
168
		
170
		
169
		intervalleElements = new Text(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
171
		intervalleElements = new Text(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
170
																	(pageCourante + 1) * taillePage, nbElement));
172
																	(pageCourante + 1) * taillePage, nbElement));
171
		add(intervalleElements);
173
		add(intervalleElements);
172
		
174
		
173
		// on ajoute les différents listeners
175
		// on ajoute les différents listeners
174
		ajouterListeners();
176
		ajouterListeners();
175
		
177
		
176
		
178
		
177
	}
179
	}
178
	
180
	
179
	
181
	
180
	
182
	
181
	
183
	
182
	
184
	
183
	
185
	
184
	/**
186
	/**
185
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
187
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
186
	 * 	@param label
188
	 * 	@param label
187
	 */
189
	 */
188
	
190
	
189
	public void setLabelElement(String label) {
191
	public void setLabelElement(String label) {
190
		this.labelElement = label;
192
		this.labelElement = label;
191
		nbElemParPage.setText(labelElement + " par page ");
193
		nbElemParPage.setText(labelElement + " par page ");
192
		intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
194
		intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
193
				(pageCourante + 1) * taillePage, nbElement));
195
				(pageCourante + 1) * taillePage, nbElement));
194
		
196
		
195
	}
197
	}
196
 
198
 
197
	public void setTaillePageParDefaut(int taille) {
199
	public void setTaillePageParDefaut(int taille) {
198
		this.taillePageDefaut = taille;
200
		this.taillePageDefaut = taille;
199
		selecteurTaillePage.setRawValue(""+taillePageDefaut);
201
		selecteurTaillePage.setRawValue(""+taillePageDefaut);
200
	}
202
	}
201
	
203
	
202
	public void setIntervallesPages()
204
	public void setIntervallesPages()
203
	{
205
	{
204
		
206
		
205
		if (!intervallePages.contains(taillePage))	{
207
		if (!intervallePages.contains(taillePage))	{
206
			intervallePages.add(taillePage);
208
			intervallePages.add(taillePage);
207
		}
209
		}
208
		
210
		
209
		Iterator<Integer> itIntervallePages = intervallePages.iterator();
211
		Iterator<Integer> itIntervallePages = intervallePages.iterator();
210
		while (itIntervallePages.hasNext())	{
212
		while (itIntervallePages.hasNext())	{
211
			selecteurTaillePage.add(itIntervallePages.next());
213
			selecteurTaillePage.add(itIntervallePages.next());
212
		}
214
		}
213
		
215
		
214
		selecteurTaillePage.setSimpleValue(taillePage);
216
		selecteurTaillePage.setSimpleValue(taillePage);
215
	}
217
	}
-
 
218
	
-
 
219
	/**
-
 
220
	 * Change l'état de la barre de pagination a actif ou inactif
-
 
221
	 * @param etat actif ou inactif
-
 
222
	 */
-
 
223
	private void changerEtatBarre(boolean etat)	{
-
 
224
		premierePage.setEnabled(etat);
-
 
225
		prevPage.setEnabled(etat);
-
 
226
		suivPage.setEnabled(etat);
-
 
227
		dernierePage.setEnabled(etat);
-
 
228
		champPage.setEnabled(etat);
-
 
229
		selecteurTaillePage.setEnabled(etat);
-
 
230
		page.setEnabled(etat);
-
 
231
		surTotalPage.setEnabled(etat);
-
 
232
		afficherNbElem.setEnabled(etat);
-
 
233
		nbElemParPage.setEnabled(etat);
-
 
234
		annulerFiltre.setVisible(!etat);
216
	
235
	}
217
	
236
	
218
	/**
237
	/**
219
	 * ajoute les différents listeners nécessaires au bon fonctionnement des
238
	 * ajoute les différents listeners nécessaires au bon fonctionnement des
220
	 * éléments de la barre de pagination
239
	 * éléments de la barre de pagination
221
	 */
240
	 */
222
	@SuppressWarnings("unchecked")
241
	@SuppressWarnings("unchecked")
223
	private void ajouterListeners() {
242
	private void ajouterListeners() {
224
		
243
		
225
		premierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
244
		premierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
226
		
245
		
227
			public void componentSelected(ButtonEvent ce)	{
246
			public void componentSelected(ButtonEvent ce)	{
228
				pageCourante = 0;
247
				pageCourante = 0;
229
				rafraichirNumeroPage();
248
				rafraichirNumeroPage();
230
				listePaginable.changerNumeroPage(pageCourante);
249
				listePaginable.changerNumeroPage(pageCourante);
231
			}
250
			}
232
		});
251
		});
233
		
252
		
234
		// boutons suivants et précédents
253
		// boutons suivants et précédents
235
		prevPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
254
		prevPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
236
			
255
			
237
			public void componentSelected(ButtonEvent ce) {
256
			public void componentSelected(ButtonEvent ce) {
238
							// si la page courante n'est pas la première
257
							// si la page courante n'est pas la première
239
				if (pageCourante > 0) {
258
				if (pageCourante > 0) {
240
					// on décrémente la page courante de 1
259
					// on décrémente la page courante de 1
241
					pageCourante--;
260
					pageCourante--;
242
					// on rafraichit l'affichage
261
					// on rafraichit l'affichage
243
					rafraichirNumeroPage();
262
					rafraichirNumeroPage();
244
					// et on notifie le médiateur de l'évenement
263
					// et on notifie le médiateur de l'évenement
245
					listePaginable.changerNumeroPage(pageCourante);
264
					listePaginable.changerNumeroPage(pageCourante);
246
 
265
 
247
				}
266
				}
248
			}
267
			}
249
		});
268
		});
250
 
269
 
251
		suivPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
270
		suivPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
252
		
271
		
253
			public void componentSelected(ButtonEvent ce)	{
272
			public void componentSelected(ButtonEvent ce)	{
254
				
273
				
255
				// si la page courante n'est pas la dernière
274
				// si la page courante n'est pas la dernière
256
				if (pageCourante < pageTotale - 1) {
275
				if (pageCourante < pageTotale - 1) {
257
					// on incrémente la page courante de 1
276
					// on incrémente la page courante de 1
258
					pageCourante++;
277
					pageCourante++;
259
					// on rafraichit l'affichage
278
					// on rafraichit l'affichage
260
					rafraichirNumeroPage();
279
					rafraichirNumeroPage();
261
					// et on notifie le médiateur de l'évenement
280
					// et on notifie le médiateur de l'évenement
262
					listePaginable.changerNumeroPage(pageCourante);
281
					listePaginable.changerNumeroPage(pageCourante);
263
				}
282
				}
264
			}
283
			}
265
		});
284
		});
266
		
285
		
267
		dernierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
286
		dernierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
268
			
287
			
269
			public void componentSelected(ButtonEvent ce)	{
288
			public void componentSelected(ButtonEvent ce)	{
270
				pageCourante = pageTotale;
289
				pageCourante = pageTotale;
271
				rafraichirNumeroPage();
290
				rafraichirNumeroPage();
272
				listePaginable.changerNumeroPage(pageCourante);
291
				listePaginable.changerNumeroPage(pageCourante);
273
			}
292
			}
274
		});
293
		});
275
		
294
		
276
		rafraichir.addSelectionListener(new SelectionListener<ButtonEvent>() {
295
		rafraichir.addSelectionListener(new SelectionListener<ButtonEvent>() {
277
			
296
			
278
			public void componentSelected(ButtonEvent ce)	{
297
			public void componentSelected(ButtonEvent ce)	{
279
				listePaginable.changerNumeroPage(pageCourante);
298
				listePaginable.changerNumeroPage(pageCourante);
280
			}
299
			}
281
		});
300
		});
282
		
301
		
283
		annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() {
302
		annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() {
284
			
303
			
285
			public void componentSelected(ButtonEvent ce)	{
304
			public void componentSelected(ButtonEvent ce)	{
286
				filtre.setValue("");
305
				filtre.setValue("");
287
				termeRecherche = "";
306
				termeRecherche = "";
288
				filtreActive = false;
307
				filtreActive = false;
289
				listePaginable.changerNumeroPage(pageCourante);
308
				listePaginable.changerNumeroPage(pageCourante);
-
 
309
				labelFiltre.setStyleAttribute("font-weight", "normal");
290
			}
310
			}
291
		});
311
		});
292
		
312
		
293
		filtre.addKeyListener(new KeyListener(){
313
		filtre.addKeyListener(new KeyListener(){
294
			public void componentKeyUp(ComponentEvent ce) 	{
314
			public void componentKeyUp(ComponentEvent ce) 	{
295
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
315
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
296
					
-
 
297
					System.out.println(pageCourante +" ---- " + nbElement);
316
					
298
					termeRecherche = filtre.getValue();
317
					termeRecherche = filtre.getValue();
299
					if (termeRecherche == null || termeRecherche.equals(""))	{
318
					if (termeRecherche == null || termeRecherche.equals(""))	{
300
						filtreActive = false;
319
						filtreActive = false;
-
 
320
						labelFiltre.setStyleAttribute("font-weight", "normal");
301
						listePaginable.changerNumeroPage(pageCourante);
321
						listePaginable.changerNumeroPage(pageCourante);
-
 
322
						changerEtatBarre(true);
302
					} else	{
323
					} else	{
-
 
324
						changerEtatBarre(false);
303
						listePaginable.filtrerParNom(termeRecherche);
325
						listePaginable.filtrerParNom(termeRecherche);
-
 
326
						labelFiltre.setStyleAttribute("font-weight", "bold");
304
						filtreActive = true;
327
						filtreActive = true;
305
					}
328
					}
306
				}
329
				}
307
			}
330
			}
308
		});
331
		});
309
		
332
		
310
		champPage.addKeyListener(new KeyListener() {
333
		champPage.addKeyListener(new KeyListener() {
311
 
334
 
312
			public void componentKeyUp(ComponentEvent ce) 	{
335
			public void componentKeyUp(ComponentEvent ce) 	{
313
				
336
				
314
				// on teste si la touche entrée a été pressée
337
				// on teste si la touche entrée a été pressée
315
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
338
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
316
					int nouvellePage = pageCourante;
339
					int nouvellePage = pageCourante;
317
					// on teste avec parseInt si la valeur entrée est un entier
340
					// on teste avec parseInt si la valeur entrée est un entier
318
					try {
341
					try {
319
						nouvellePage = Integer
342
						nouvellePage = Integer
320
								.parseInt(champPage.getRawValue());
343
								.parseInt(champPage.getRawValue());
321
					}
344
					}
322
					// si ce n'est pas le cas alors on remet le numéro de page
345
					// si ce n'est pas le cas alors on remet le numéro de page
323
					// correct
346
					// correct
324
					catch (NumberFormatException nfe) {
347
					catch (NumberFormatException nfe) {
325
						rafraichirNumeroPage();
348
						rafraichirNumeroPage();
326
						champPage.focus();
349
						champPage.focus();
327
						return;
350
						return;
328
					}
351
					}
329
 
352
 
330
					// si la conversion reussit on verifie s'il est nécessaire
353
					// si la conversion reussit on verifie s'il est nécessaire
331
					// de changer de page
354
					// de changer de page
332
					// et si la nouvelle est comprise dans l'intervalle des
355
					// et si la nouvelle est comprise dans l'intervalle des
333
					// pages existantes (0..pageTotale)
356
					// pages existantes (0..pageTotale)
334
					if (nouvellePage != pageCourante + 1 && nouvellePage > 0
357
					if (nouvellePage != pageCourante + 1 && nouvellePage > 0
335
							&& nouvellePage <= pageTotale) {
358
							&& nouvellePage <= pageTotale) {
336
						// le cas échéant, on charge la nouvelle page et on
359
						// le cas échéant, on charge la nouvelle page et on
337
						// notifie le médiateur
360
						// notifie le médiateur
338
						changerPageCourante(nouvellePage - 1);
361
						changerPageCourante(nouvellePage - 1);
339
						listePaginable.changerNumeroPage(pageCourante);
362
						listePaginable.changerNumeroPage(pageCourante);
340
 
363
 
341
					} else {
364
					} else {
342
						// sinon on reaffiche l'ancien numero de page sans rien
365
						// sinon on reaffiche l'ancien numero de page sans rien
343
						// changer
366
						// changer
344
						rafraichirNumeroPage();
367
						rafraichirNumeroPage();
345
						champPage.focus();
368
						champPage.focus();
346
					}
369
					}
347
				}
370
				}
348
	}
371
	}
349
 
372
 
350
		
373
		
351
		/*	public void onFocus(Field field) {
374
		/*	public void onFocus(Field field) {
352
 
375
 
353
				champPage.focus();
376
				champPage.focus();
354
			}*/
377
			}*/
355
 
378
 
356
		});
379
		});
357
 
380
 
358
		// pour éviter de se compliquer la vie, on filtre tous les charactères
381
		// pour éviter de se compliquer la vie, on filtre tous les charactères
359
		// non numériques
382
		// non numériques
360
		champPage.addKeyListener(new KeyListener()	{
383
		champPage.addKeyListener(new KeyListener()	{
361
 
384
 
362
			public void componentKeyDown(ComponentEvent ce) 	{
385
			public void componentKeyDown(ComponentEvent ce) 	{
363
 
386
 
364
				// si c'est un numerique
387
				// si c'est un numerique
365
				/*
388
				/*
366
				FIXME
389
				FIXME
367
				if (Character.isDigit((char) e.getCharCode())) {
390
				if (Character.isDigit((char) e.getCharCode())) {
368
				
391
				
369
					// on laisse passer
392
					// on laisse passer
370
					return;
393
					return;
371
				}*/
394
				}*/
372
 
395
 
373
				// si c'est la touche entrée ou backspace (valider ou effacer)
396
				// si c'est la touche entrée ou backspace (valider ou effacer)
374
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER
397
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER
375
						|| ce.getKeyCode() == KeyCodes.KEY_BACKSPACE) {
398
						|| ce.getKeyCode() == KeyCodes.KEY_BACKSPACE) {
376
					// on laisse passer
399
					// on laisse passer
377
					return;
400
					return;
378
				} else {
401
				} else {
379
					// sinon on remet le numero de page correct et on annule
402
					// sinon on remet le numero de page correct et on annule
380
					// l'évenement
403
					// l'évenement
381
					rafraichirNumeroPage();
404
					rafraichirNumeroPage();
382
					ce.stopEvent();
405
					ce.stopEvent();
383
				}
406
				}
384
			}
407
			}
385
 
408
 
386
		});
409
		});
387
 
410
 
388
		// listener pour la selection dans la combobox
411
		// listener pour la selection dans la combobox
389
		selecteurTaillePage.addSelectionChangedListener(
412
		selecteurTaillePage.addSelectionChangedListener(
390
				
413
				
391
				new SelectionChangedListener() {
414
				new SelectionChangedListener() {
392
				
415
				
393
					public void selectionChanged(SelectionChangedEvent e)	{
416
					public void selectionChanged(SelectionChangedEvent e)	{
394
	
417
	
395
					SimpleComboBox comboBox = (SimpleComboBox) e.getSource();
418
					SimpleComboBox comboBox = (SimpleComboBox) e.getSource();
396
					String nouvelleTaillePageString = comboBox.getRawValue();
419
					String nouvelleTaillePageString = comboBox.getRawValue();
397
					int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString);
420
					int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString);
398
						
421
						
399
					changerTaillePage(nouvelleTaillePage);
422
					changerTaillePage(nouvelleTaillePage);
400
					
423
					
401
					rafraichirNumeroPage();			
424
					rafraichirNumeroPage();			
402
			}
425
			}
403
 
426
 
404
		});
427
		});
405
	}
428
	}
406
	
429
	
407
	/**
430
	/**
408
	 * Met à jour les affichage sur les numéros de pages et d'intervalle
431
	 * Met à jour les affichage sur les numéros de pages et d'intervalle
409
	 * d'éléments à partir des variables de classes
432
	 * d'éléments à partir des variables de classes
410
	 */
433
	 */
411
	public void rafraichirNumeroPage() {
434
	public void rafraichirNumeroPage() {
412
		
435
		
413
		if (filtreActive == true)	{
436
		if (filtreActive == true)	{
414
			intervalleElements.setText("<i>Recherche rapide : </i>" + termeRecherche);
437
			intervalleElements.setText("<b><i>Recherche active : </i></b>" + termeRecherche);
415
		} else {
438
		} else {
416
		
439
		
417
			surTotalPage.setText(" sur " + pageTotale);
440
			surTotalPage.setText(" sur " + pageTotale);
418
			
441
			
419
			if (nbElement == 0) {
442
			if (nbElement == 0) {
420
				champPage.setValue("" + (0));
443
				champPage.setValue("" + (0));
421
				// on met simplement à jour l'intervalle qui contient toujours le
444
				// on met simplement à jour l'intervalle qui contient toujours le
422
				// même nombre d'éléments
445
				// même nombre d'éléments
423
				intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 0,0,0));
446
				intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 0,0,0));
424
			} else {
447
			} else {
425
				champPage.setValue("" + (pageCourante + 1));
448
				champPage.setValue("" + (pageCourante + 1));
426
	
449
	
427
				// si la page n'est pas la dernière
450
				// si la page n'est pas la dernière
428
				if (pageCourante + 1 != pageTotale) {
451
				if (pageCourante + 1 != pageTotale) {
429
					// sauf pour la dernière page qui contient souvent moins
452
					// sauf pour la dernière page qui contient souvent moins
430
					// d'élements que le nombre d'élements par page
453
					// d'élements que le nombre d'élements par page
431
					intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
454
					intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
432
							(pageCourante + 1) * taillePage, nbElement));
455
							(pageCourante + 1) * taillePage, nbElement));
433
				} else {
456
				} else {
434
					
457
					
435
					// on met simplement à jour l'intervalle qui contient toujours
458
					// on met simplement à jour l'intervalle qui contient toujours
436
					// le même nombre d'éléments
459
					// le même nombre d'éléments
437
					intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
460
					intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
438
							nbElement, nbElement));
461
							nbElement, nbElement));
439
				}
462
				}
440
			}
463
			}
441
		}
464
		}
442
	}
465
	}
443
 
466
 
444
	/**
467
	/**
445
	 * Met à jour la page en cours
468
	 * Met à jour la page en cours
446
	 * 
469
	 * 
447
	 * @param nouvellePageCourante
470
	 * @param nouvellePageCourante
448
	 *            la nouvelle page en cours
471
	 *            la nouvelle page en cours
449
	 */
472
	 */
450
	public void changerPageCourante(int nouvellePageCourante) {
473
	public void changerPageCourante(int nouvellePageCourante) {
451
		pageCourante = nouvellePageCourante;
474
		pageCourante = nouvellePageCourante;
452
	}
475
	}
453
 
476
 
454
	/*
477
	/*
455
	 * Renvoie les différents intervalles de pages possibles
478
	 * Renvoie les différents intervalles de pages possibles
456
	 * 
479
	 * 
457
	 * @return un tableau de string qui contient les différentes
480
	 * @return un tableau de string qui contient les différentes
458
	 *         taille de pages
481
	 *         taille de pages
459
	 *
482
	 *
460
	public String[] getNbPages() {
483
	public String[] getNbPages() {
461
 
484
 
462
		return pages;
485
		return pages;
463
	}/
486
	}/
464
 
487
 
465
	/**
488
	/**
466
	 * Envoie au médiateur une demande pour modifier la taille de la page (qui
489
	 * Envoie au médiateur une demande pour modifier la taille de la page (qui
467
	 * va à son tour faire les modifications nécessaires)
490
	 * va à son tour faire les modifications nécessaires)
468
	 * 
491
	 * 
469
	 * @param nouvelleTaillePage
492
	 * @param nouvelleTaillePage
470
	 *            la nouvelle taille de page (élement appartenant au tableau
493
	 *            la nouvelle taille de page (élement appartenant au tableau
471
	 *            renvoyé par getNbPages())
494
	 *            renvoyé par getNbPages())
472
	 */
495
	 */
473
	public void changerTaillePage(int nouvelleTaillePage) {
496
	public void changerTaillePage(int nouvelleTaillePage) {
474
		if (nouvelleTaillePage != taillePage)	{
497
		if (nouvelleTaillePage != taillePage)	{
475
			listePaginable.changerTaillePage(nouvelleTaillePage);
498
			listePaginable.changerTaillePage(nouvelleTaillePage);
476
		}
499
		}
477
	}
500
	}
478
 
501
 
479
	/**
502
	/**
480
	 * Selectionne la valeur correspond à celle passée en paramètre dans la
503
	 * Selectionne la valeur correspond à celle passée en paramètre dans la
481
	 * combobox (si elle existe)
504
	 * combobox (si elle existe)
482
	 * 
505
	 * 
483
	 * @param nouvelleTaillePage
506
	 * @param nouvelleTaillePage
484
	 *            la nouvelle taille de page
507
	 *            la nouvelle taille de page
485
	 */
508
	 */
486
	public void selectionnerTaillePage(int nouvelleTaillePage) {
509
	public void selectionnerTaillePage(int nouvelleTaillePage) {
487
 
510
 
488
		selecteurTaillePage.setRawValue("" + nouvelleTaillePage);
511
		selecteurTaillePage.setRawValue("" + nouvelleTaillePage);
489
	}
512
	}
490
 
513
 
491
	@Override
514
	@Override
492
	public void rafraichir(Object nouvelleDonnees) {
515
	public void rafraichir(Object nouvelleDonnees) {
493
		// si on reçoit un tableau de int
516
		// si on reçoit un tableau de int
494
		if (nouvelleDonnees instanceof int[]) {
517
		if (nouvelleDonnees instanceof int[]) {
495
 
518
 
496
			int[] page = (int[]) nouvelleDonnees;
519
			int[] page = (int[]) nouvelleDonnees;
497
			// le premier élement est le nombre de pages totales
520
			// le premier élement est le nombre de pages totales
498
			pageTotale = page[0];
521
			pageTotale = page[0];
499
			// le second la page en cours
522
			// le second la page en cours
500
			pageCourante = page[1];
523
			pageCourante = page[1];
501
			// le troisième la taille de la page
524
			// le troisième la taille de la page
502
			taillePage = page[2];
525
			taillePage = page[2];
503
			// et le dernier le nombre total d'éléments
526
			// et le dernier le nombre total d'éléments
504
			nbElement = page[3];
527
			nbElement = page[3];
505
			
528
			
506
			// si la page courante dépasse la page totale (cas normalement
529
			// si la page courante dépasse la page totale (cas normalement
507
			// improbable car géré en amont)
530
			// improbable car géré en amont)
508
			// on met le numéro de page à la page courante -1 (car la page
531
			// on met le numéro de page à la page courante -1 (car la page
509
			// courante est comptée à partir
532
			// courante est comptée à partir
510
			// de zéro)
533
			// de zéro)
511
			if (pageCourante >= pageTotale && pageCourante != 0) {
534
			if (pageCourante >= pageTotale && pageCourante != 0) {
512
				pageCourante = pageTotale - 1;
535
				pageCourante = pageTotale - 1;
513
				// le cas échéant on en notifie le médiateur
536
				// le cas échéant on en notifie le médiateur
514
				listePaginable.changerNumeroPage(pageCourante);
537
				listePaginable.changerNumeroPage(pageCourante);
515
			}
538
			}
516
		}
539
		}
517
 
540
 
518
		// enfin on rafraichit les informations affichées à partir des nouvelles
541
		// enfin on rafraichit les informations affichées à partir des nouvelles
519
		// variables de classes mises à jour
542
		// variables de classes mises à jour
520
		rafraichirNumeroPage();
543
		rafraichirNumeroPage();
521
		
544
		
522
		layout();
545
		layout();
523
	}
546
	}
524
 
547
 
525
}
548
}