Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 12 Rev 13
1
package org.tela_botanica.client.observation;
1
package org.tela_botanica.client.observation;
2
 
2
 
3
 
3
 
4
import java.util.Iterator;
4
import java.util.Iterator;
5
import org.tela_botanica.client.CarnetEnLigneMediateur;
5
import org.tela_botanica.client.CarnetEnLigneMediateur;
6
import org.tela_botanica.client.interfaces.FournisseurListe;
6
import org.tela_botanica.client.interfaces.FournisseurListe;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.ListeObservation;
8
import org.tela_botanica.client.modeles.ListeObservation;
9
import org.tela_botanica.client.modeles.Observation;
9
import org.tela_botanica.client.modeles.Observation;
10
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
10
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
11
import org.tela_botanica.client.vues.ListeObservationVue;
11
import org.tela_botanica.client.vues.ListeObservationVue;
12
 
12
 
13
import com.gwtext.client.data.ArrayReader;
13
import com.gwtext.client.data.ArrayReader;
14
import com.gwtext.client.data.FieldDef;
14
import com.gwtext.client.data.FieldDef;
15
import com.gwtext.client.data.MemoryProxy;
15
import com.gwtext.client.data.MemoryProxy;
16
import com.gwtext.client.data.RecordDef;
16
import com.gwtext.client.data.RecordDef;
17
import com.gwtext.client.data.Store;
17
import com.gwtext.client.data.Store;
18
import com.gwtext.client.data.StringFieldDef;
18
import com.gwtext.client.data.StringFieldDef;
19
import com.gwtext.client.widgets.Panel;
19
import com.gwtext.client.widgets.Panel;
20
import com.gwtext.client.widgets.TabPanel;
20
import com.gwtext.client.widgets.TabPanel;
21
 
21
 
22
/**
22
/**
23
 * Mediateur gérant les interactions entre vues et les echanges de données
23
 * Mediateur gérant les interactions entre vues et les echanges de données
24
 * C'est un singleton. 
24
 * C'est un singleton. 
25
 * @author aurelien
25
 * @author aurelien
26
 *
26
 *
27
 */
27
 */
