Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1060 Rev 1125
Line 2... Line 2...
2
 
2
 
3
import java.util.Iterator;
3
import java.util.Iterator;
Line 4... Line 4...
4
import java.util.LinkedList;
4
import java.util.LinkedList;
-
 
5
 
-
 
6
import org.tela_botanica.client.Mediateur;
5
 
7
import org.tela_botanica.client.i18n.Constantes;
6
import org.tela_botanica.client.Mediateur;
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;
Line 23... Line 25...
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;
-
 
Line 29... Line 30...
29
 
30
 
Line 30... Line 31...
30
public class BarrePaginationVue extends ToolBar implements Rafraichissable {
31
public class BarrePaginationVue extends ToolBar implements Rafraichissable {
-
 
32
 
-
 
33
	private Mediateur mediateur = null;
-
 
34
	private Constantes i18nC = null;
Line -... Line 35...
-
 
35
	private ErrorMessages i18nM = null;
31
 
36
	public int valeur = 0;
Line 32... Line 37...
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;
Line 44... Line 49...
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 = "";
Line 48... Line 53...
48
	
53
	
49
	LinkedList<Integer> intervallePages = new LinkedList<Integer>();
-
 
50
	
54
	private LinkedList<Integer> intervallePages = new LinkedList<Integer>();
Line 51... Line 55...
51
	ListStore storeIntervalle = new ListStore() ;
55
	private ListStore storeIntervalle = new ListStore() ;
52
		
56
		
Line 53... Line 57...
53
	private String labelElement;
57
	private String labelElement;
Line 59... Line 63...
59
	
63
	
60
	public void setlistePaginable(ListePaginable listePaginable) {
64
	public void setlistePaginable(ListePaginable listePaginable) {
61
		this.listePaginable = listePaginable;
65
		this.listePaginable = listePaginable;
Line 62... Line -...
62
	}
-
 
63
	
-
 
64
	private Mediateur mediateur;
-
 
65
	
66
	}
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
	 */
Line 76... Line 77...
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();
Line 84... Line 84...
84
		
84
		
85
		this.listePaginable = listePaginable;		
85
		listePaginable = listePaginableCourante;		
-
 
86
		mediateur = mediateurCourant;
-
 
87
		i18nC = Mediateur.i18nC;
Line 86... Line 88...
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);
Line 99... Line 101...
99
		prevPage.setIcon(Images.ICONES.resultsetPrevious());
101
		prevPage.setIcon(Images.ICONES.resultsetPrevious());
100
		add(prevPage);
102
		add(prevPage);
Line 101... Line 103...
101
		
103
		
Line 102... Line 104...
102
		add(new SeparatorToolItem());		
104
		add(new SeparatorToolItem());		
103
		
105
		
104
		page = new Text(mediateur.i18nC.page());
106
		page = new Text(i18nC.page());
Line 105... Line 107...
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));
Line 109... Line 111...
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);
Line 112... Line 114...
112
		
114
		
113
		surTotalPage = new Text(mediateur.i18nC.sur() + " " + pageTotale);
115
		surTotalPage = new Text(i18nC.sur() + " " + pageTotale);
Line 133... Line 135...
133
		add(rafraichir);
135
		add(rafraichir);
Line 134... Line 136...
134
		
136
		
135
		//Séparation
137
		//Séparation
Line 136... Line 138...
136
		add(new SeparatorToolItem());
138
		add(new SeparatorToolItem());
137
		
139
		
138
		afficherNbElem = new Text(mediateur.i18nC.afficher());
140
		afficherNbElem = new Text(i18nC.afficher());
Line 139... Line 141...
139
		afficherNbElem.setStyleAttribute("padding", "0 5px 0 5px");
141
		afficherNbElem.setStyleAttribute("padding", "0 5px 0 5px");
140
		add(afficherNbElem);
142
		add(afficherNbElem);
141
 
143
 
Line 142... Line 144...
142
		
144
		
Line 143... Line 145...
143
		selecteurTaillePage.setWidth("40px");
