Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1633 Rev 1683
Line 26... Line 26...
26
import com.extjs.gxt.ui.client.widget.Text;
26
import com.extjs.gxt.ui.client.widget.Text;
27
import com.extjs.gxt.ui.client.widget.button.Button;
27
import com.extjs.gxt.ui.client.widget.button.Button;
28
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
28
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
29
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
29
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
30
import com.extjs.gxt.ui.client.widget.form.SimpleComboValue;
30
import com.extjs.gxt.ui.client.widget.form.SimpleComboValue;
31
import com.extjs.gxt.ui.client.widget.form.TextField;
31
import com.extjs.gxt.ui.client.widget.form.NumberField;
32
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
32
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
33
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
33
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
34
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
34
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
35
import com.google.gwt.event.dom.client.KeyCodes;
35
import com.google.gwt.event.dom.client.KeyCodes;
36
import com.google.gwt.i18n.client.Dictionary;
36
import com.google.gwt.i18n.client.Dictionary;
37
import com.google.gwt.user.client.Window;
37
import com.google.gwt.user.client.Window;
Line 38... Line 38...
38
 
38
 
Line 39... Line 39...
39
public class BarrePaginationVue extends ToolBar implements Rafraichissable {
39
public class BarrePaginationVue extends ToolBar implements Rafraichissable {
40
 
40
 
41
	private Mediateur mediateur = null;
41
		private Mediateur mediateur = null;
42
	private Constantes i18nC = null;
42
		private Constantes i18nC = null;
43
	private ErrorMessages i18nM = null;
43
		private ErrorMessages i18nM = null;
44
	public int valeur = 0;
44
		public int valeur = 0;
45
	
45
	
46
	private ListePaginable listePaginable = null;
46
		private ListePaginable listePaginable = null;
47
	private Button prevPage, suivPage, premierePage, dernierePage, rafraichir;
47
		private Button prevPage, suivPage, premierePage, dernierePage, rafraichir;
48
	
48
	
49
	private int pageCourante, nbElement = 0;
49
		private int pageCourante, nbElement = 0;
50
	private int taillePage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
50
		private int taillePage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
51
	private int pageTotale = 1;
51
		private int pageTotale = 1;
52
	private Text page, surTotalPage, afficherNbElem, nbElemParPage, intervalleElements;
52
		private Text page, surTotalPage, afficherNbElem, nbElemParPage, intervalleElements;
53
	
53
	
54
	private TextField<String> champPage = new TextField<String>();
54
		private NumberField champPage = new NumberField();
55
	private SimpleComboBox<Integer> selecteurTaillePage = new SimpleComboBox<Integer>();
55
		private SimpleComboBox<Integer> selecteurTaillePage = new SimpleComboBox<Integer>();
56
	
56
	
57
	private LinkedList<Integer> intervallePages = new LinkedList<Integer>();
-
 
58
	private ListStore storeIntervalle = new ListStore() ;
-
 
59
		
-
 
60
	private String labelElement;
-
 
61
	private int taillePageDefaut = 50;
-
 
62
	
-
 
63
	public ListePaginable getlistePaginable() {
-
 
64
		return listePaginable;
-
 
65
	}
-
 
66
	
-
 
67
	public void setlistePaginable(ListePaginable listePaginable) {
-
 
68
		this.listePaginable = listePaginable;
-
 
69
	}
-
 
70
	
-
 
71
	/***************************************************************************
-
 
72
	 * constructeur sans argument (privé car ne doit pas être utilisé)
-
 
73
	 */
-
 
74
	@SuppressWarnings("unused")
-
 
75
	private BarrePaginationVue() {
-
 
76
		super();
-
 
77
	}
-
 
78
 
-
 
79
	/**
-
 
80
	 * constructeur avec paramètres
-
 
81
	 * 
-
 
82
	 * @param im
-
 
83
	 *            le médiateur à associer à la barre
-
 
84
	 */
-
 
85
	public BarrePaginationVue(ListePaginable listePaginableCourante, Mediateur mediateurCourant) {
-
 
86
		super();
-
 
87
		
-
 
88
		listePaginable = listePaginableCourante;		
-
 
89
		mediateur = mediateurCourant;
-
 
90
		i18nC = Mediateur.i18nC;
-
 
91
		i18nM = Mediateur.i18nM;
-
 
92
		
-
 
93
		intervallePages.add(10);
-
 
94
		intervallePages.add(20);
-
 
95
		intervallePages.add(50);
-
 
96
		intervallePages.add(100);
-
 
97
		intervallePages.add(200);
-
 
98
		
-
 
99
		premierePage = new Button();
-
 
100
		premierePage.setIcon(Images.ICONES.resultsetFirst());
-
 
101
		add(premierePage);
-
 
102
		
-
 
103
		prevPage = new Button();
-
 
104
		prevPage.setIcon(Images.ICONES.resultsetPrevious());
-
 
105
		add(prevPage);
-
 
106
		
-
 
107
		add(new SeparatorToolItem());		
-
 
108
		
-
 
109
		page = new Text(i18nC.page());
-
 
110
		page.setStyleAttribute("padding", "0 5px 0 5px");
-
 
111
		add(page);
-
 
112
		
-
 
113
		champPage.setValue(String.valueOf(pageCourante+1));
-
 
114
		champPage.setStyleAttribute("text-align","right");
-
 
115
		champPage.setWidth(30);
-
 
116
		add(champPage);
-
 
117
		
-
 
118
		surTotalPage = new Text(i18nC.sur() + " " + pageTotale);
-
 
119
		surTotalPage.setStyleAttribute("padding-left", "5px");
-
 
120
		add(surTotalPage);
-
 
121
		
-
 
122
		//Séparation
-
 
123
		add(new SeparatorToolItem());
-
 
124
		
-
 
125
		suivPage = new Button();
-
 
126
		suivPage.setIcon(Images.ICONES.resultsetNext());
-
 
127
		add(suivPage);
-
 
128
		
-
 
129
		dernierePage = new Button();
-
 
130
		dernierePage.setIcon(Images.ICONES.resultsetLast());
-
 
131
		add(dernierePage);
-
 
132
 
-
 
133
		//Séparation
-
 
134
		add(new SeparatorToolItem());
-
 
135
		
-
 
136
		rafraichir = new Button();
-
 
137
		rafraichir.setIcon(Images.ICONES.rafraichir());
-
 
138
		add(rafraichir);
-
 
139
		
-
 
140
		//Séparation
-
 
141
		add(new SeparatorToolItem());
-
 
142
		
-
 
143
		afficherNbElem = new Text(i18nC.afficher());
-
 
144
		afficherNbElem.setStyleAttribute("padding", "0 5px 0 5px");
-
 
145
		add(afficherNbElem);
-
 
146
 
-
 
147
		// Attention l'appel à setTriggerAction avec ALL est indispensable
-
 
148
		// pour éviter un bug lors de la selection de la taille de page par défaut
-
 
149
		selecteurTaillePage.setTriggerAction(TriggerAction.ALL);
-
 
150
		selecteurTaillePage.setLazyRender(false);
-
 
151
		selecteurTaillePage.setWidth("40px");
-
 
152
		setIntervallesPages();
-
 
153
		add(selecteurTaillePage);
-
 
154
		
-
 
155
		labelElement = i18nC.elements();
-
 
156
		
-
 
157
		nbElemParPage = new Text(labelElement+" "+i18nC.parPage());
-
 
Line 158... Line -...
158
		nbElemParPage.setStyleAttribute("padding-left", "5px");
-
 
159
		add(nbElemParPage);
-
 
160
		
-
 
161
		//Séparation
-
 
162
		add(new SeparatorToolItem());
-
 
163
				
57
		private LinkedList<Integer> intervallePages = new LinkedList<Integer>();
164
		intervalleElements = new Text(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 
-
 
165
			pageCourante * taillePage, (pageCourante + 1) * taillePage, nbElement));
-
 
166
		add(intervalleElements);
-
 
167
		
-
 
168
		// on ajoute les différents listeners
-
 
169
		ajouterListeners();	
-
 
170
	}
-
 
171
	
-
 
172
	/**
-
 
173
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
-
 
174
	 * 	@param label
-
 
175
	 */
-
 
176
	public void setLabelElement(String label) {
-
 
177
		this.labelElement = label;
-
 
178
		nbElemParPage.setText(labelElement + " par page ");
-
 
179
		intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 
-
 
180
			pageCourante * taillePage, (pageCourante + 1) * taillePage, nbElement));