28
public class ObservationMediateur implements Rafraichissable {
28
public class ObservationMediateur implements Rafraichissable {
29
	
29
	
30
	/**
30
	/**
31
	 * booleen qui verifie l'unicite de l'instance (donc static)
31
	 * booleen qui verifie l'unicite de l'instance (donc static)
32
	 */
32
	 */
33
	private static boolean estInstancie = false ;  
33
	private static boolean estInstancie = false ;  
34
	
34
	
35
	/** Mediateur general de l'application carnet en ligne
35
	/** Mediateur general de l'application carnet en ligne
36
	 * 
36
	 * 
37
	 * 
37
	 * 
38
	 */
38
	 */
39
	
39
	
40
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
40
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
41
	
41
	
42
	
42
	
43
	/**
43
	/**
44
	 * modele de données
44
	 * modele de données
45
	 */
45
	 */
46
	private ObservationModele observationModele = null ;
46
	private ObservationModele observationModele = null ;
47
	
47
	
48
	
48
	
49
	/**
49
	/**
50
	 * panneau principal des Observation (onglet "observation")
50
	 * panneau principal des Observation (onglet "observation")
51
	 */
51
	 */
52
	private final Panel panneauPrincipalObservation = new Panel("Observation");
52
	private final Panel panneauPrincipalObservation = new Panel("Observation");
53
	
53
	
54
	/**
54
	/**
55
	 * panneau a onglet pour la liste
55
	 * panneau a onglet pour la liste
56
	 */ 
56
	 */ 
57
	private TabPanel ongletsObservation = null ;
57
	private TabPanel ongletsObservation = null ;
58
	
58
	
59
	/**
59
	/**
60
	 * conteneur du panneau a onglets
60
	 * conteneur du panneau a onglets
61
	 */
61
	 */
62
	private Panel panneauMenuEtOngletsObservation = null ;
62
	private Panel panneauMenuEtOngletsObservation = null ;
63
	
63
	
64
	/**
64
	/**
65
	 * liste détaillée des Observations
65
	 * liste détaillée des Observations
66
	 */
66
	 */
67
	private ListeObservationVue listeObservation = null ;
67
	private ListeObservationVue listeObservation = null ;
68
	
68
	
69
	/**
69
	/**
70
	 * Saisie des Observations
70
	 * Saisie des Observations
71
	 */
71
	 */
72
	
72
	
73
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
73
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
74
	/**
74
	/**
75
	 * l'indice du dernier onglet sélectionné
75
	 * l'indice du dernier onglet sélectionné
76
	 */
76
	 */
77
	private int dernierIndexOnglet = 0 ; 
77
	private int dernierIndexOnglet = 0 ; 
78
	
78
	
79
	/**
79
	/**
80
	 * booleen explicitant s'il y a une selection en cours
80
	 * booleen explicitant s'il y a une selection en cours
81
	 */
81
	 */
82
	private boolean selection = false ;
82
	private boolean selection = false ;
83
	
83
	
84
	
84
	
85
 
85
 
86
	/**
86
	/**
87
	 * 
87
	 * 
88
	 * Numéro de page en cours
88
	 * Numéro de page en cours
89
	 */
89
	 */
90
	private int pageEncours = 0 ;
90
	private int pageEncours = 0 ;
91
	/**
91
	/**
92
	 * Nombre de pages totales
92
	 * Nombre de pages totales
93
	 */
93
	 */
94
	private int pageMax = 1 ;
94
	private int pageMax = 1 ;
95
	/**
95
	/**
96
	 * Taille de page (par défaut 20)
96
	 * Taille de page (par défaut 20)
97
	 */
97
	 */
98
	private int taillePage = 20 ;
98
	private int taillePage = 20 ;
99
	/**
99
	/**
100
	 * Nombre d'éléments total correspondant à la requete
100
	 * Nombre d'éléments total correspondant à la requete
101
	 */
101
	 */
102
	private int nbElements = 0 ;
102
	private int nbElements = 0 ;
103
	
103
	
104
	
104
	
105
	/**
105
	/**
106
	 * Le store contenant les données à afficher, que le modèle transmet au médiateur quand il le demande
106
	 * Le store contenant les données à afficher, que le modèle transmet au médiateur quand il le demande
107
	 */
107
	 */
108
	private Store st = null ;
108
	private Store st = null ;
109
	
109
	
110
	
110
	
111
	
111
	
112
	
112
	
113
	/**
113
	/**
114
	 * La liste des observations affichées en cours (verifier utilité)
114
	 * La liste des observations affichées en cours (verifier utilité)
115
	 */
115
	 */
116
	
116
	
117
	private ListeObservation cacheObservation = new ListeObservation(0) ;
117
	private ListeObservation cacheObservation = new ListeObservation(0) ;
118
	/**
118
	/**
119
	
119
	
120
	
120
	
121
	
121
	
122
	/**
122
	/**
123
	 * constructeur privé (on accède a la classe par la méthode getInstance
123
	 * constructeur privé (on accède a la classe par la méthode getInstance
124
	 */
124
	 */
125
	
125
	
126
	
126
	
127
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
127
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
128
	{
128
	{
129
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
129
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
130
	
130
	
131
	
131
	
132
		
132
		
133
		// Demande d'identification
133
		// Demande d'identification
134
//		afficherMenuId() ;
134
//		afficherMenuId() ;
135
 
135
 
136
		
136
		
137
		// on crée un modèle
137
		// on crée un modèle
138
		observationModele = ObservationModele.Instance(this);
138
		observationModele = ObservationModele.Instance(this);
139
		
139
		
140
		
140
		
141
		// on gère la mise en page du panneau principal
141
		// on gère la mise en page du panneau principal
142
		//panneauPrincipalObservation.setLayout(new BorderLayout());
142
		//panneauPrincipalObservation.setLayout(new BorderLayout());
143
		
143
		
144
		// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
144
		// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
145
	//	panneauMenuEtOngletsObservation = new Panel("gg") ;
145
	//	panneauMenuEtOngletsObservation = new Panel("gg") ;
146
	//	panneauMenuEtOngletsObservation.setLayout(new BorderLayout()) ;
146
	//	panneauMenuEtOngletsObservation.setLayout(new BorderLayout()) ;
147
		
147
		
148
		// le panneau à onglet qui contient la vue
148
		// le panneau à onglet qui contient la vue
149
		//ongletsObservation = new TabPanel();
149
		//ongletsObservation = new TabPanel();
150
		
150
		
151
		
151
		
152
		// la liste des observations
152
		// la liste des observations
153
		
153
		
154
		//Panel panneauListeObservation = new Panel("Liste");
154
		//Panel panneauListeObservation = new Panel("Liste");
155
		
155
		
156
		listeObservation = new ListeObservationVue(this);
156
		listeObservation = new ListeObservationVue(this);
157
		
157
		
158
		
158
		
159
		// Le formulaire de saisie / modification d'observation
159
		// Le formulaire de saisie / modification d'observation
160
		
160
		
161
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
161
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
162
 
162
 
163
		
163
		
164
		//panneauListeObservation.setLayout(new FitLayout());
164
		//panneauListeObservation.setLayout(new FitLayout());
165
		//panneauListeObservation.setSize(600,600);
165
		//panneauListeObservation.setSize(600,600);
166
		//panneauListeObservation.add(listeObservation);
166
		//panneauListeObservation.add(listeObservation);
167
		
167
		
168
		
168
		
169
		// on ajoute les panneaux au panneau à onglets
169
		// on ajoute les panneaux au panneau à onglets
170
		//ongletsObservation.add(panneauListeObservation);
170
		//ongletsObservation.add(panneauListeObservation);
171
		
171
		
172
		
172
		
173
		// les onglets au centre
173
		// les onglets au centre
174
//		panneauMenuEtOngletsObservation.add(ongletsObservation,regionCentre);
174
//		panneauMenuEtOngletsObservation.add(ongletsObservation,regionCentre);
175
		
175
		
176
		// on ajoute le panneau qui contient le menu et les onglets d'images au centre
176
		// on ajoute le panneau qui contient le menu et les onglets d'images au centre
177
		//panneauPrincipalObservation.add(panneauMenuEtOngletsObservation,regionCentre);
177
		//panneauPrincipalObservation.add(panneauMenuEtOngletsObservation,regionCentre);
178
		
178
		
179
		panneauPrincipalObservation.add(formulaireSaisieObservationVue);
179
		panneauPrincipalObservation.add(formulaireSaisieObservationVue);
180
	
180
	
181
		panneauPrincipalObservation.add(listeObservation);
181
		panneauPrincipalObservation.add(listeObservation);
182
		
182
		
183
	
183
	
184
	
184
	
185
 
185
 
186
	}
186
	}
187
 
187
 
188
 
188
 
189
	/**
189
	/**
190
	 * Retourne une instance de manière unique
190
	 * Retourne une instance de manière unique
191
	 * @return l'instance unique du médiateur
191
	 * @return l'instance unique du médiateur
192
	 */
192
	 */
193
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
193
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
194
	{
194
	{
195
			if(!estInstancie)
195
			if(!estInstancie)
196
			{
196
			{
197
				estInstancie = true ;
197
				estInstancie = true ;
198
				return new ObservationMediateur(carnetEnLigneMediateur) ;
198
				return new ObservationMediateur(carnetEnLigneMediateur) ;
199
			}
199
			}
200
			else
200
			else
201
			{
201
			{
202
				return null ;
202
				return null ;
203
				
203
				
204
			}
204
			}
205
	}
205
	}
206
	
206
	
207
	
207
	
208
	
208
	
209
	/**
209
	/**
210
	 * envoie au modèle une demande de mise a jour
210
	 * envoie au modèle une demande de mise a jour
211
	 */
211
	 */
212
 
212
 
213
 
213
 
214
	public void obtenirNombreObservation() {
214
	public void obtenirNombreObservation() {
215
		
215
		
216
	
216
	
217
			listeObservation.masquerChargement();
217
			listeObservation.masquerChargement();
218
		    observationModele.obtenirNombreObservation(this) ;
218
		    observationModele.obtenirNombreObservation(this) ;
219
		
219
		
220
	}
220
	}
221
	
221
	
222
	/**
222
	/**
223
	 * envoie au modèle une demande de mise a jour
223
	 * envoie au modèle une demande de mise a jour
224
	 */
224
	 */
225
 
225
 
226
 
226
 
227
	public void obtenirListeObservation() {
227
	public void obtenirListeObservation() {
228
		
228
		
229
 
229
 
230
			observationModele.obtenirListeObservation(this, taillePage, pageEncours) ;
230
			observationModele.obtenirListeObservation(this, taillePage, pageEncours) ;
231
		
231
		
232
	}
232
	}
233
 
233
 
234
 
234
 
235
	
235
	
236
		
236
		
237
	
237
	
238
	/**
238
	/**
239
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
239
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
240
	 * sous forme de tableau [nom, valeur]
240
	 * sous forme de tableau [nom, valeur]
241
	 * @return Les noms et valeurs des filtres
241
	 * @return Les noms et valeurs des filtres
242
	 */
242
	 */
243
	public String[][] renvoyerFiltres()
243
	public String[][] renvoyerFiltres()
244
	{
244
	{
245
		String[][] valeursFiltres = { {"location","Saint-Martin-de-Londres"} } ;
245
		String[][] valeursFiltres = { {"location","Saint-Martin-de-Londres"} } ;
246
		
246
		
247
		
247
		
248
		return valeursFiltres ;
248
		return valeursFiltres ;
249
	}
249
	}
250
 
250
 
251
 
251
 
252
	public String getIdentifiant() {
252
	public String getIdentifiant() {
253
		
253
		
254
		return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
254
		return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
255
	
255
	
256
	}
256
	}
257
 
257
 
258
 
258
 
259
	public Panel getPanneauPrincipalObservation() {
259
	public Panel getPanneauPrincipalObservation() {
260
		return panneauPrincipalObservation;
260
		return panneauPrincipalObservation;
261
	}
261
	}
262
	
262
	
263
	
263
	
264
	
264
	
265
	// TODO : plutot dans la listevu non ?
265
	// FIXME TODO : plutot dans la listevu non ?
266
 
266
 
267
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
267
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
268
	
268
	
269
		
269
		
270
		
270
		
271
//		 si l'on a reçu une liste d'observation
271
//		 si l'on a reçu une liste d'observation
272
		if(nouvelleDonnees instanceof ListeObservation)
272
		if(nouvelleDonnees instanceof ListeObservation)
273
		{
273
		{
274
			
274
			
275
				ListeObservation data = (ListeObservation) nouvelleDonnees ;
275
				ListeObservation data = (ListeObservation) nouvelleDonnees ;
276
				Object[][] observationData = new Object[data.size()][8];
276
				Object[][] observationData = new Object[data.size()][8];
277
				int i = 0 ;
277
				int i = 0 ;
278
				
278
				
279
				if(data.size() == 0)
279
				if(data.size() == 0)
280
				{
280
				{
281
					pageEncours = 0 ;
281
					pageEncours = 0 ;
282
				}
282
				}
283
				
283
				
284
				// on la parse et on récupère les informations quiç nous interessent
284
				// on la parse et on récupère les informations quiç nous interessent
285
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
285
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
286
				{
286
				{
287
					
287
					
288
					Observation obs=(Observation) data.get(it.next());
288
					Observation obs=(Observation) data.get(it.next());
289
					
289
					
290
					observationData[i][0]= obs.getTransmis();
290
					observationData[i][0]= obs.getTransmis();
291
					observationData[i][1]= obs.getNomSaisi();
291
					observationData[i][1]= obs.getNomSaisi();
292
					observationData[i][2]= obs.getNomRetenu();
292
					observationData[i][2]= obs.getNomRetenu();
293
					observationData[i][3]= obs.getLieudit();
293
					observationData[i][3]= obs.getLieudit();
294
					observationData[i][4]= obs.getDate();
294
					observationData[i][4]= obs.getDate();
295
					observationData[i][5]= obs.getNumeroOrdre();
295
					observationData[i][5]= obs.getNumeroOrdre();
296
					
296
					
297
					
297
					
298
 
298
 
299
					
299
					
300
										
300
										
301
					i++ ;
301
					i++ ;
302
				}
302
				}
303
		
303
		
304
				// creation du store qui les contient
304
				// creation du store qui les contient
305
				
305
				
306
				FieldDef defEtatObservation = new StringFieldDef("etat_observation");
306
				FieldDef defEtatObservation = new StringFieldDef("etat_observation");
307
				FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
307
				FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
308
				FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
308
				FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
309
				FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
309
				FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
310
				FieldDef defDateObservation = new StringFieldDef("date_observation");
310
				FieldDef defDateObservation = new StringFieldDef("date_observation");
311
				FieldDef defOrdreObservation = new StringFieldDef("ordre_observation");
311
				FieldDef defOrdreObservation = new StringFieldDef("ordre_observation");
312
				
312
				
313
				// on associe le store
313
				// on associe le store
314
 
314
 
315
				FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
315
				FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
316
						defLieuObservation, defDateObservation, defOrdreObservation };
316
						defLieuObservation, defDateObservation, defOrdreObservation };
317
				
317
				
318
				RecordDef rd = new RecordDef(defTab);
318
				RecordDef rd = new RecordDef(defTab);
319
				
319
				
320
				final MemoryProxy dataProxy = new MemoryProxy(observationData);
320
				final MemoryProxy dataProxy = new MemoryProxy(observationData);
321
				final ArrayReader reader = new ArrayReader(rd);
321
				final ArrayReader reader = new ArrayReader(rd);
322
		
322
		
323
				final Store observationStore = new Store(dataProxy, reader);
323
				final Store observationStore = new Store(dataProxy, reader);
324
				
324
				
325
				
325
				
326
				st = observationStore ;
326
				st = observationStore ;
327
				st.load() ;
327
				st.load() ;
328
				
328
				
329
				// par défaut le store est trié sur l'ordre d'observations
329
				// par défaut le store est trié sur l'ordre d'observations
330
				st.sort("ordre_observation") ;
330
				st.sort("ordre_observation") ;
331
 
331
 
332
			
332
			
333
				// si on doit répandre les données, on notifie le médiateur qui les distribuera à son tour
333
				// si on doit répandre les données, on notifie le médiateur qui les distribuera à son tour
334
				if(repandreRafraichissement)
334
				if(repandreRafraichissement)
335
				{
335
				{
336
					listeObservation.rafraichir(st, false) ;					
336
					listeObservation.rafraichir(st, false) ;					
337
				}
337
				}
338
				
338
				
339
		}
339
		}