145
		selecteurTaillePage.setWidth("40px");
144
		setIntervallesPages();
146
		setIntervallesPages();
145
		add(selecteurTaillePage);
147
		add(selecteurTaillePage);
Line 146... Line 148...
146
		
148
		
147
		labelElement = mediateur.i18nC.elements();
149
		labelElement = i18nC.elements();
Line 166... Line 168...
166
		annulerFiltre.setVisible(false);
168
		annulerFiltre.setVisible(false);
167
		add(annulerFiltre);
169
		add(annulerFiltre);
Line 168... Line 170...
168
		
170
		
Line 169... Line 171...
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), 
Line 172... Line 174...
172
																	(pageCourante + 1) * taillePage, nbElement));
174
			pageCourante * taillePage, (pageCourante + 1) * taillePage, nbElement));
173
		add(intervalleElements);
175
		add(intervalleElements);
174
		
-
 
175
		// on ajoute les différents listeners
-
 
176
		ajouterListeners();
176
		
Line 177... Line -...
177
		
-
 
178
		
-
 
179
	}
-
 
180
	
-
 
181
	
-
 
182
	
177
		// on ajoute les différents listeners
183
	
178
		ajouterListeners();	
184
	
179
	}
185
	
180
	
186
	/**
-
 
187
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
181
	/**
188
	 * 	@param label
182
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
189
	 */
183
	 * 	@param label
190
	
184
	 */
191
	public void setLabelElement(String label) {
185
	public void setLabelElement(String label) {
192
		this.labelElement = label;
-
 
193
		nbElemParPage.setText(labelElement + " par page ");
186
		this.labelElement = label;
Line 194... Line 187...
194
		intervalleElements.setText(mediateur.i18nM.elementsAffiches(UtilString.ucFirst(labelElement), pageCourante * taillePage, 
187
		nbElemParPage.setText(labelElement + " par page ");
195
				(pageCourante + 1) * taillePage, nbElement));
188
		intervalleElements.setText(i18nM.elementsAffiches(UtilString.ucFirst(labelElement), 
196
		
189
			pageCourante * taillePage, (pageCourante + 1) * taillePage, nbElement));
197
	}
190
	}
Line 198... Line 191...
198
 
191
 
199
	public void setTaillePageParDefaut(int taille) {
-
 
200
		this.taillePageDefaut = taille;
-
 
201
		selecteurTaillePage.setRawValue(""+taillePageDefaut);
192
	public void setTaillePageParDefaut(int taille) {
202
	}
193
		this.taillePageDefaut = taille;
203
	
194
		selecteurTaillePage.setRawValue(""+taillePageDefaut);
Line 204... Line 195...
204
	public void setIntervallesPages()
195
	}
Line 238... Line 229...
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
		});
Line 252... Line 241...
252
		
241
		
253
		// boutons suivants et précédents
242
		// boutons suivants et précédents
254
		prevPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
255
			
243
		prevPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
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
Line 266... Line 254...
266
				}
254
				}
267
			}
255
			}
268
		});
256
		});
Line 269... Line 257...
269
 
257
 
270
		suivPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
271
		
258
		suivPage.addSelectionListener(new SelectionListener<ButtonEvent>() {
272
			public void componentSelected(ButtonEvent ce)	{
-
 
273
				
259
			public void componentSelected(ButtonEvent ce)	{
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++;
Line 282... Line 268...
282
				}
268
				}
283
			}
269
			}
284
		});
270
		});
Line 285... Line 271...
285
		
271
		
286
		dernierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
-
 
287
			
272
		dernierePage.addSelectionListener(new SelectionListener<ButtonEvent>() {
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
			}
Line 293... Line 278...
293
		});
278
		});
294
		
-
 
