Subversion Repositories eFlore/Applications.cel

Rev

Rev 2266 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2266 Rev 2611
Line 2... Line 2...
2
 
2
 
3
import org.tela_botanica.client.interfaces.ListePaginable;
3
import org.tela_botanica.client.interfaces.ListePaginable;
Line 4... Line 4...
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
5
 
5
 
6
import com.google.gwt.user.client.Window;
6
import com.google.gwt.user.client.Window;
7
import com.gwtext.client.core.EventCallback;
7
import com.gwtext.client.core.EventObject;
8
import com.gwtext.client.core.EventObject;
8
import com.gwtext.client.core.Template;
9
import com.gwtext.client.core.Template;
9
import com.gwtext.client.data.Record;
10
import com.gwtext.client.data.Record;
Line 13... Line 14...
13
import com.gwtext.client.widgets.Toolbar;
14
import com.gwtext.client.widgets.Toolbar;
14
import com.gwtext.client.widgets.ToolbarButton;
15
import com.gwtext.client.widgets.ToolbarButton;
15
import com.gwtext.client.widgets.ToolbarTextItem;
16
import com.gwtext.client.widgets.ToolbarTextItem;
16
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
17
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
17
import com.gwtext.client.widgets.form.ComboBox;
18
import com.gwtext.client.widgets.form.ComboBox;
-
 
19
import com.gwtext.client.widgets.form.Field;
-
 
20
import com.gwtext.client.widgets.form.TextField;
18
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
21
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
-
 
22
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter;
Line 19... Line 23...
19
 
23
 