340
		
340
		
341
		
341
		
342
		// Si on reçoit un tableau d'entiers
342
		// Si on reçoit un tableau d'entiers
343
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
343
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
344
		if(nouvelleDonnees instanceof int[])
344
		if(nouvelleDonnees instanceof int[])
345
		{
345
		{
346
			int[] pages = (int[])nouvelleDonnees ;
346
			int[] pages = (int[])nouvelleDonnees ;
347
			
347
			
348
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
348
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
349
			pageMax  = calculerNbPages(pages[0]) ;
349
			pageMax  = calculerNbPages(pages[0]) ;
350
			nbElements = pages[0] ;
350
			nbElements = pages[0] ;
351
			
351
			
352
			// et on notifie de le mediateur du changement des valeurs
352
			// et on notifie de le mediateur du changement des valeurs
353
			changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
353
			changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
354
			
354
			
355
			obtenirListeObservation();
355
			obtenirListeObservation();
356
		}
356
		}
357
	}
357
	}
358
	
358
	
359
	
359
	
360
	/**
360
	/**
361
	 * Met à jour les barre d'outils avec des nouvelles valeurs
361
	 * Met à jour les barre d'outils avec des nouvelles valeurs
362
	 * @param pageMax le nombre de pages
362
	 * @param pageMax le nombre de pages
363
	 * @param pageEncours la page en cours
363
	 * @param pageEncours la page en cours
364
	 * @param taillePage la taille de page
364
	 * @param taillePage la taille de page
365
	 * @param nbElement le nombre d'élements par page
365
	 * @param nbElement le nombre d'élements par page
366
	 */
