Subversion Repositories eFlore/Applications.cel

Rev

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

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