Subversion Repositories eFlore/Applications.cel

Rev

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

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