366
	 */
367
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
367
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
368
	{
368
	{
369
				
369
				
370
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
370
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
371
		listeObservation.getToolBarVue().rafraichir(pages, false) ;
371
		listeObservation.getToolBarVue().rafraichir(pages, false) ;
372
		
372
		
373
	}
373
	}
374
	
374
	
375
	
375
	
376
	
376
	
377
	/**
377
	/**
378
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
378
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
379
	 * en cours
379
	 * en cours
380
	 * @param nbElements le nombre d'élements total
380
	 * @param nbElements le nombre d'élements total
381
	 * @return le nombre de pages 
381
	 * @return le nombre de pages 
382
	 */
382
	 */
383
	public int calculerNbPages(int nbElements)
383
	public int calculerNbPages(int nbElements)
384
	{
384
	{
385
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
385
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
386
		// pour eviter qu'il arrondisse mal la division
386
		// pour eviter qu'il arrondisse mal la division
387
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
387
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
388
		
388
		
389
		double nPage = (1.0*nbElements)/(1.0*taillePage) ; 
389
		double nPage = (1.0*nbElements)/(1.0*taillePage) ; 
390
		double nPageRound = Math.ceil(nPage) ;
390
		double nPageRound = Math.ceil(nPage) ;
391
		Double nPageInt = new Double(nPageRound) ;
391
		Double nPageInt = new Double(nPageRound) ;
392
		
392
		
393
		// on convertit en entier
393
		// on convertit en entier
394
		return nPageInt.intValue() ; 
394
		return nPageInt.intValue() ; 
395
	}
395
	}