-
 
181
	}
58
		private ListStore storeIntervalle = new ListStore() ;
182
 
-
 
183
	public void setTaillePageParDefaut(int taille) {
-
 
184
		this.taillePageDefaut = taille;
59
		
185
		selecteurTaillePage.setRawValue(""+taillePageDefaut);
60
		private String labelElement;
186
	}
-
 
187
	
61
		private int taillePageDefaut = 50;
188
	public void setIntervallesPages() {
62
	
189
		if (!intervallePages.contains(taillePage))	{
63
		public ListePaginable getlistePaginable() {
190
			intervallePages.add(taillePage);
64
				return listePaginable;
191
		}
-
 
192
		
65
		}
193
		Iterator<Integer> itIntervallePages = intervallePages.iterator();
-
 
194
		while (itIntervallePages.hasNext())	{
66
	
195
			Integer intervalle = itIntervallePages.next();
-
 
196
			selecteurTaillePage.add(intervalle);
-
 
197
		}
-
 
198
 
-
 
199
		selecteurTaillePage.setSimpleValue(taillePage);
-
 
200
	}
-
 
201
	
-
 
202
	/**
-
 
203
	 * Change l'état de la barre de pagination a actif ou inactif
-
 
204
	 * @param etat actif ou inactif
-
 
205
	 */
