Subversion Repositories eFlore/Applications.cel

Rev

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

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