Line 20... Line 24...
20
public class MiniBarrePaginationVue extends Toolbar implements Rafraichissable {
24
public class MiniBarrePaginationVue extends Toolbar implements Rafraichissable {
21
 
25
 
Line 30... Line 34...
30
	private ToolbarButton prevPage = new ToolbarButton();
34
	private ToolbarButton prevPage = new ToolbarButton();
31
	/**
35
	/**
32
	 * Bouton suivant
36
	 * Bouton suivant
33
	 */
37
	 */
34
	private ToolbarButton suivPage = new ToolbarButton();
38
	private ToolbarButton suivPage = new ToolbarButton();
-
 
39
	
35
	/**
40
	/**
36
	 * Numéro de la page courante (attention, commence à zéro pour des raisons
41
	 * Numéro de la page courante (attention, commence à zéro pour des raisons
37
	 * pratiques)
42
	 * pratiques)
38
	 */
43
	 */
39
	private int pageCourante = 0;
44
	private int pageCourante = 0;
Line 51... Line 56...
51
	private int taillePage = 0;
56
	private int taillePage = 0;
52
	/**
57
	/**
53
	 * Texte statique de la toolbar 2
58
	 * Texte statique de la toolbar 2
54
	 */
59
	 */
55
	private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ");
60
	private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ");
-
 
61
	
-
 
62
	/**
-
 
63
	 * Affichage de la page courante
-
 
64
	 */
-
 
65
	private TextField champPage = new TextField("" + (pageCourante + 1));
-
 
66
	
-
 
67
	private ToolbarTextItem surPageTotale = new ToolbarTextItem("/ ");
-
 
68
	
56
	/**
69
	/**
57
	 * Combobox permettant de selectionner le nombre d'élements à afficher par
70
	 * Combobox permettant de selectionner le nombre d'élements à afficher par
58
	 * page et donc de changer la variable taillePage
71
	 * page et donc de changer la variable taillePage
59
	 */
72
	 */
60
	private ComboBox selecteurTaillePage = new ComboBox();
73
	private ComboBox selecteurTaillePage = new ComboBox();
Line 61... Line 74...
61
	
74
	
62
	/**
75
	/**
63
	 * Les différents intervalles de page possibles (intialisé par défaut)
76
	 * Les différents intervalles de page possibles (intialisé par défaut)
64
	 */
77
	 */
Line 65... Line 78...
65
	String[] pages = { "200","100","50", "20", "10" };
78
	String[] pages = {"200","100","50", "20", "10"};
Line 66... Line 79...
66
	
79
	
67
	Store storeIntervalle = null ;
80
	Store storeIntervalle = null ;
68
	
81
	
69
	
82
	
70
 
-
 
71
	/**
83
 
Line 72... Line 84...
72
	 * Label indiquant le type d'element affiché
84
	/**
73
	 *  
85
	 * Label indiquant le type d'element affiché
74
	 */	
86
	 *  
75
 
87
	 */	
76
	private String labelElement="Elements";
-
 
77
 
88
	private String labelElement="Obs";
Line 78... Line 89...
78
	/**
89
 
79
	 * taille de la page par defaut
90
	/**
80
	 *  
91
	 * taille de la page par defaut
81
	 */	
92
	 *  
82
 
-
 
Line 83... Line 93...
83
	private int taillePageDefaut = 50;
93
	 */	
84
 
94
	private int taillePageDefaut = 50;
85
	
95
 
86
	/**
-
 
87
	 * Texte statique de la toolbar 3
96
	
88
	 */
97
	/**
89
	private ToolbarTextItem nbElemParPage = new ToolbarTextItem(
98
	 * Texte statique de la toolbar 3
Line 90... Line 99...
90
			labelElement + " par page ");
99
	 */
Line 117... Line 126...
117
		listePaginable = lst;
126
		listePaginable = lst;
Line 118... Line 127...
118
		
127
		
119
		// on dispose un peu de texte et quelques espaces pour séparer les
128
		// on dispose un peu de texte et quelques espaces pour séparer les
120
		// éléments
129
		// éléments
121
		addButton(prevPage);
130
		addButton(prevPage);
-
 
131
		addField(champPage);
122
		addSpacer();
132
		addItem(surPageTotale);
Line 123... Line 133...
123
		addButton(suivPage);
133
		addButton(suivPage);
124
 
134
 
Line 140... Line 150...
140
		selecteurTaillePage.setStore(storeIntervalle);
150
		selecteurTaillePage.setStore(storeIntervalle);
141
		selecteurTaillePage.setEditable(false);
151
		selecteurTaillePage.setEditable(false);
142
		addField(selecteurTaillePage);
152
		addField(selecteurTaillePage);
143
		selecteurTaillePage.setValue(""+taillePageDefaut);
153
		selecteurTaillePage.setValue(""+taillePageDefaut);
144
		selecteurTaillePage.setWidth(50);
154
		selecteurTaillePage.setWidth(50);
-
 
155
		champPage.setWidth(20);
Line 145... Line 156...
145
		
156
		
Line 146... Line 157...
146
		addItem(nbElemParPage);
157
		addItem(nbElemParPage);
147
 
158
 
Line 152... Line 163...
152
	
163
	
153
	/**
164
	/**
154
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
165
	 *  Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
155
	 * 	@param label
166
	 * 	@param label
156
	 */
-
 
157
	
167
	 */
158
	public void setLabelElement(String label) {
168
	public void setLabelElement(String label) {
159
		this.labelElement = label;
169
		this.labelElement = label;
160
		nbElemParPage.setText(labelElement + " par page ");
170
		nbElemParPage.setText(labelElement + " par page ");
Line 240... Line 250...
240
				// et on met la valeur à jour dans la combobox
250
				// et on met la valeur à jour dans la combobox
241
				comboBox.setValue(nouvelleTaillePageString);
251
				comboBox.setValue(nouvelleTaillePageString);
242
			}
252
			}
Line 243... Line 253...
243
 
253
 
-
 
254
		});
-
 
255
		
-
 