-
 
206
	private void changerEtatBarre(boolean etat)	{
-
 
207
		premierePage.setEnabled(etat);
-
 
208
		prevPage.setEnabled(etat);
-
 
209
		suivPage.setEnabled(etat);
-
 
210
		dernierePage.setEnabled(etat);
-
 
211
		champPage.setEnabled(etat);
-
 
212
		selecteurTaillePage.setEnabled(etat);
-
 
213
		page.setEnabled(etat);
-
 
214
		surTotalPage.setEnabled(etat);
-
 
215
		afficherNbElem.setEnabled(etat);
67
		public void setlistePaginable(ListePaginable listePaginable) {
216
		nbElemParPage.setEnabled(etat);
-
 
217
	}
68
				this.listePaginable = listePaginable;
218
	
69
		}
219
	/**
70
	
220
	 * ajoute les différents listeners nécessaires au bon fonctionnement des
71
		/***************************************************************************
221
	 * éléments de la barre de pagination
72
		 * constructeur sans argument (privé car ne doit pas être utilisé)
222
	 */
-
 
223
	@SuppressWarnings("unchecked")
-
 
224
	private void ajouterListeners() {
73
		 */
225
		premierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
226
			public void componentSelected(ButtonEvent ce)	{
-
 
227
				pageCourante = 0;
74
		@SuppressWarnings("unused")
228
				rafraichirNumeroPage();
-
 
229
				listePaginable.changerNumeroPage(pageCourante);
-
 
230
			}
-
 
231
		});
-
 
232
		
-
 
233
		// boutons suivants et précédents
-
 
234
		prevPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
