Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 80 Rev 82
1
package org.tela_botanica.client.observation;
1
package org.tela_botanica.client.observation;
2
 
2
 
-
 
3
 
-
 
4
// TODO : systematiser les onQuelquechose, appelle depuis les vues
3
 
5
 
4
import org.tela_botanica.client.CarnetEnLigneMediateur;
6
import org.tela_botanica.client.CarnetEnLigneMediateur;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.modeles.ListeObservation;
8
import org.tela_botanica.client.modeles.ListeObservation;
7
import org.tela_botanica.client.modeles.Observation;
9
import org.tela_botanica.client.modeles.Observation;
8
import org.tela_botanica.client.vues.ArbreEntiteGeographiqueObservationFiltreVue;
10
import org.tela_botanica.client.vues.ArbreEntiteGeographiqueObservationFiltreVue;
9
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
11
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
10
import org.tela_botanica.client.vues.ImageGeneriqueVue;
12
import org.tela_botanica.client.vues.ImageGeneriqueVue;
11
import org.tela_botanica.client.vues.InformationRepartitionVue;
13
import org.tela_botanica.client.vues.InformationRepartitionVue;
12
import org.tela_botanica.client.vues.ListeObservationVue;
14
import org.tela_botanica.client.vues.ListeObservationVue;
13
import org.tela_botanica.client.vues.PanneauFiltresObservationVues;
15
import org.tela_botanica.client.vues.PanneauFiltresObservationVues;
14
 
16
 
15
import com.google.gwt.core.client.GWT;
17
import com.google.gwt.core.client.GWT;
16
import com.google.gwt.user.client.Window;
18
import com.google.gwt.user.client.Window;
17
import com.gwtext.client.core.EventObject;
19
import com.gwtext.client.core.EventObject;
18
import com.gwtext.client.core.RegionPosition;
20
import com.gwtext.client.core.RegionPosition;
19
import com.gwtext.client.data.Record;
-
 
20
import com.gwtext.client.widgets.Panel;
21
import com.gwtext.client.widgets.Panel;
21
import com.gwtext.client.widgets.layout.BorderLayout;
22
import com.gwtext.client.widgets.layout.BorderLayout;
22
import com.gwtext.client.widgets.layout.BorderLayoutData;
23
import com.gwtext.client.widgets.layout.BorderLayoutData;
23
import com.gwtext.client.widgets.layout.RowLayout;
24
import com.gwtext.client.widgets.layout.RowLayout;
24
import com.gwtext.client.widgets.layout.RowLayoutData;
25
import com.gwtext.client.widgets.layout.RowLayoutData;
25
import com.gwtext.client.widgets.layout.VerticalLayout;
-
 
26
 
26
 
27
 
27
 
28
/**
28
/**
29
 * Mediateur gérant les interactions entre vues et les echanges de données
29
 * Mediateur gérant les interactions entre vues et les echanges de données
30
 * C'est un singleton. 
30
 * C'est un singleton. 
31
 * @author aurelien
31
 * @author aurelien
32
 *
32
 *
33
 */
33
 */
