Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 43 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 43 Rev 47
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
-
 
3
import java.util.Iterator;
-
 
4
 
2
 
5
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
7
import org.tela_botanica.client.modeles.ImageCarnet;
-
 
8
 
4
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import com.google.gwt.core.client.JavaScriptObject;
5
 
10
import com.gwtext.client.core.EventCallback;
6
import com.gwtext.client.core.EventCallback;
11
import com.gwtext.client.core.EventObject;
7
import com.gwtext.client.core.EventObject;
12
import com.gwtext.client.core.Template;
8
import com.gwtext.client.core.Template;
13
import com.gwtext.client.core.XTemplate;
-
 
14
import com.gwtext.client.data.Record ;
9
import com.gwtext.client.data.Record;
15
import com.gwtext.client.data.ArrayReader;
-
 
16
import com.gwtext.client.data.FieldDef;
-
 
17
import com.gwtext.client.data.IntegerFieldDef;
-
 
18
import com.gwtext.client.data.MemoryProxy;
-
 
19
import com.gwtext.client.data.RecordDef;
-
 
20
import com.gwtext.client.data.SimpleStore;
10
import com.gwtext.client.data.SimpleStore;
21
import com.gwtext.client.data.Store;
11
import com.gwtext.client.data.Store;
22
import com.gwtext.client.data.StringFieldDef;
-
 
23
import com.gwtext.client.widgets.BoxComponent;
-
 
24
import com.gwtext.client.widgets.Button;
12
import com.gwtext.client.widgets.Button;
25
import com.gwtext.client.widgets.Component;
-
 
26
import com.gwtext.client.widgets.Toolbar;
13
import com.gwtext.client.widgets.Toolbar;
27
import com.gwtext.client.widgets.ToolbarButton;
14
import com.gwtext.client.widgets.ToolbarButton;
28
import com.gwtext.client.widgets.ToolbarTextItem;
15
import com.gwtext.client.widgets.ToolbarTextItem;
29
import com.gwtext.client.widgets.event.ButtonListener;
-
 
30
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
16
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
31
import com.gwtext.client.widgets.form.ComboBox;
17
import com.gwtext.client.widgets.form.ComboBox;
32
import com.gwtext.client.widgets.form.Field;
18
import com.gwtext.client.widgets.form.Field;
33
import com.gwtext.client.widgets.form.TextField;
19
import com.gwtext.client.widgets.form.TextField;
34
import com.gwtext.client.widgets.form.event.ComboBoxListener;
-
 
35
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
20
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
36
import com.gwtext.client.widgets.form.event.TextFieldListener;
-
 
37
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter;
21
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter;
38
import com.gwtext.client.widgets.menu.Menu;
-
 
39
 
22
 
40
 
23
 
41
/**
24
/**
42
 * Barre de pagination asynchrone avec filtrage des touches et accès directs et séquentiels à une page
25
 * Barre de pagination asynchrone avec filtrage des touches et accès directs et séquentiels à une page
43
 * @author aurelien
26
 * @author aurelien
44
 *
27
 *
45
 */
28
 */