235
			public void componentSelected(ButtonEvent ce) {
-
 
236
				// si la page courante n'est pas la première
-
 
237
				if (pageCourante > 0) {
-
 
238
					// on décrémente la page courante de 1
-
 
239
					pageCourante--;
-
 
240
					// on rafraichit l'affichage
-
 
Line 241... Line 75...
241
					rafraichirNumeroPage();
75
		private BarrePaginationVue() {
-
 
76
				super();
-
 
77
		}
-
 
78
 
-
 
79
		/**
-
 
80
		 * constructeur avec paramètres
-
 
81
		 * 
-
 
82
		 * @param im
-
 
83
		 *            le médiateur à associer à la barre
-
 
84
		 */
-
 
85
		public BarrePaginationVue(ListePaginable listePaginableCourante, Mediateur mediateurCourant) {
-
 
86
				super();
-
 
87
		
-
 
88
				listePaginable = listePaginableCourante;		
-
 
89
				mediateur = mediateurCourant;
-
 
90
				i18nC = Mediateur.i18nC;
-
 
91
				i18nM = Mediateur.i18nM;
-
 
92
		
-
 
93
				intervallePages.add(10);
-
 
94
				intervallePages.add(20);
-
 
95
				intervallePages.add(50);
-
 
96
				intervallePages.add(100);
-
 
97
				intervallePages.add(200);
-
 
98
		
-
 
99
				premierePage = new Button();
-
 
100
				premierePage.setIcon(Images.ICONES.resultsetFirst());
-
 
101
				add(premierePage);
-
 
102
		
-
 
103
				prevPage = new Button();
-
 
104
				prevPage.setIcon(Images.ICONES.resultsetPrevious());
-
 
105
				add(prevPage);
-
 
106
		
-
 
107
				add(new SeparatorToolItem());		
-
 
108
		
-
 
109
				page = new Text(i18nC.page());
-
 
110
				page.setStyleAttribute("padding", "0 5px 0 5px");
-
 
111
				add(page);
-
 
112
		
-
 
113
				champPage.setValue(pageCourante+1);
-
 
114
				champPage.setAllowDecimals(false);
-
 
115
				champPage.setAllowNegative(false);
-
 
116
				champPage.setStyleAttribute("text-align","right");
-
 
117
				champPage.setWidth(30);
-
 
118
				add(champPage);
-
 
119
		
-
 
120
				surTotalPage = new Text(i18nC.sur() + " " + pageTotale);
-
 
121
				surTotalPage.setStyleAttribute("padding-left", "5px");
-
 
122
				add(surTotalPage);
-
 
123
		
-
 
124
				//Séparation
-
 
125
				add(new SeparatorToolItem());
-
 
126
		
-
 
127
				suivPage = new Button();
-
 
128
				suivPage.setIcon(Images.ICONES.resultsetNext());
-
 
129
				add(suivPage);
-
 
130
		
-
 
131
				dernierePage = new Button();
-
 
132
				dernierePage.setIcon(Images.ICONES.resultsetLast());
-
 
133
				add(dernierePage);
-
 
134
 
-
 
135
				//Séparation
-
 
136
				add(new SeparatorToolItem());
-
 
137
		
-
 
138
				rafraichir = new Button();
-
 
139
				rafraichir.setIcon(Images.ICONES.rafraichir());
-
 
140
				add(rafraichir);
-
 
141
		
-
 
142
				//Séparation
-
 
143
				add(new SeparatorToolItem());
-
 
144
		
-
 
145
				afficherNbElem = new Text(i18nC.afficher());
-
 
146
				afficherNbElem.setStyleAttribute("padding", "0 5px 0 5px");
-
 
147
				add(afficherNbElem);
-
 
148
 
-
 
149
				// Attention l'appel à setTriggerAction avec ALL est indispensable
-
 
150
				// pour éviter un bug lors de la selection de la taille de page par défaut
-
 
151
				selecteurTaillePage.setTriggerAction(TriggerAction.ALL);
-
 
152
				selecteurTaillePage.setLazyRender(false);
-
 
153
				selecteurTaillePage.setWidth("40px");
-
 
154
				setIntervallesPages();
-
 
155
				add(selecteurTaillePage);
-
 
156
		
-
 
157
				labelElement = i18nC.elements();
-
 
158
		
-
 
159
				nbElemParPage = new Text(labelElement+" "+i18nC.parPage());
-
 
160
				nbElemParPage.setStyleAttribute("padding-left", "5px");
-
 
161
				add(nbElemParPage);
-
 
162
		
-
 
163
				//Séparation
-
 
164
				add(new SeparatorToolItem());
-
 
165
				
-
 
166
				intervalleElements = new Text(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 
-
 
167
																	 pageCourante * taillePage, (pageCourante + 1) * taillePage, nbElement));
242
					// et on notifie le médiateur de l'évenement
168
				add(intervalleElements);
-
 
169
		
-
 
170
				// on ajoute les différents listeners
-
 
171
				ajouterListeners();	
-
 
172
		}
-
 
173
	
-
 
174
		/**
-
 
175
		 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
-
 
176
		 * 	@param label
-
 
177
		 */
-
 
178
		public void setLabelElement(String label) {
243
					listePaginable.changerNumeroPage(pageCourante);
179
				this.labelElement = label;
Line 244... Line -...
244
 
-
 
245
				}
180
				nbElemParPage.setText(labelElement + " par page ");
246
			}
181
				intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 
247
		});
-
 
248
 
182
																  pageCourante * taillePage, (pageCourante + 1) * taillePage, nbElement));
249
		suivPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
183
		}
250
			public void componentSelected(ButtonEvent ce)	{
-
 
-
 
184
 
251
				// si la page courante n'est pas la dernière
185
		public void setTaillePageParDefaut(int taille) {
252
				if (pageCourante < pageTotale - 1) {
186
				this.taillePageDefaut = taille;
253
					// on incrémente la page courante de 1
187
				selecteurTaillePage.setRawValue(""+taillePageDefaut);
254
					pageCourante++;
188
		}
255
					// on rafraichit l'affichage
-
 
256
					rafraichirNumeroPage();
-
 
257
					// et on notifie le médiateur de l'évenement
-
 
258
					listePaginable.changerNumeroPage(pageCourante);
-
 
259
				}
-
 
260
			}