34
public class ObservationMediateur {
34
public class ObservationMediateur {
35
	
35
	
36
	/**
36
	/**
37
	 * booleen qui verifie l'unicite de l'instance (donc static)
37
	 * booleen qui verifie l'unicite de l'instance (donc static)
38
	 */
38
	 */
39
	private static boolean estInstancie = false ;
39
	private static boolean estInstancie = false ;
40
 
40
 
41
	/**
41
	/**
42
	 * pointeur sur le médiateur (pour le pattern singleton)
42
	 * pointeur sur le médiateur (pour le pattern singleton)
43
	 */
43
	 */
44
	private static ObservationMediateur thisMediateur = null ;  
44
	private static ObservationMediateur thisMediateur = null ;  
45
	
45
	
46
	/** Mediateur general de l'application carnet en ligne
46
	/** Mediateur general de l'application carnet en ligne
47
	 * 
47
	 * 
48
	 * 
48
	 * 
49
	 */
49
	 */
50
	
50
	
51
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
51
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
52
	
52
	
53
	
53
	
54
	/**
54
	/**
55
	 * modele de données
55
	 * modele de données
56
	 */
56
	 */
57
	private ObservationModele observationModele = null ;
57
	private ObservationModele observationModele = null ;
58
	
58
	
59
	
59
	
60
	/**
60
	/**
61
	 * panneau principal des Observation (onglet "observation")
61
	 * panneau principal des Observation (onglet "observation")
62
	 */
62
	 */
63
	private final Panel panneauPrincipalObservation = new Panel("Observation");
63
	private final Panel panneauPrincipalObservation = new Panel("Observation");
64
	
64
	
65
	
65
	
66
	/**
66
	/**
67
	 * liste détaillée des Observations
67
	 * liste détaillée des Observations
68
	 */
68
	 */
69
	private ListeObservationVue listeObservation = null ;
69
	private ListeObservationVue listeObservation = null ;
70
	
70
	
71
	/**
71
	/**
72
	 * Saisie des Observations
72
	 * Saisie des Observations
73
	 */
73
	 */
74
	
74
	
75
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
75
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
76
	
76
	
77
	
77
	
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
	 * La liste des observations affichées en cours (verifier utilité)
87
	 * La liste des observations affichées en cours (verifier utilité)
88
	 */
88
	 */
89
	
89
	
90
	private ListeObservation cacheObservation = new ListeObservation(0) ;
90
	private ListeObservation cacheObservation = new ListeObservation(0) ;
91
	/**
91
	/**
92
	
92
	
93
	
93
	
94
	/**
94
	/**
95
	 * panneau conteneur pour le panneau  des informations lies à l'observation
95
	 * panneau conteneur pour le panneau  des informations lies à l'observation
96
	 */
96
	 */
97
	
97
	
98
  	private Panel details = new Panel("Détails");
98
  	private Panel details = new Panel("Détails");
99
 
99
 
100
 
100
 
101
 
101
 
102
	/**
102
	/**
103
	 * panneau conteneur pour le panneau des filtres
103
	 * panneau conteneur pour le panneau des filtres
104
	 */
104
	 */
105
	
105
	
106
  	private PanneauFiltresObservationVues filtres = null;
106
  	private PanneauFiltresObservationVues filtres = null;
107
 
107
 
108
	
108
	
109
  	
109
  	
110
  	/** 
110
  	/** 
111
  	 * panneau d'information de repartition sur le nom selectionné 
111
  	 * panneau d'information de repartition sur le nom selectionné 
112
  	 * 
112
  	 * 
113
  	 */
113
  	 */
114
  	
114
  	
115
  	private InformationRepartitionVue informationRepartitionVue=null;
115
  	private InformationRepartitionVue informationRepartitionVue=null;
116
  	
116
  	
117
  	
117
  	
118
  	/** 
118
  	/** 
119
  	 * panneau d'affichage d'une image generique associe au nom selectionne 
119
  	 * panneau d'affichage d'une image generique associe au nom selectionne 
120
  	 * 
120
  	 * 
121
  	 */
121
  	 */
122
  	
122
  	
123
  	private ImageGeneriqueVue imageGeneriqueVue=null;
123
  	private ImageGeneriqueVue imageGeneriqueVue=null;
124
 
124
 
125
	private ArbreEntiteGeographiqueObservationFiltreVue arbreEntiteGeographiqueObservationFiltreVue=null;
125
	private ArbreEntiteGeographiqueObservationFiltreVue arbreEntiteGeographiqueObservationFiltreVue=null;
126
  	
126
  	
127
  	
127
  	
128
	/**
128
	/**
129
	 * constructeur privé (on accède a la classe par la méthode getInstance
129
	 * constructeur privé (on accède a la classe par la méthode getInstance
130
	 */
130
	 */
131
	
131
	
132
	
132
	
133
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
133
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
134
	{
134
	{
135
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
135
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
136
		
136
		
137
		
137
		
138
		// on crée un modèle
138
		// on crée un modèle
139
		observationModele = ObservationModele.Instance(this);
139
		observationModele = ObservationModele.Instance(this);
140
		
140
		
141
		
141
		
142
	
142
	
143
		listeObservation = new ListeObservationVue(this);
143
		listeObservation = new ListeObservationVue(this);
144
		listeObservation.setTitle("Observations");
144
		listeObservation.setTitle("Observations");
145
		
145
		
146
		// quelques variables de position pour les borderlayouts
146
		// quelques variables de position pour les borderlayouts
147
		final BorderLayoutData regionNord = new BorderLayoutData(
147
		final BorderLayoutData regionNord = new BorderLayoutData(
148
				RegionPosition.NORTH);
148
				RegionPosition.NORTH);
149
 
149
 
150
		final BorderLayoutData regionCentre = new BorderLayoutData(
150
		final BorderLayoutData regionCentre = new BorderLayoutData(
151
				RegionPosition.CENTER);
151
				RegionPosition.CENTER);
152
 
152
 
153
		  
153
		  
154
		final BorderLayoutData regionEst = new BorderLayoutData(
154
		final BorderLayoutData regionEst = new BorderLayoutData(
155
				RegionPosition.EAST);
155
				RegionPosition.EAST);
156
	
156
	
157
			
157
			
158
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted
158
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted
159
			regionEst.setSplit(true);
159
			regionEst.setSplit(true);
160
		}
160
		}
161
 
161
 
162
		final BorderLayoutData regionOuest = new BorderLayoutData(
162
		final BorderLayoutData regionOuest = new BorderLayoutData(
163
				RegionPosition.WEST);
163
				RegionPosition.WEST);
164
		
164
		
165
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted			
165
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted			
166
			regionOuest.setSplit(true);
166
			regionOuest.setSplit(true);
167
		}
167
		}
