Subversion Repositories eFlore/Applications.coel

Rev

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

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