-
 
261
		});
-
 
262
		
-
 
263
		dernierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
264
			public void componentSelected(ButtonEvent ce)	{
-
 
265
				pageCourante = pageTotale;
-
 
266
				rafraichirNumeroPage();
-
 
267
				listePaginable.changerNumeroPage(pageCourante);
-
 
268
			}
-
 
269
		});
-
 
270
		
-
 
Line 271... Line -...
271
		rafraichir.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
272
			public void componentSelected(ButtonEvent ce)	{
-
 
273
				listePaginable.changerNumeroPage(pageCourante);
-
 
274
			}
-
 
275
		});
-
 
276
		
-
 
277
		champPage.addKeyListener(new KeyListener() {
-
 
278
			
-
 
279
			public void componentKeyUp(ComponentEvent ce) 	{
189
	
280
				// on teste si la touche entrée a été pressée
-
 
281
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
-
 
282
					int nouvellePage = pageCourante;
-
 
283
					// on teste avec parseInt si la valeur entrée est un entier
-
 
284
					try {
-
 
285
						nouvellePage = Integer.parseInt(champPage.getRawValue());
-
 
286
					} catch (NumberFormatException nfe) {
-
 
287
						// si ce n'est pas le cas alors on remet le numéro de page correct
-
 
288
						rafraichirNumeroPage();
-
 
289
						champPage.focus();
-
 
290
						return;
-
 
291
					}
-
 
292
 
190
		public void setIntervallesPages() {
293
					// si la conversion reussit on verifie s'il est nécessaire
-
 
294
					// de changer de page
-
 
295
					// et si la nouvelle est comprise dans l'intervalle des
191
				if (!intervallePages.contains(taillePage))	{
296
					// pages existantes (0..pageTotale)
192
						intervallePages.add(taillePage);
297
					if (nouvellePage != pageCourante + 1 && nouvellePage > 0
-
 
298
							&& nouvellePage <= pageTotale) {
-
 
299
						// le cas échéant, on charge la nouvelle page et on
-
 
300
						// notifie le médiateur
-
 
301
						changerPageCourante(nouvellePage - 1);
-
 
302
						listePaginable.changerNumeroPage(pageCourante);
193
				}
-
 
194
		
-
 
195
				Iterator<Integer> itIntervallePages = intervallePages.iterator();
303
					} else {
196
				while (itIntervallePages.hasNext())	{
-
 
197
						Integer intervalle = itIntervallePages.next();
-
 
198
						selecteurTaillePage.add(intervalle);
-
 
199
				}
-
 
200
 
-
 
201
				selecteurTaillePage.setSimpleValue(taillePage);
-
 
202
		}
-
 
203
	
-
 
204
		/**
-
 
205
		 * Change l'état de la barre de pagination a actif ou inactif
-
 
206
		 * @param etat actif ou inactif
-
 
207
		 */
-
 
208
		private void changerEtatBarre(boolean etat) {
-
 
209
				premierePage.setEnabled(etat);
-
 
210
				prevPage.setEnabled(etat);
-
 
211
				suivPage.setEnabled(etat);
-
 
212
				dernierePage.setEnabled(etat);
-
 
213
				champPage.setEnabled(etat);
-
 
214
				selecteurTaillePage.setEnabled(etat);
-
 
215
				page.setEnabled(etat);
-
 
216
				surTotalPage.setEnabled(etat);
-
 
217
				afficherNbElem.setEnabled(etat);
-
 
218
				nbElemParPage.setEnabled(etat);
-
 
219
		}
-
 
220
	
-
 
221
		/**
-
 
222
		 * ajoute les différents listeners nécessaires au bon fonctionnement des
-
 
223
		 * éléments de la barre de pagination
-
 
224
		 */
-
 
225
		@SuppressWarnings("unchecked")
-
 
226
		private void ajouterListeners() {
-
 
227
				premierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
228
								public void componentSelected(ButtonEvent ce)	{
-
 
229
										pageCourante = 0;
-
 
230
										rafraichirNumeroPage();
-
 
231
										listePaginable.changerNumeroPage(pageCourante);
-
 
232
								}
-
 
233
						});
-
 
234
		
-
 
235
				// boutons suivants et précédents
-
 
236
				prevPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
237
								public void componentSelected(ButtonEvent ce) {
-
 
238
										// si la page courante n'est pas la première
-
 
239
										if (pageCourante > 0) {
-
 
240
												// on décrémente la page courante de 1
-
 
241
												pageCourante--;
-
 
242
												// on rafraichit l'affichage
-
 
243
												rafraichirNumeroPage();
-
 
244
												// et on notifie le médiateur de l'évenement
-
 
245
												listePaginable.changerNumeroPage(pageCourante);
-
 
246
 
-
 
247
										}
-
 
248
								}
-
 
249
						});
-
 
250
 
-
 
251
				suivPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
252
								public void componentSelected(ButtonEvent ce)	{
-
 
253
										// si la page courante n'est pas la dernière
-
 
254
										if (pageCourante < pageTotale - 1) {
-
 
255
												// on incrémente la page courante de 1
-
 
256
												pageCourante++;
-
 
257
												// on rafraichit l'affichage
-
 
258
												rafraichirNumeroPage();
-
 
259
												// et on notifie le médiateur de l'évenement
-
 
260
												listePaginable.changerNumeroPage(pageCourante);
-
 
261
										}
-
 
262
								}
-
 
263
						});