256
		champPage.addListener(new TextFieldListenerAdapter() {
-
 
257
 
-
 
258
			@Override
-
 
259
			public void onSpecialKey(Field field, EventObject e) {
-
 
260
 
-
 
261
				// on teste si la touche entrée a été pressée
-
 
262
				if (e.getKey() == EventObject.ENTER) {
-
 
263
					int nouvellePage = pageCourante;
-
 
264
					// on teste avec parseInt si la valeur entrée est un entier
-
 
265
					try {
-
 
266
						nouvellePage = Integer
-
 
267
								.parseInt(champPage.getRawValue());
-
 
268
					}
-
 
269
					// si ce n'est pas le cas alors on remet le numéro de page
-
 
270
					// correct
-
 
271
					catch (NumberFormatException nfe) {
-
 
272
						rafraichirNumeroPage();
-
 
273
						champPage.focus(true);
-
 
274
						return;
-
 
275
					}
-
 
276
 
-
 
277
					// si la conversion reussit on verifie s'il est nécessaire
-
 
278
					// de changer de page
-
 
279
					// et si la nouvelle est comprise dans l'intervalle des
-
 
280
					// pages existantes (0..pageTotale)
-
 
281
					if (nouvellePage != pageCourante + 1 && nouvellePage > 0
-
 
282
							&& nouvellePage <= pageTotale) {
-
 
283
						// le cas échéant, on charge la nouvelle page et on
-
 
284
						// notifie le médiateur
-
 
285
						changerPageCourante(nouvellePage - 1);
-
 
286
						listePaginable.changerNumeroPage(pageCourante);
-
 
287
 
-
 
288
					} else {
-
 
289
						// sinon on reaffiche l'ancien numero de page sans rien
-
 
290
						// changer
-
 
291
						rafraichirNumeroPage();
-
 
292
						champPage.focus(true);
-
 
293
					}
-
 
294
				}
-
 
295
			}
-
 
296
 
-
 
297
			@Override
-
 
298
			public void onFocus(Field field) {
-
 
299
 
-
 
300
				champPage.focus(true);
-
 
301
			}
-
 
302
 
-
 
303
		});
-
 
304
 
-
 
305
		// pour éviter de se compliquer la vie, on filtre tous les charactères
-
 
306
		// non numériques
-
 
307
		champPage.addKeyPressListener(new EventCallback() {
-
 
308
 
-
 
309
			@Override
-
 
310
			public void execute(EventObject e) {
-
 
311
 
-
 
312
				// si c'est un numerique
-
 
313
				if (Character.isDigit((char) e.getCharCode())) {
-
 
314
					// on laisse passer
-
 
315
					return;
-
 
316
				}
-
 
317
 
-
 
318
				// si c'est la touche entrée ou backspace (valider ou effacer)
-
 
319
				if (e.getKey() == EventObject.ENTER
-
 
320
						|| e.getKey() == EventObject.BACKSPACE) {
-
 
321
					// on laisse passer
-
 
322
					return;
-
 
323
				} else {
-
 
324
					// sinon on remet le numero de page correct et on annule
-
 
325
					// l'évenement
-
 
326
					rafraichirNumeroPage();
-
 
327
					e.stopEvent();
-
 
328
				}
-
 
329
			}
-
 
330
 
244
		});
331
		});
Line 245... Line 332...
245
	}
332
	}
246
 
333
 
247
	/**
334
	/**
Line 281... Line 368...
281
			if (pageCourante >= pageTotale && pageCourante != 0) {
368
			if (pageCourante >= pageTotale && pageCourante != 0) {
282
				pageCourante = pageTotale - 1;
369
				pageCourante = pageTotale - 1;
283
				// le cas échéant on en notifie le médiateur
370
				// le cas échéant on en notifie le médiateur
284
				listePaginable.changerNumeroPage(pageCourante);
371
				listePaginable.changerNumeroPage(pageCourante);
285
			}
372
			}
-
 
373
			
-
 
374
			rafraichirNumeroPage();
286
		}
375
		}
287
	}
376
	}
Line 288... Line 377...
288
 
377
 
289
	/**
378
	/**
Line 316... Line 405...
316
	 *            la nouvelle taille de page
405
	 *            la nouvelle taille de page
317
	 */
406
	 */
318
	public void selectionnerTaillePage(int nouvelleTaillePage) {
407
	public void selectionnerTaillePage(int nouvelleTaillePage) {
319
		selecteurTaillePage.setValue("" + nouvelleTaillePage);
408
		selecteurTaillePage.setValue("" + nouvelleTaillePage);
320
	}
409
	}
-
 
410
	
-
 
411
	/**
-
 
412
	 * Met à jour les affichage sur les numéros de pages et d'intervalle
-
 
413
	 * d'éléments à partir des variables de classes
-
 
414
	 */
-
 
415
	public void rafraichirNumeroPage() {
-
 
416
		if (nbElement == 0) {
-
 
417
			champPage.setValue("" + (0));
-
 
418
		} else {
-
 
419
			champPage.setValue("" + (pageCourante + 1));
-
 
420
		}
-
 
421
		surPageTotale.setText("/"+pageTotale);
-
 
422
	}
321
}
423
}