396
 
396
 
397
	
397
	
398
	/**
398
	/**
399
	 * Recalcule la page en cours lors du changement du nombre d'élements
399
	 * Recalcule la page en cours lors du changement du nombre d'élements
400
	 * @param nbElements le nombre d'élements total
400
	 * @param nbElements le nombre d'élements total
401
	 * @return la nouvelle page encours
401
	 * @return la nouvelle page encours
402
	 */
402
	 */
403
	public int calculerPageCourante(int nbElements)
403
	public int calculerPageCourante(int nbElements)
404
	{
404
	{
405
		// on calcule le nombre de page
405
		// on calcule le nombre de page
406
		int nouvelNbPages = calculerNbPages(nbElements) ;
406
		int nouvelNbPages = calculerNbPages(nbElements) ;
407
		// la nouvelle page en cours
407
		// la nouvelle page en cours
408
		double nPageCourante = (1.0*pageEncours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
408
		double nPageCourante = (1.0*pageEncours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
409
		
409
		
410
		// on arrondit au supérieur
410
		// on arrondit au supérieur
411
		double nPageRound = Math.ceil(nPageCourante) ;
411
		double nPageRound = Math.ceil(nPageCourante) ;
412
		Double nPageInt = new Double(nPageRound) ;
412
		Double nPageInt = new Double(nPageRound) ;
413
		
413
		
414
		// on convertit en entier
414
		// on convertit en entier
415
		return Math.abs(nPageInt.intValue()) ; 
415
		return Math.abs(nPageInt.intValue()) ; 
416
	}
416
	}
417
	
417
	
418
 
418
 
419
	/**
419
	/**
420
	 * Appelle le modèle pour lui demander les données d'une page à afficher
420
	 * Appelle le modèle pour lui demander les données d'une page à afficher
421
	 * @param pageCourante le numéro de page à affciher
421
	 * @param pageCourante le numéro de page à affciher
422
	 */
422
	 */
423
	public void changerNumeroPage(int pageCourante) {
423
	public void changerNumeroPage(int pageCourante) {
424
		
424
		
425
		
425
		
426
		
426
		
427
		pageEncours = pageCourante ;
427
		pageEncours = pageCourante ;
428
		
428
		
429
		// On lance le chargerment des observations
429
		// On lance le chargerment des observations
430
		obtenirNombreObservation();
430
		obtenirNombreObservation();
431
		
431
		
432
		listeObservation.getToolBarVue().changerPageCourante(pageCourante);
432
		listeObservation.getToolBarVue().changerPageCourante(pageCourante);
433
		
433
		
434
	}
434
	}
435
	
435
	
436
	
436
	
437
	/**
437
	/**
438
	 * Appelle le modèle pour qu'il change la taille de page utilisée
438
	 * Appelle le modèle pour qu'il change la taille de page utilisée
439
	 * @param nouvelleTaillePage la nouvelle taille de page
439
	 * @param nouvelleTaillePage la nouvelle taille de page
440
	 */
440
	 */
441
	
441
	
442
	public void changerTaillePage(int nouvelleTaillePage)
442
	public void changerTaillePage(int nouvelleTaillePage)
443
	{
443
	{
444
	
444
	
445
		taillePage = nouvelleTaillePage ;
445
		taillePage = nouvelleTaillePage ;
446
		pageEncours = calculerPageCourante(nbElements) ;
446
		pageEncours = calculerPageCourante(nbElements) ;
447
 
447
 
448
		// 	On lance le chargerment des observations
448
		// 	On lance le chargerment des observations
449
		obtenirNombreObservation();
449
		obtenirNombreObservation();
450
		
450
		
451
		
451
		
452
		// et on met à jour la taille de page dans les barres d'outils
452
		// et on met à jour la taille de page dans les barres d'outils
453
		listeObservation.getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
453
		listeObservation.getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
454
		
454
		
455
		
455
		
456
	}
456
	}
457
 
457
 
-
 
458
 
-
 
459
	/**
458
 
460
	 *  
-
 
461
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne 
-
 
462
	 * @param r : la vue demandeuse de donnee
-
 
463
	 * @param critere : les criteres de selection
459
	// Retourne le fournisseur de donnee en referentiel Commune. doit posseder la methode obtenirListeDonnees()
464
	 */
460
	
465
	
461
	public FournisseurListe obtenirFournisseurReferentielCommune() {
466
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
462
		
467
		
463
		return observationModele.obtenirFournisseurReferentielCommune() ;
468
		observationModele.obtenirListeReferentielCommune(r,critere) ;
464
 
469
 
465
		
470
		
466
	}
471
	}
467
 
472
 
468
 
473
 
469
	
474
	
470
 
475
 
471
	
476
	
472
	
477
	
473
}
478
}