-
 
264
		
-
 
265
				dernierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
266
								public void componentSelected(ButtonEvent ce)	{
-
 
267
										pageCourante = pageTotale;
-
 
268
										rafraichirNumeroPage();
-
 
269
										listePaginable.changerNumeroPage(pageCourante);
-
 
270
								}
-
 
271
						});
304
						// sinon on reaffiche l'ancien numero de page sans rien changer
272
		
-
 
273
				rafraichir.addSelectionListener(new SelectionListener<ButtonEvent>() {
305
						rafraichirNumeroPage();
274
								public void componentSelected(ButtonEvent ce)	{
-
 
275
										listePaginable.changerNumeroPage(pageCourante);
-
 
276
								}
-
 
277
						});
-
 
278
 
-
 
279
				champPage.addKeyListener(new KeyListener() {
-
 
280
								public void componentKeyUp(ComponentEvent ce) 	{
-
 
281
										// on teste si la touche entrée a été pressée
-
 
282
										if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
-
 
283
												int nouvellePage = champPage.getValue().intValue();
-
 
284
 
-
 
285
												// on verifie s'il est nécessaire de changer de page
-
 
286
												// et si la nouvelle est comprise dans l'intervalle des
-
 
287
												// pages existantes (0..pageTotale)
-
 
288
												if (nouvellePage != pageCourante + 1 && nouvellePage > 0
-
 
289
													&& nouvellePage <= pageTotale) {
-
 
290
														// le cas échéant, on charge la nouvelle page et on
-
 
291
														// notifie le médiateur
-
 
292
														changerPageCourante(nouvellePage - 1);
-
 
293
														listePaginable.changerNumeroPage(pageCourante);
-
 
294
												} else {
-
 
295
														// sinon on reaffiche l'ancien numero de page sans rien changer
306
						champPage.focus();
296
														rafraichirNumeroPage();
-
 
297
														champPage.focus();
-
 
298
												}
-
 
299
										}
-
 
300
								}
-
 
301
						});
-
 
302
 
-
 
303
				// listener pour la selection dans la combobox
307
					}
304
				selecteurTaillePage.addSelectionChangedListener(new SelectionChangedListener() {
-
 
305
								public void selectionChanged(SelectionChangedEvent e) {
-
 
306
										SimpleComboBox comboBox = (SimpleComboBox) e.getSource();
-
 
307
										String nouvelleTaillePageString = comboBox.getRawValue();
-
 
308
										int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString);
-
 
309
										changerTaillePage(nouvelleTaillePage);
-
 
310
										rafraichirNumeroPage();			
-
 
311
								}
-
 
312
						});
-
 
313
		}
-
 
314
	
-
 
315
		/**
-
 
316
		 * Met à jour les affichage sur les numéros de pages et d'intervalle
-
 
317
		 * d'éléments à partir des variables de classes
-
 
318
		 */
-
 
319
		public void rafraichirNumeroPage() {
-
 
320
				surTotalPage.setText(" sur " + pageTotale);
-
 
321
				if (nbElement == 0) {
-
 
322
						champPage.setValue(0);
-
 
323
						// on met simplement à jour l'intervalle qui contient toujours le
-
 
324
						// même nombre d'éléments
-
 
325
						intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 0,0,0));