295
		rafraichir.addSelectionListener(new SelectionListener<ButtonEvent>() {
279
		
296
			
280
		rafraichir.addSelectionListener(new SelectionListener<ButtonEvent>() {
297
			public void componentSelected(ButtonEvent ce)	{
281
			public void componentSelected(ButtonEvent ce)	{
298
				listePaginable.changerNumeroPage(pageCourante);
282
				listePaginable.changerNumeroPage(pageCourante);
Line 299... Line 283...
299
			}
283
			}
300
		});
-
 
301
		
284
		});
302
		annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() {
285
		
303
			
286
		annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() {
304
			public void componentSelected(ButtonEvent ce)	{
287
			public void componentSelected(ButtonEvent ce)	{
305
				filtre.setValue("");
288
				filtre.setValue("");
Line 312... Line 295...
312
		});
295
		});
Line 313... Line 296...
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) {
-
 
317
					
299
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
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");
Line 330... Line 312...
330
				}
312
				}
331
			}
313
			}
332
		});
314
		});
Line 333... Line 315...
333
		
315
		
334
		champPage.addKeyListener(new KeyListener() {
-
 
335
 
316
		champPage.addKeyListener(new KeyListener() {
336
			public void componentKeyUp(ComponentEvent ce) 	{
-
 
337
				
317
			public void componentKeyUp(ComponentEvent ce) 	{
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
Line 359... Line 339...
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
		});
Line 381... Line 353...
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()	{
-
 
385
 
356
		champPage.addKeyListener(new KeyListener() {
386
			public void componentKeyDown(ComponentEvent ce) 	{
-
 
387
 
357
			public void componentKeyDown(ComponentEvent ce) {
388
				// si c'est un numerique
358
				// si c'est un numerique
389
				/*
359
				/*
390
				FIXME
360
				FIXME
Line 404... Line 374...
404
					// l'évenement
374
					// l'évenement
405
					rafraichirNumeroPage();
375
					rafraichirNumeroPage();
406
					ce.stopEvent();
376
					ce.stopEvent();
407
				}
377
				}
408
			}
378
			}
409
 
-
 
410
		});
379
		});
Line 411... Line 380...
411
 
380
 
412
		// listener pour la selection dans la combobox
381
		// listener pour la selection dans la combobox
413
		selecteurTaillePage.addSelectionChangedListener(
-
 
414
				
-
 
415
				new SelectionChangedListener() {
-
 
416
				
382
		selecteurTaillePage.addSelectionChangedListener(new SelectionChangedListener() {
417
					public void selectionChanged(SelectionChangedEvent e)	{
-
 
418
	
383
			public void selectionChanged(SelectionChangedEvent e) {
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);
-
 
422
						
-
 
Line -... Line 386...
-
 
386
				int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString);
-
 
387
					
423
					changerTaillePage(nouvelleTaillePage);
388
				changerTaillePage(nouvelleTaillePage);
424
					
389
				
425
					rafraichirNumeroPage();			
-
 
426
			}
390
				rafraichirNumeroPage();			
427
 
391
			}
Line 428... Line 392...
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
-
 
434
	 */
397
	 * d'éléments à partir des variables de classes
435
	public void rafraichirNumeroPage() {
398
	 */
436
		
399
	public void rafraichirNumeroPage() {
437
		if (filtreActive == true)	{
-
 
438
			intervalleElements.setText("<b><i>Recherche active : </i></b>" + termeRecherche);
400
		if (filtreActive == true) {
Line 439... Line 401...
439
		} else {
401
			intervalleElements.setText("<b><i>Recherche active : </i></b>" + termeRecherche);
440
		
402
		} else {
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
Line 446... Line 408...
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) {
Line 453... Line 415...
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
Line 506... Line 468...
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
	}
Line 514... Line 475...
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[]) {
-
 
519
 
479
		if (nouvelleDonnees instanceof int[]) {
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
Line 543... Line 503...
543
		// variables de classes mises à jour
503
		// variables de classes mises à jour
544
		rafraichirNumeroPage();
504
		rafraichirNumeroPage();
Line 545... Line 505...
545
		
505
		
546
		layout();
506
		layout();
547
	}
-
 
548
 
507
	}
549
}
508
}