168
		
168
		
169
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
169
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
170
		
170
		
171
		
171
		
172
		// Le formulaire de saisie / modification d'observation
172
		// Le formulaire de saisie / modification d'observation
173
		
173
		
174
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
174
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
175
		formulaireSaisieObservationVue.setTitle("Saisie");
175
		formulaireSaisieObservationVue.setTitle("Saisie");
176
		formulaireSaisieObservationVue.setTitleCollapse(true);
176
		formulaireSaisieObservationVue.setTitleCollapse(true);
177
	 	formulaireSaisieObservationVue.setCollapsible(true) ;
177
	 	formulaireSaisieObservationVue.setCollapsible(true) ;
178
		
178
		
179
 
179
 
180
		Panel centre = new Panel();
180
		Panel centre = new Panel();
181
		centre.setLayout(new RowLayout()) ;
181
		centre.setLayout(new RowLayout()) ;
182
 
182
 
183
		centre.setHeight(panneauPrincipalObservation.getHeight()) ;
183
		centre.setHeight(panneauPrincipalObservation.getHeight()) ;
184
		
184
		
185
		centre.add(formulaireSaisieObservationVue, new RowLayoutData("30%")) ;
185
		centre.add(formulaireSaisieObservationVue, new RowLayoutData("30%")) ;
186
		centre.add(listeObservation, new RowLayoutData("70%"));
186
		centre.add(listeObservation, new RowLayoutData("70%"));
187
 
187
 
188
		// on initialise le volet qui contient les details
188
		// on initialise le volet qui contient les details
189
		details.setWidth("15%");
189
		details.setWidth("15%");
190
		details.setTitleCollapse(true);
190
		details.setTitleCollapse(true);
191
		details.setCollapsible(true);
191
		details.setCollapsible(true);
192
		details.setLayout(new RowLayout());
192
		details.setLayout(new RowLayout());
193
		
193
		
194
		
194
		
195
		
195
		
196
		// Information de repartition
196
		// Information de repartition
197
		informationRepartitionVue=new InformationRepartitionVue(this);
197
		informationRepartitionVue=new InformationRepartitionVue(this);
198
		// TODO : calcul de la hauteur automatique par le panel ?
198
		// TODO : calcul de la hauteur automatique par le panel ?
199
		informationRepartitionVue.setHeight(160);
199
		informationRepartitionVue.setHeight(160);
200
		details.add(informationRepartitionVue);
200
		details.add(informationRepartitionVue);
201
		
201
		
202
		
202
		
203
		// Image generique
203
		// Image generique
204
		imageGeneriqueVue=new ImageGeneriqueVue(this);
204
		imageGeneriqueVue=new ImageGeneriqueVue(this);
205
		// TODO : calcul de la hauteur automatique par le panel ?
205
		// TODO : calcul de la hauteur automatique par le panel ?
206
		
206
		
207
		imageGeneriqueVue.setHeight(160);