46
public class pageToolBarVue extends Toolbar implements Rafraichissable {
29
public class pageToolBarVue extends Toolbar implements Rafraichissable {
47
	
30
	
48
	/**
31
	/**
49
	 * Instance du médiateur à qui on notifie les évnènements
32
	 * Instance du médiateur à qui on notifie les évnènements
50
	 */
33
	 */
51
	private ImageMediateur iMediateur = null ;
34
	private ImageMediateur iMediateur = null ;
52
	
35
	
53
	/**
36
	/**
54
	 * Bouton précédent
37
	 * Bouton précédent
55
	 */
38
	 */
56
	private ToolbarButton prevPage = new ToolbarButton("<<") ;
39
	private ToolbarButton prevPage = new ToolbarButton("<<") ;
57
	/**
40
	/**
58
	 * Bouton suivant
41
	 * Bouton suivant
59
	 */
42
	 */
60
	private ToolbarButton suivPage = new ToolbarButton(">>") ;
43
	private ToolbarButton suivPage = new ToolbarButton(">>") ;
61
	/**
44
	/**
62
	 * Numéro de la page courante (attention, commence à zéro pour des raisons pratiques)
45
	 * Numéro de la page courante (attention, commence à zéro pour des raisons pratiques)
63
	 */
46
	 */
64
	private int pageCourante = 0 ;
47
	private int pageCourante = 0 ;
65
	/**
48
	/**
66
	 * Nombre de page total
49
	 * Nombre de page total
67
	 */
50
	 */
68
	private int pageTotale = 1 ;
51
	private int pageTotale = 1 ;
69
	/**
52
	/**
70
	 * Nombre d'élements total
53
	 * Nombre d'élements total
71
	 */
54
	 */
72
	private int nbElement = 0 ;
55
	private int nbElement = 0 ;
73
	/**
56
	/**
74
	 * Nombre d'élément par page
57
	 * Nombre d'élément par page
75
	 */
58
	 */
76
	private int taillePage = 0 ;
59
	private int taillePage = 0 ;
77
	/**
60
	/**
78
	 * Texte statique de la toolbar 1
61
	 * Texte statique de la toolbar 1
79
	 */
62
	 */
80
	private ToolbarTextItem page = new ToolbarTextItem("Page ") ;
63
	private ToolbarTextItem page = new ToolbarTextItem("Page ") ;
81
	/**
64
	/**
82
	 * Affichage de la page courante
65
	 * Affichage de la page courante
83
	 */
66
	 */
84
	private TextField champPage = new TextField(""+(pageCourante+1)) ;
67
	private TextField champPage = new TextField(""+(pageCourante+1)) ;
85
	/**
68
	/**
86
	 * Affichage de "sur pageTotale "
69
	 * Affichage de "sur pageTotale "
87
	 */
70
	 */
88
	private ToolbarTextItem surTotalPage = new ToolbarTextItem(" sur "+pageTotale) ;
71
	private ToolbarTextItem surTotalPage = new ToolbarTextItem(" sur "+pageTotale) ;
89
	/**
72
	/**
90
	 * Texte statique de la toolbar 2
73
	 * Texte statique de la toolbar 2
91
	 */
74
	 */
92
	private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ") ;
75
	private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ") ;
93
	/**
76
	/**
94
	 * Combobox permettant de selectionner le nombre d'élements à afficher par page 
77
	 * Combobox permettant de selectionner le nombre d'élements à afficher par page 
95
	 * et donc de changer la variable taillePage 
78
	 * et donc de changer la variable taillePage 
96
	 */
79
	 */
97
	private ComboBox selecteurTaillePage = new ComboBox() ;
80
	private ComboBox selecteurTaillePage = new ComboBox() ;
98
	/**
81
	/**
99
	 * Texte statique de la toolbar 3
82
	 * Texte statique de la toolbar 3
100
	 */
83
	 */
101
	private ToolbarTextItem nbElemParPage = new ToolbarTextItem(" images par page ") ;
84
	private ToolbarTextItem nbElemParPage = new ToolbarTextItem(" images par page ") ;
102
	/**
85
	/**
103
	 * Affiche l'intervalle des éléments contenus dans la page
86
	 * Affiche l'intervalle des éléments contenus dans la page
104
	 */
87
	 */
105
	private ToolbarTextItem intervalleElements = new ToolbarTextItem("Images "+pageCourante*taillePage+" sur "+nbElement) ;
88
	private ToolbarTextItem intervalleElements = new ToolbarTextItem("Images "+pageCourante*taillePage+" sur "+nbElement) ;
106
 
89
 
107
	/**
90
	/**
108
	 * retourne le mediateur associe à la barre
91
	 * retourne le mediateur associe à la barre
109
	 */
92
	 */
110
	public ImageMediateur getImediateur()
93
	public ImageMediateur getImediateur()
111
	{
94
	{
112
		return iMediateur ;
95
		return iMediateur ;
113
	}
96
	}
114
		
97
		
115
	/***
98
	/***
116
	 * constructeur sans argument (privé car ne doit pas être utilisé)
99
	 * constructeur sans argument (privé car ne doit pas être utilisé)
117
	 */
100
	 */
118
	private pageToolBarVue()
101
	private pageToolBarVue()
119
	{
102
	{
120
		super() ;
103
		super() ;
121
	}
104
	}
122
	
105
	
123
	/**
106
	/**
124
	 * constructeur avec paramètres
107
	 * constructeur avec paramètres
125
	 * @param im le médiateur à associer à la barre
108
	 * @param im le médiateur à associer à la barre
126
	 */
109
	 */
127
	public pageToolBarVue(ImageMediateur im)
110
	public pageToolBarVue(ImageMediateur im)
128
	{
111
	{
129
		super() ;
112
		super() ;
130
		
113
		
131
		iMediateur = im ;
114
		iMediateur = im ;
132
		
115
		
133
		// on dispose un peu de texte et quelques espaces pour séparer les éléments
116
		// on dispose un peu de texte et quelques espaces pour séparer les éléments
134
		addButton(prevPage) ;
117
		addButton(prevPage) ;
135
		addSpacer() ;
118
		addSpacer() ;
136
		addItem(page) ;
119
		addItem(page) ;
137
		addField(champPage) ;
120
		addField(champPage) ;
138
		addItem(surTotalPage) ;
121
		addItem(surTotalPage) ;
139
		addSpacer() ;
122
		addSpacer() ;
140
		addButton(suivPage) ;
123
		addButton(suivPage) ;
141
		
124
		
142
		champPage.setWidth(30) ;
125
		champPage.setWidth(30) ;
143
		
126
		
144
		addSpacer() ;
127
		addSpacer() ;
145
		addItem(afficherNbElem) ;
128
		addItem(afficherNbElem) ;
146
		
129
		
147
		// le store contient les valeur possibles pour les tailles de page
130
		// le store contient les valeur possibles pour les tailles de page
148
		final Store store = new SimpleStore(new String[]{"nb_page"}, getNbPages());  
131
		final Store store = new SimpleStore(new String[]{"nb_page"}, getNbPages());  
149
		store.load();  
132
		store.load();  
150
		
133
		
151
		// le template definit ce que l'on affiche pour chaque element du store dans la combobox
134
		// le template definit ce que l'on affiche pour chaque element du store dans la combobox
152
		final Template tp = new Template("<div class=\"x-combo-list-item\">" 
135
		final Template tp = new Template("<div class=\"x-combo-list-item\">" 
153
				+ "{nb_page}" 
136
				+ "{nb_page}" 
154
				+ "<div class=\"x-clear\"></div></div>");
137
				+ "<div class=\"x-clear\"></div></div>");
155
		tp.compile();
138
		tp.compile();
156
		
139
		
157
		selecteurTaillePage.setTpl(tp) ;
140
		selecteurTaillePage.setTpl(tp) ;
158
		selecteurTaillePage.setStore(store) ;
141
		selecteurTaillePage.setStore(store) ;
159
		selecteurTaillePage.setWidth(40) ;
142
		selecteurTaillePage.setWidth(40) ;
160
		selecteurTaillePage.setEditable(false) ;
143
		selecteurTaillePage.setEditable(false) ;
161
		addField(selecteurTaillePage) ;
144
		addField(selecteurTaillePage) ;
162
		selecteurTaillePage.setValue("50") ;
145
		selecteurTaillePage.setValue("50") ;
163
		selecteurTaillePage.setWidth(50) ;
146
		selecteurTaillePage.setWidth(50) ;
164
		addItem(nbElemParPage) ;
147
		addItem(nbElemParPage) ;
165
		
148
		
166
		// on remplit l'espace pour que l'intervalle d'élement se place à droite de la barre
149
		// on remplit l'espace pour que l'intervalle d'élement se place à droite de la barre
167
		addFill() ;
150
		addFill() ;
168
		addItem(intervalleElements) ;
151
		addItem(intervalleElements) ;
169
		addSpacer() ;
152
		addSpacer() ;
170
		
153
		
171
		// on ajoute les différents listeners
154
		// on ajoute les différents listeners
172
		ajouterListeners() ;
155
		ajouterListeners() ;
173
	}
156
	}
174
	
157
	
175
	/**
158
	/**
176
	 * ajoute les différents listeners nécessaires au bon fonctionnement des éléments de la barre de pagination
159
	 * ajoute les différents listeners nécessaires au bon fonctionnement des éléments de la barre de pagination
177
	 */
160
	 */
178
	private void ajouterListeners() 
161
	private void ajouterListeners() 
179
	{
162
	{
180
		// boutons suivants et précédents 
163
		// boutons suivants et précédents 
181
		prevPage.addListener(new ButtonListenerAdapter() {
164
		prevPage.addListener(new ButtonListenerAdapter() {
-
 
165
 
182
 
166
			
183
			public void onClick(Button button, EventObject e) {
167
			public void onClick(Button button, EventObject e) {
184
				
168
				
185
				// si la page courante n'est pas la première
169
				// si la page courante n'est pas la première
186
				if(pageCourante > 0)
170
				if(pageCourante > 0)
187
				{
171
				{
188
					// on décrémente la page courante de 1
172
					// on décrémente la page courante de 1
189
					pageCourante -- ;
173
					pageCourante -- ;
190
					// on rafraichit l'affichage
174
					// on rafraichit l'affichage
191
					rafraichirNumeroPage() ;
175
					rafraichirNumeroPage() ;
192
					// et on notifie le médiateur de l'évenement
176
					// et on notifie le médiateur de l'évenement
193
					getImediateur().changerNumeroPage(pageCourante) ;
177
					getImediateur().changerNumeroPage(pageCourante) ;
194
					
178
					
195
				}
179
				}
196
			}
180
			}
197
		}) ;
181
		}) ;
198
		
182
		
199
		suivPage.addListener(new ButtonListenerAdapter() {
183
		suivPage.addListener(new ButtonListenerAdapter() {
-
 
184
			
200
			
185
			
201
			public void onClick(Button button, EventObject e) {
186
			public void onClick(Button button, EventObject e) {
202
				
187
				
203
				// si la page courante n'est pas la dernière
188
				// si la page courante n'est pas la dernière
204
				if(pageCourante  < pageTotale -1)
189
				if(pageCourante  < pageTotale -1)
205
				{
190
				{
206
					// on incrémente la page courante de 1
191
					// on incrémente la page courante de 1
207
					pageCourante ++ ;
192
					pageCourante ++ ;
208
					// on rafraichit l'affichage
193
					// on rafraichit l'affichage
209
					rafraichirNumeroPage() ;
194
					rafraichirNumeroPage() ;
210
					// et on notifie le médiateur de l'évenement
195
					// et on notifie le médiateur de l'évenement
211
					getImediateur().changerNumeroPage(pageCourante) ;
196
					getImediateur().changerNumeroPage(pageCourante) ;
212
					
197
					
213
				}	
198
				}	
214
			}
199
			}
215
		}) ;
200
		}) ;
216
		
201
		
217
		champPage.addListener(new TextFieldListenerAdapter() {
202
		champPage.addListener(new TextFieldListenerAdapter() {
-
 
203
 
218
 
204
			
219
			public void onSpecialKey(Field field, EventObject e) {
205
			public void onSpecialKey(Field field, EventObject e) {
220
				
206
				
221
				// on teste si la touche entrée a été pressée
207
				// on teste si la touche entrée a été pressée
222
				if(e.getKey() == EventObject.ENTER)
208
				if(e.getKey() == EventObject.ENTER)
223
				{
209
				{
224
					int nouvellePage = pageCourante ;
210
					int nouvellePage = pageCourante ;
225
					// on teste avec parseInt si la valeur entrée est un entier
211
					// on teste avec parseInt si la valeur entrée est un entier
226
					 try
212
					 try
227
					 {
213
					 {
228
						nouvellePage = Integer.parseInt(champPage.getRawValue()) ;
214
						nouvellePage = Integer.parseInt(champPage.getRawValue()) ;
229
					 }
215
					 }
230
					 // si ce n'est pas le cas alors on remet le numéro de page correct
216
					 // si ce n'est pas le cas alors on remet le numéro de page correct
231
					 catch(NumberFormatException nfe)
217
					 catch(NumberFormatException nfe)
232
					 {
218
					 {
233
						 rafraichirNumeroPage() ;
219
						 rafraichirNumeroPage() ;
234
						 champPage.focus(true) ;
220
						 champPage.focus(true) ;
235
						 return ;
221
						 return ;
236
					 }
222
					 }
237
					
223
					
238
					// si la conversion reussit on verifie s'il est nécessaire de changer de page 
224
					// si la conversion reussit on verifie s'il est nécessaire de changer de page 
239
					// et si la nouvelle est comprise dans l'intervalle des pages existantes (0..pageTotale)
225
					// et si la nouvelle est comprise dans l'intervalle des pages existantes (0..pageTotale)
240
					if(nouvellePage != pageCourante + 1 && nouvellePage > 0 && nouvellePage <= pageTotale)
226
					if(nouvellePage != pageCourante + 1 && nouvellePage > 0 && nouvellePage <= pageTotale)
241
					{
227
					{
242
							// le cas échéant, on charge la nouvelle page et on notifie le médiateur
228
							// le cas échéant, on charge la nouvelle page et on notifie le médiateur
243
							changerPageCourante(nouvellePage - 1) ;
229
							changerPageCourante(nouvellePage - 1) ;
244
							getImediateur().changerNumeroPage(pageCourante) ;
230
							getImediateur().changerNumeroPage(pageCourante) ;
245
 
231
 
246
					}
232
					}
247
					else
233
					else
248
					{
234
					{
249
						// sinon on reaffiche l'ancien numero de page sans rien changer
235
						// sinon on reaffiche l'ancien numero de page sans rien changer
250
						rafraichirNumeroPage() ;
236
						rafraichirNumeroPage() ;
251
						champPage.focus(true) ;
237
						champPage.focus(true) ;
252
					}
238
					}
253
				}
239
				}
254
			}
240
			}
-
 
241
			
255
			
242
			
256
			public void onFocus(Field field) {
243
			public void onFocus(Field field) {
257
				
244
				
258
				champPage.focus(true) ;
245
				champPage.focus(true) ;
259
			}
246
			}
260
			
247
			
261
		});
248
		});
262
		
249
		
263
		// pour éviter de se compliquer la vie, on filtre tous les charactères non numériques
250
		// pour éviter de se compliquer la vie, on filtre tous les charactères non numériques
264
		champPage.addKeyPressListener(new EventCallback() {
251
		champPage.addKeyPressListener(new EventCallback() {
265
 
252
 
266
			public void execute(EventObject e) {
253
			public void execute(EventObject e) {
267
				
254
				
268
				// si c'est un numerique
255
				// si c'est un numerique
269
				if(Character.isDigit((char)e.getCharCode()))
256
				if(Character.isDigit((char)e.getCharCode()))
270
				{
257
				{
271
					// on laisse passer
258
					// on laisse passer
272
					return ;
259
					return ;
273
				}
260
				}
274
				
261
				
275
				// si c'est la touche entrée ou backspace (valider ou effacer)
262
				// si c'est la touche entrée ou backspace (valider ou effacer)
276
				if(e.getKey() == EventObject.ENTER || e.getKey() == EventObject.BACKSPACE)
263
				if(e.getKey() == EventObject.ENTER || e.getKey() == EventObject.BACKSPACE)
277
				{
264
				{
278
					// on laisse passer
265
					// on laisse passer
279
					return ;
266
					return ;
280
				}
267
				}
281
				else
268
				else
282
				{
269
				{
283
					// sinon on remet le numero de page correct et on annule l'évenement
270
					// sinon on remet le numero de page correct et on annule l'évenement
284
					rafraichirNumeroPage() ;
271
					rafraichirNumeroPage() ;
285
					e.stopEvent() ;
272
					e.stopEvent() ;
286
				}				
273
				}				
287
			}
274
			}
288
			
275
			
289
		}) ;
276
		}) ;
290
		
277
		
291
		// listener pour la selection dans la combobox 
278
		// listener pour la selection dans la combobox 
292
		selecteurTaillePage.addListener(new ComboBoxListenerAdapter() {
279
		selecteurTaillePage.addListener(new ComboBoxListenerAdapter() {
-
 
280
			
293
			
281
			
294
			public void onSelect(ComboBox comboBox, Record record, int index) {
282
			public void onSelect(ComboBox comboBox, Record record, int index) {
295
				
283
				
296
				String nouvelleTaillePageString = comboBox.getStore().getRecordAt(index).getAsString("nb_page") ;
284
				String nouvelleTaillePageString = comboBox.getStore().getRecordAt(index).getAsString("nb_page") ;
297
				int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString) ;
285
				int nouvelleTaillePage = Integer.parseInt(nouvelleTaillePageString) ;
298
				
286
				
299
				// si la taille de page est différente de l'ancienne
287
				// si la taille de page est différente de l'ancienne
300
				if(nouvelleTaillePage != taillePage)
288
				if(nouvelleTaillePage != taillePage)
301
				{
289
				{
302
					// on la change
290
					// on la change
303
					changerTaillePage(nouvelleTaillePage) ;
291
					changerTaillePage(nouvelleTaillePage) ;
304
				}
292
				}
305
				// et on met la valeur à jour dans la combobox
293
				// et on met la valeur à jour dans la combobox
306
				comboBox.setValue(nouvelleTaillePageString) ;
294
				comboBox.setValue(nouvelleTaillePageString) ;
307
			}
295
			}
308
			
296
			
309
		}) ;
297
		}) ;
310
	}
298
	}
311
	
299
	
312
	/**
300
	/**
313
	 * Met à jour les affichage sur les numéros de pages et d'intervalle d'éléments
301
	 * Met à jour les affichage sur les numéros de pages et d'intervalle d'éléments
314
	 * à partir des variables de classes
302
	 * à partir des variables de classes
315
	 */
303
	 */
316
	public void rafraichirNumeroPage()
304
	public void rafraichirNumeroPage()
317
	{	
305
	{	
318
		surTotalPage.setText(" sur "+pageTotale) ;
306
		surTotalPage.setText(" sur "+pageTotale) ;
319
		
307
		
320
		if(nbElement == 0)
308
		if(nbElement == 0)
321
		{
309
		{
322
			champPage.setValue(""+(0)) ;
310
			champPage.setValue(""+(0)) ;
323
			// on met simplement à jour l'intervalle qui contient toujours le même nombre d'éléments
311
			// on met simplement à jour l'intervalle qui contient toujours le même nombre d'éléments
324
			intervalleElements.setText("Images 0 - 0 sur 0") ;
312
			intervalleElements.setText("Images 0 - 0 sur 0") ;
325
		}
313
		}
326
		else
314
		else
327
		{
315
		{
328
			champPage.setValue(""+(pageCourante+1)) ;
316
			champPage.setValue(""+(pageCourante+1)) ;
329
			
317
			
330
			// si la page n'est pas la dernière 
318
			// si la page n'est pas la dernière 
331
			if(pageCourante + 1 != pageTotale)
319
			if(pageCourante + 1 != pageTotale)
332
			{
320
			{
333
				// sauf pour la dernière page qui contient souvent moins d'élements que le nombre d'élements par page
321
				// sauf pour la dernière page qui contient souvent moins d'élements que le nombre d'élements par page
334
				intervalleElements.setText("Images "+pageCourante*taillePage+" - "+(pageCourante+1)*taillePage+" sur "+nbElement) ;
322
				intervalleElements.setText("Images "+pageCourante*taillePage+" - "+(pageCourante+1)*taillePage+" sur "+nbElement) ;
335
			}
323
			}
336
			else
324
			else
337
			{
325
			{
338
				// on met simplement à jour l'intervalle qui contient toujours le même nombre d'éléments
326
				// on met simplement à jour l'intervalle qui contient toujours le même nombre d'éléments
339
				intervalleElements.setText("Images "+pageCourante*taillePage+" - "+nbElement+" sur "+nbElement) ;
327
				intervalleElements.setText("Images "+pageCourante*taillePage+" - "+nbElement+" sur "+nbElement) ;
340
			}
328
			}
341
		}	
329
		}	
342
	}
330
	}
343
	
331
	
344
	/**
332
	/**
345
	 * Met à jour la page en cours 
333
	 * Met à jour la page en cours 
346
	 * @param nouvellePageCourante la nouvelle page en cours
334
	 * @param nouvellePageCourante la nouvelle page en cours
347
	 */
335
	 */
348
	public void changerPageCourante(int nouvellePageCourante)
336
	public void changerPageCourante(int nouvellePageCourante)
349
	{
337
	{
350
		pageCourante = nouvellePageCourante ;
338
		pageCourante = nouvellePageCourante ;
351
	}
339
	}
352
	
340
	
353
	/**
341
	/**
354
	 * Methode héritée de l'interface rafraichissable
342
	 * Methode héritée de l'interface rafraichissable
355
	 */
343
	 */
356
	public void rafraichir(Object nouvelleDonnees,
344
	public void rafraichir(Object nouvelleDonnees,
357
			boolean repandreRaffraichissement) {
345
			boolean repandreRaffraichissement) {
358
		
346
		
359
		// si on reçoit un tableau de int
347
		// si on reçoit un tableau de int
360
		if(nouvelleDonnees instanceof int[])
348
		if(nouvelleDonnees instanceof int[])
361
		{
349
		{
362
			int [] page = (int[])nouvelleDonnees ;
350
			int [] page = (int[])nouvelleDonnees ;
363
			// le premier élement est le nombre de pages totales 
351
			// le premier élement est le nombre de pages totales 
364
			pageTotale = page[0] ;
352
			pageTotale = page[0] ;
365
			// le second la page en cours
353
			// le second la page en cours
366
			pageCourante = page[1] ;
354
			pageCourante = page[1] ;
367
			// le troisième la taille de la page
355
			// le troisième la taille de la page
368
			taillePage = page[2] ;
356
			taillePage = page[2] ;
369
			// et le dernier le nombre total d'éléments
357
			// et le dernier le nombre total d'éléments
370
			nbElement = page[3] ;
358
			nbElement = page[3] ;
371
			
359
			
372
			// si la page courante dépasse la page totale (cas normalement improbable car géré en amont)
360
			// si la page courante dépasse la page totale (cas normalement improbable car géré en amont)
373
			// on met le numéro de page à la page courante -1 (car la page courante est comptée à partir
361
			// on met le numéro de page à la page courante -1 (car la page courante est comptée à partir
374
			// de zéro)
362
			// de zéro)
375
			if(pageCourante >= pageTotale && pageCourante != 0)
363
			if(pageCourante >= pageTotale && pageCourante != 0)
376
			{
364
			{
377
				pageCourante = pageTotale - 1 ;
365
				pageCourante = pageTotale - 1 ;
378
				// le cas échéant on en notifie le médiateur
366
				// le cas échéant on en notifie le médiateur
379
				getImediateur().changerNumeroPage(pageCourante) ;
367
				getImediateur().changerNumeroPage(pageCourante) ;
380
			}
368
			}
381
		}
369
		}
382
		
370
		
383
		// enfin on rafraichit les informations affichées à partir des nouvelles variables de classes mises à jour
371
		// enfin on rafraichit les informations affichées à partir des nouvelles variables de classes mises à jour
384
		rafraichirNumeroPage() ;
372
		rafraichirNumeroPage() ;
385
	}
373
	}
386
	
374
	
387
	/**
375
	/**
388
	 * Renvoie les différents intervalles de pages possibles
376
	 * Renvoie les différents intervalles de pages possibles
389
	 * @return un tableau de tableau de string qui contient les différentes taille de pages 
377
	 * @return un tableau de tableau de string qui contient les différentes taille de pages 
390
	 */
378
	 */
391
	public String[][] getNbPages()
379
	public String[][] getNbPages()
392
	{
380
	{
393
		String[][] pages = {{"200"},{"100"},{"50"},{"20"},{"10"}} ;
381
		String[][] pages = {{"200"},{"100"},{"50"},{"20"},{"10"}} ;
394
		
382
		
395
		return pages ;
383
		return pages ;
396
	}
384
	}
397
 
385
 
398
	/**
386
	/**
399
	 * Envoie au médiateur une demande pour modifier la taille de la page
387
	 * Envoie au médiateur une demande pour modifier la taille de la page
400
	 * (qui va à son tour faire les modifications nécessaires)
388
	 * (qui va à son tour faire les modifications nécessaires)
401
	 * @param nouvelleTaillePage la nouvelle taille de page (élement appartenant au tableau renvoyé par getNbPages())
389
	 * @param nouvelleTaillePage la nouvelle taille de page (élement appartenant au tableau renvoyé par getNbPages())
402
	 */
390
	 */
403
	public void changerTaillePage(int nouvelleTaillePage) {
391
	public void changerTaillePage(int nouvelleTaillePage) {
404
		
392
		
405
		getImediateur().changerTaillePage(nouvelleTaillePage) ;
393
		getImediateur().changerTaillePage(nouvelleTaillePage) ;
406
		
394
		
407
	}
395
	}
408
	
396
	
409
	/**
397
	/**
410
	 * Selectionne la valeur correspond à celle passée en paramètre dans la combobox (si elle existe)
398
	 * Selectionne la valeur correspond à celle passée en paramètre dans la combobox (si elle existe)
411
	 * @param nouvelleTaillePage la nouvelle taille de page
399
	 * @param nouvelleTaillePage la nouvelle taille de page
412
	 */
400
	 */
413
	public void selectionnerTaillePage(int nouvelleTaillePage) {
401
	public void selectionnerTaillePage(int nouvelleTaillePage) {
414
		
402
		
415
		selecteurTaillePage.setValue(""+nouvelleTaillePage) ;
403
		selecteurTaillePage.setValue(""+nouvelleTaillePage) ;
416
	}
404
	}
417
	
405
	
418
}
406
}