-
 
326
				} else {
308
				}
327
						champPage.setValue(pageCourante + 1);
-
 
328
						// si la page n'est pas la dernière
Line 309... Line 329...
309
			}
329
						if (pageCourante + 1 != pageTotale) {
310
			
330
								// sauf pour la dernière page qui contient souvent moins
311
			public void componentKeyDown(ComponentEvent ce) {
331
								// d'élements que le nombre d'élements par page
312
				
332
								intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
313
				int caractereSaisi = ce.getKeyCode();
333
																				  (pageCourante + 1) * taillePage, nbElement));
314
				boolean isInteger = (caractereSaisi >= 96 && caractereSaisi <= 105);
-
 
315
				
-
 
316
				// si le caractère n'est ni un chiffre ni 'entrée' ni 'backspace'
-
 
317
				if (!(	isInteger
334
						} else {
318
						|| 	ce.getKeyCode() == KeyCodes.KEY_ENTER
335
				
319
						|| 	ce.getKeyCode() == KeyCodes.KEY_BACKSPACE
-
 
Line 320... Line -...
320
						)) {
-
 
321
					// on remet le numero de page correct et on annule l'évenement
-
 
322
					rafraichirNumeroPage();
-
 
323
					ce.stopEvent();
-
 
324
				}
-
 
325
			}
-
 
326
		});
-
 
327
 
-
 
328
		// listener pour la selection dans la combobox
-
 
329
		selecteurTaillePage.addSelectionChangedListener(new SelectionChangedListener() {
-
 
330
			public void selectionChanged(SelectionChangedEvent e) {
-
 
331
				SimpleComboBox comboBox = (SimpleComboBox) e.getSource();
-
 
332
				String nouvelleTaillePageString = comboBox.getRawValue();
-
 
333
				int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString);
-
 
334
				changerTaillePage(nouvelleTaillePage);
-
 
335
				rafraichirNumeroPage();			
-
 
336
			}
-
 
337
		});
-
 
338
	}
-
 
339
	
-
 
340
	/**
-
 
341
	 * Met à jour les affichage sur les numéros de pages et d'intervalle
-
 
342
	 * d'éléments à partir des variables de classes
-
 
343
	 */
-
 
344
	public void rafraichirNumeroPage() {
-
 
345
		surTotalPage.setText(" sur " + pageTotale);
-
 
346
		if (nbElement == 0) {
-
 
347
			champPage.setValue("" + (0));
-
 
348
			// on met simplement à jour l'intervalle qui contient toujours le
-
 
349
			// même nombre d'éléments
-
 
350
			intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 0,0,0));
-
 
351
		} else {
-
 
352
			champPage.setValue("" + (pageCourante + 1));
-
 
353
			// si la page n'est pas la dernière
-
 
354
			if (pageCourante + 1 != pageTotale) {
-
 
355
				// sauf pour la dernière page qui contient souvent moins
-
 
356
				// d'élements que le nombre d'élements par page
-
 
357
				intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
-
 
358
						(pageCourante + 1) * taillePage, nbElement));
-
 
359
			} else {
-
 
360
				
-
 
361
				// on met simplement à jour l'intervalle qui contient toujours
336
								// on met simplement à jour l'intervalle qui contient toujours
362
				// le même nombre d'éléments
337
								// le même nombre d'éléments
363
				intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
338
								intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
364
						nbElement, nbElement));
339
																				  nbElement, nbElement));
365
			}
340
						}
366
		}
341
				}
367
	}
342
		}
368
 
343
 
369
	/**
344
		/**
370
	 * Met à jour la page en cours
345
		 * Met à jour la page en cours
371
	 * 
346
		 * 
372
	 * @param nouvellePageCourante
347
		 * @param nouvellePageCourante
373
	 *            la nouvelle page en cours
348
		 *            la nouvelle page en cours
374
	 */
349
		 */
375
	public void changerPageCourante(int nouvellePageCourante) {
350
		public void changerPageCourante(int nouvellePageCourante) {
376
		pageCourante = nouvellePageCourante;
351
				pageCourante = nouvellePageCourante;
377
	}
352
		}
378
 
353
 