207
		imageGeneriqueVue.setHeight(160);
208
		details.add(imageGeneriqueVue);
208
		details.add(imageGeneriqueVue);
209
		
209
		
210
		
210
		
211
		// on crée le panneau des filtres
211
		// on crée le panneau des filtres
212
		filtres = new PanneauFiltresObservationVues(this);
212
		filtres = new PanneauFiltresObservationVues(this);
213
		
213
		
214
		// on initialise le volet qui contient les filtres
214
		// on initialise le volet qui contient les filtres
215
		filtres.setWidth("15%");
215
		filtres.setWidth("15%");
216
		filtres.setTitleCollapse(true);
216
		filtres.setTitleCollapse(true);
217
		filtres.setCollapsible(true);
217
		filtres.setCollapsible(true);
218
		
218
		
219
		panneauPrincipalObservation.add(details,regionEst);
219
		panneauPrincipalObservation.add(details,regionEst);
220
		panneauPrincipalObservation.add(filtres,regionOuest);
220
		panneauPrincipalObservation.add(filtres,regionOuest);
221
		panneauPrincipalObservation.add(centre,regionCentre);
221
		panneauPrincipalObservation.add(centre,regionCentre);
222
		
222
		
223
	}
223
	}
224
 
224
 
225
 
225
 
226
	/**
226
	/**
227
	 * Retourne une instance de manière unique
227
	 * Retourne une instance de manière unique
228
	 * @return l'instance unique du médiateur
228
	 * @return l'instance unique du médiateur
229
	 */
229
	 */
230
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
230
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
231
	{
231
	{
232
			if(!estInstancie || thisMediateur == null)
232
			if(!estInstancie || thisMediateur == null)
233
			{
233
			{
234
				estInstancie = true ;
234
				estInstancie = true ;
235
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
235
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
236
			}
236
			}
-
 
237
			
237
			
238
	
238
			return thisMediateur ;	
239
			return thisMediateur ;	
-
 
240
	}
-
 
241
 
-
 
242
	
-
 
243
	
-
 
244
	// ACTIONS  a entreprendre lors d'un evenement particulier 
-
 
245
	
-
 
246
	
-
 
247
	/**
-
 
248
	 * Lors du raffraichissement de la liste d'observation  
-
 
249
	 */
-
 
250
	
-
 
251
	
-
 
252
	public void onRafraichissementListeObservations() {
-
 
253
		
-
 
254
		obtenirListeEntiteGeographique();
-
 
255
		
-
 
256
		
-
 
257
		cacheObservation = listeObservation.getCacheListeObservation() ;
-
 
258
		if(cacheObservation.size() == 0)
-
 
259
		{
-
 
260
			formulaireSaisieObservationVue.viderChampsObservation() ;
-
 
261
		}
-
 
262
		carnetEnLigneMediateur.donneesRafraichies(cacheObservation) ;
-
 
263
 
-
 
264
		
-
 
265
	}
-
 
266
	
-
 
267
	/**
-
 
268
	 * 
-
 
269
	 * TODO : fonction plus generique, appelle sur un clic ou une selection de ligne, a appeller : SelectionnerObservation 
-
 
270
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
-
 
271
	 * médiateur gère alors les conséquences
-
 
272
	 * 
-
 
273
	 * @param rowIndex
-
 
274
	 *            le numéro de ligne selectionné
-
 
275
	 */
-
 
276
	
-
 
277
	public void onClicListeObservation(int rowIndex, String ordreObservation) {
-
 
278
	
-
 
279
		
-
 
280
		Observation obs = cacheObservation.get(ordreObservation) ;
-
 
281
		
-
 
282
		// Affichage de la carte de repartition correspondante
-
 
283
		String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalSaisi() ;
-
 
284
		
-
 
285
		observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
-
 
286
 
-
 
287
		// affichage des détails dans le formulaire d'observation
-
 
288
		formulaireSaisieObservationVue.rafraichir(obs, false) ;
-
 
289
 
-
 
290
		// Affichage de l'image correspondante
-
 
291
				
-
 
292
		observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
-
 
293
 
-
 
294
 
-
 
295
	}
-
 
296
	
-
 
297
	
-
 
298
 
-
 
299
 
-
 
300
	
-
 
301
	// ACCES au Modèle 
-
 
302
	
-
 
303
	
-
 
304
	// C du CRUD 
-
 
305
	
-
 
306
	
-
 
307
	
-
 
308
	/**
-
 
309
	 * TODO : afficher un message du type "observation ajouté".  
-
 
310
	 * Lance la creation d'une observation
-
 
311
	 * @param obs : l'observation saisie
-
 
312
	 */
-
 
313
	
-
 
314
	
-
 
315
	
-
 
316
	public void ajouterObservation(Observation obs) {
-
 
317
	
-
 
318
		
-
 
319
	  // On raffraichi la liste d'observation 
-
 
320
	  observationModele.ajouterObservation(listeObservation, obs) ;
-
 
321
		
-
 
322
	}
-
 
323
	
239
	}
324
	
240
	
325
	
241
	
326
	// R du CRUD 
242
	
327
	
243
	/**
328
	/**
244
	 * Demande au modele le nombre d'Observation à afficher
329
	 * Demande au modele le nombre d'Observation à afficher
245
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
330
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
246
	 */
331
	 */
247
 
332
 
248
	public void obtenirNombreObservation() {
333
	public void obtenirNombreObservation() {
249
		
334
		
250
	
335
	
251
		  observationModele.obtenirNombreObservation(listeObservation) ;
336
		  observationModele.obtenirNombreObservation(listeObservation) ;
252
		
337
		
253
	}
338
	}
254
 
339
 
-
 
340
	
-
 
341
	
-
 
342
	public void obtenirListeObservation() {
-
 
343
		obtenirListeObservation(listeObservation);
-
 
344
	}
255
	
345
	
256
	/**
346
	/**
257
	 * Demande au modele le detail  dess Observations à afficher
347
	 * Demande au modele le detail  des Observations à afficher
258
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
-
 
259
	 * @param r : la vue demandeuse de donnee
348
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
260
	 */
-
 
261
 
-
 
262
 
-
 
263
	public void obtenirListeObservation() {
-
 
264
		
-
 
265
		listeObservation.masquerChargement() ;
-
 
266
		formulaireSaisieObservationVue.viderChampsObservation() ;
-
 
267
		observationModele.obtenirListeObservation(listeObservation,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
-
 
268
			
349
	 */
269
	}	
350
 
270
	
351
	
271
	public void obtenirListeObservation(Rafraichissable r) {
352
	public void obtenirListeObservation(Rafraichissable r) {
272
		
353
		
273
		listeObservation.masquerChargement() ;
354
		listeObservation.masquerChargement() ;
274
		formulaireSaisieObservationVue.viderChampsObservation() ;
355
		formulaireSaisieObservationVue.viderChampsObservation() ;
275
		observationModele.obtenirListeObservation(r,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
356
		observationModele.obtenirListeObservation(r,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
276
	}
357
	}
-
 
358
	
277
	
359
 
278
	/**
360
	/**
-
 
361
	 * Envoie au modèle une demande pour obtenir l'arbre des localites
279
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
362
	 * 
280
	 * sous forme de tableau [nom, valeur]
363
	 * @param r
281
	 * @return Les noms et valeurs des filtres
364
	 *            le raffraichissable qui a demandé la mise à jour
282
	 */
365
	 */
283
	public String[][] renvoyerFiltres()
-
 
284
	{
-
 
-
 
366
	public void obtenirListeEntiteGeographique() {
285
		String[][] valeursFiltres = { {"",""} } ;
-
 
286
		
367
		
-
 
368
		observationModele.obtenirListeEntiteGeographique(filtres.getarbreEntiteGeographiqueObservationFiltreVue());
287
		
369
		
-
 
370
	}
-
 
371
	
-
 
372
	
288
		return valeursFiltres ;
-
 
289
	}
-
 
290
 
-
 
291
 
-
 
292
	
373
	// U du CRUD
293
	/**
-
 
294
	 * Retourne l'identifiant de l'utilisateur connecte
-
 
-
 
374
	
-
 
375
	
-
 
376
 
-
 
377
	
295
	 * @return : identifiant de l'utilisateur connecte
378
	public void modifierObservation(Observation obs) {
-
 
379
	
296
	 */
380
		
-
 
381
	  // On raffraichi la liste d'observation 
-
 
382
	  observationModele.modifierObservation(listeObservation, obs) ;
-
 
383
		
297
	public String getIdentifiant() {
384
	}
298
		
385
	
299
		return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
-
 
-
 
386
	
-
 
387
	
300
	
388
	// D du CRUD
301
	}
-
 
302
 
389
	
-
 
390
	
-
 
391
	/**
-
 
392
	 * TODO : afficher un message du type "observation modifie".  
-
 
393
	 * Lance la modification d'une observation
303
 
394
	 * @param obs : l'observation a modifier
-
 
395
	 */
-
 
396
	
304
	/**
397
	
-
 
398
	
-
 
399
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
-
 
400
		
305
	 * 
401
		if(listeObservation.getSelectionModel().getCount() > 0)
-
 
402
		{
-
 
403
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
-
 
404
			observationModele.supprimerObservation(r,numeroOrdre) ;
-
 
405
			}
306
	 * @return
406
		}
307
	 * 
-
 
308
	 */
407
		
309
	
408
	}
310
	public Panel getPanneauPrincipalObservation() {
409
	
311
		return panneauPrincipalObservation;
410
	
312
	}
411
	
313
	
412
	
314
 
413
 
315
 
414
	// Assistants de saisie
316
 
415
	
317
	/**
416
	/**
318
	 *  
417
	 *  
319
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne 
418
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne 
320
	 * @param r : la vue demandeuse de donnee
419
	 * @param r : la vue demandeuse de donnee
321
	 * @param critere : les criteres de selection
420
	 * @param critere : les criteres de selection
322
	 */
421
	 */
323
	
422
	
324
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
423
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
325
		
424
		
326
		observationModele.obtenirListeReferentielCommune(r,critere) ;
425
		observationModele.obtenirListeReferentielCommune(r,critere) ;
327
 
426
 
328
		
427
		
329
	}