379
	/**
354
		/**
380
	 * Envoie au médiateur une demande pour modifier la taille de la page (qui
355
		 * Envoie au médiateur une demande pour modifier la taille de la page (qui
381
	 * va à son tour faire les modifications nécessaires)
356
		 * va à son tour faire les modifications nécessaires)
382
	 * 
357
		 * 
383
	 * @param nouvelleTaillePage
358
		 * @param nouvelleTaillePage
384
	 *            la nouvelle taille de page (élement appartenant au tableau
359
		 *            la nouvelle taille de page (élement appartenant au tableau
385
	 *            renvoyé par getNbPages())
360
		 *            renvoyé par getNbPages())
386
	 */
361
		 */
387
	public void changerTaillePage(int nouvelleTaillePage) {
362
		public void changerTaillePage(int nouvelleTaillePage) {
388
		if (nouvelleTaillePage != taillePage)	{
363
				if (nouvelleTaillePage != taillePage)	{
389
			listePaginable.changerTaillePage(nouvelleTaillePage);
364
						listePaginable.changerTaillePage(nouvelleTaillePage);
390
		}
365
				}
391
	}
366
		}
392
 
367
 
393
	/**
368
		/**
394
	 * Selectionne la valeur correspond à celle passée en paramètre dans la
369
		 * Selectionne la valeur correspond à celle passée en paramètre dans la
395
	 * combobox (si elle existe)
370
		 * combobox (si elle existe)
396
	 * 
371
		 * 
397
	 * @param nouvelleTaillePage
372
		 * @param nouvelleTaillePage
398
	 *            la nouvelle taille de page
373
		 *            la nouvelle taille de page
399
	 */
374
		 */
400
	public void selectionnerTaillePage(int nouvelleTaillePage) {
375
		public void selectionnerTaillePage(int nouvelleTaillePage) {
401
		selecteurTaillePage.setRawValue("" + nouvelleTaillePage);
376
				selecteurTaillePage.setRawValue("" + nouvelleTaillePage);
402
	}
377
		}
403
 
378
 
404
	public void rafraichir(Object nouvelleDonnees) {
379
		public void rafraichir(Object nouvelleDonnees) {
405
		// si on reçoit un tableau de int
380
				// si on reçoit un tableau de int
406
		if (nouvelleDonnees instanceof int[]) {
381
				if (nouvelleDonnees instanceof int[]) {
407
			int[] page = (int[]) nouvelleDonnees;
382
						int[] page = (int[]) nouvelleDonnees;
Line 408... Line -...
408
			// le premier élement est le nombre de pages totales
-
 
409
			pageTotale = page[0];
-
 
410
			// le second la page en cours
-
 
411
			pageCourante = page[1];
-
 
412
			// le troisième la taille de la page
-
 
413
			taillePage = page[2];
-
 
414
			// et le dernier le nombre total d'éléments
-
 
415
			nbElement = page[3];
-
 
416
			
-
 
417
			// si la page courante dépasse la page totale (cas normalement
-
 
418
			// improbable car géré en amont)
-
 
419
			// on met le numéro de page à la page courante -1 (car la page
-
 
420
			// courante est comptée à partir
-
 
421
			// de zéro)
-
 
422
			if (pageCourante >= pageTotale && pageCourante != 0) {
-
 
423
				pageCourante = pageTotale - 1;
-
 
424
				// le cas échéant on en notifie le médiateur
-
 
425
				listePaginable.changerNumeroPage(pageCourante);
-
 
426
			}
-
 
427
		}
383
						// le premier élement est le nombre de pages totales
-
 
384
						pageTotale = page[0];
-
 
385
						// le second la page en cours
-
 
386
						pageCourante = page[1];
-
 
387
						// le troisième la taille de la page
-
 
388
						taillePage = page[2];
-
 
389
						// et le dernier le nombre total d'éléments
-
 
390
						nbElement = page[3];
-
 
391
			
-
 
392
						// si la page courante dépasse la page totale (cas normalement
-
 
393
						// improbable car géré en amont)
-
 
394
						// on met le numéro de page à la page courante -1 (car la page
-
 
395
						// courante est comptée à partir
-
 
396
						// de zéro)
-
 
397
						if (pageCourante >= pageTotale && pageCourante != 0) {
-
 
398
								pageCourante = pageTotale - 1;
-
 
399
								// le cas échéant on en notifie le médiateur
-
 
400
								listePaginable.changerNumeroPage(pageCourante);
-
 
401
						}
-
 
402
				}