428
	}
-
 
429
	
-
 
430
	
330
	
431
	
331
	/**
432
	/**
332
	 *  
433
	 *  
333
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne 
434
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne 
334
	 * @param r : la vue demandeuse de donnee
435
	 * @param r : la vue demandeuse de donnee
335
	 * @param critere : les criteres de selection
436
	 * @param critere : les criteres de selection
336
	 */
437
	 */
337
	
438
	
338
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
439
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
339
		
440
		
340
		observationModele.obtenirListeReferentielNom(r,critere) ;
441
		observationModele.obtenirListeReferentielNom(r,critere) ;
341
 
442
 
342
		
443
		
343
	}
444
	}
344
 
-
 
345
	
-
 
346
	/**
-
 
347
	 * TODO : afficher un message du type "observation ajouté".  
-
 
348
	 * Lance la creation d'une observation
-
 
349
	 * @param obs : l'observation saisie
-
 
350
	 */
-
 
-
 
445
	
-
 
446
	
351
	
447
 
-
 
448
 
-
 
449
	
-
 
450
	// Etat du syteme
-
 
451
	
-
 
452
	/**
-
 
453
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
-
 
454
	 * sous forme de tableau [nom, valeur]
-
 
455
	 * @return Les noms et valeurs des filtres
352
	
-
 
353
	
-
 
-
 
456
	 */
354
	public void ajouterObservation(Observation obs) {
457
	public String[][] renvoyerFiltres()
355
	
-
 
356
		
458
	{
357
	  // On raffraichi la liste d'observation 
459
		String[][] valeursFiltres = { {"",""} } ;
358
	  observationModele.ajouterObservation(listeObservation, obs) ;
-
 
359
		
460
		
360
	}
461
		
361
	
462
		return valeursFiltres ;
362
	
-
 
363
	
-
 
364
	/**
-
 
365
	 * TODO : afficher un message du type "observation modifie".  
463
	}
366
	 * Lance la modification d'une observation
-
 
367
	 * @param obs : l'observation a modifier
-
 
368
	 */
-
 
369
	
-
 
370
	
-
 
-
 
464
 
371
	
-
 
372
	public void modifierObservation(Observation obs) {
-
 
373
	
-
 
374
		
-
 
375
	  // On raffraichi la liste d'observation 
-
 
376
	  observationModele.modifierObservation(listeObservation, obs) ;
-
 
377
		
-
 
378
	}
-
 
379
	
-
 
380
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
465
	
381
		
466
	/**
382
		if(listeObservation.getSelectionModel().getCount() > 0)
467
	 * Retourne l'identifiant de l'utilisateur connecte
383
		{
468
	 * @return : identifiant de l'utilisateur connecte
384
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
469
	 */
385
			observationModele.supprimerObservation(r,numeroOrdre) ;
-
 
386
			}
-
 
387
		}
470
	public String getIdentifiant() {
388
		
471
		
389
	}
-
 
390
	
-
 
391
	
472
		return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
392
	/**
473
	
-
 
474
	}
-
 
475
 
393
	 * 
-
 
394
	 * TODO : fonction plus generique, appelle sur un clic ou une selection de ligne, a appeller : SelectionnerObservation 
-
 
395
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
-
 
396
	 * médiateur gère alors les conséquences
-
 
397
	 * 
-
 
398
	 * @param rowIndex
-
 
399
	 *            le numéro de ligne selectionné
-
 
400
	 */
-
 
401
	
-
 
402
	public void clicListeObservation(int rowIndex, String ordreObservation) {
-
 
403
	
-
 
404
		
-
 
405
		Observation obs = cacheObservation.get(ordreObservation) ;
-
 
406
		
-
 
407
		// Affichage de la carte de repartition correspondante
-
 
408
		String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalSaisi() ;
476
 
409
		
477
	/**
410
		observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
478
	 * 
411
 
479
	 * @return
412
		// affichage des détails dans le formulaire d'observation
480
	 * 
413
		formulaireSaisieObservationVue.rafraichir(obs, false) ;
481
	 */
414
 
482
	
415
		// Affichage de l'image correspondante
483
	public Panel getPanneauPrincipalObservation() {
416
				
484
		return panneauPrincipalObservation;
417
		observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
485
	}
418
 
486
	
419
 
487
 
420
	}
488
 
421
	
489
 
422
	
490
 
423
		
491
		
424
 
492
 
425
 
493
 
426
	public void montrerContextMenu(EventObject e) {
494
	public void montrerContextMenu(EventObject e) {
427
		
495
		
428
		
496
		
429
		
497
		
430
	}
498
	}
431
 
499
 
432
	public void doubleClicListeObservation(int rowIndex) {
500
	public void doubleClicListeObservation(int rowIndex) {
433
		
501
		
434
		
502
		
435
	}
503
	}
436
 
504
 
-
 
505
 
-
 
506
	
-
 
507
	// Getters 
437
 
508
	
438
	public PanneauFiltresObservationVues getPanneauFiltres() {
509
	public PanneauFiltresObservationVues getPanneauFiltres() {
439
		
510
		
440
		return filtres;
511
		return filtres;
441
		
512
		
442
	}
513
	}
443
 
514
 
444
 
-
 
445
	/**
-
 
446
	 * Envoie au modèle une demande pour obtenir l'arbre des localites
-
 
447
	 * 
-
 
448
	 * @param r
-
 
449
	 *            le raffraichissable qui a demandé la mise à jour
-
 
450
	 */
-
 
451
	public void obtenirListeEntiteGeographique() {
-
 
452
		
-
 
453
		observationModele.obtenirListeEntiteGeographique(filtres.getarbreEntiteGeographiqueObservationFiltreVue());
-
 
454
		
-
 
455
	}
515
 
456
 
-
 
457
 
-
 
458
	public void donneesRafraichies(Object nouvelleDonnees) {
-
 
459
		
-
 
460
		carnetEnLigneMediateur.donneesRafraichies(nouvelleDonnees) ;
-
 
461
		
-
 
462
	}
-
 
463
 
-
 
464
 
-
 
465
	public void rafraichirCacheObservation(Object nouvelleDonnees) {
-
 
466
		
-
 
467
		if(nouvelleDonnees instanceof ListeObservation) {
-
 
468
			cacheObservation = (ListeObservation)nouvelleDonnees ;
-
 
469
			if(cacheObservation.size() == 0)
-
 
470
			{
-
 
471
				formulaireSaisieObservationVue.viderChampsObservation() ;
-
 
472
			}
516
 
473
			donneesRafraichies(nouvelleDonnees) ;
517
	
474
		}
518
 
475
	}	
519
 
476
	
520
	
477
}
521
}