Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1488 Rev 1542
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
import org.tela_botanica.client.CarnetEnLigneMediateur;
6
import org.tela_botanica.client.CarnetEnLigneMediateur;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
8
import org.tela_botanica.client.modeles.objets.Configuration;
8
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
9
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
-
 
10
import org.tela_botanica.client.modeles.objets.InfosReferentielNom;
9
import org.tela_botanica.client.modeles.objets.ListeObservation;
11
import org.tela_botanica.client.modeles.objets.ListeObservation;
10
import org.tela_botanica.client.modeles.objets.Observation;
12
import org.tela_botanica.client.modeles.objets.Observation;
11
import org.tela_botanica.client.modeles.objets.Utilisateur;
13
import org.tela_botanica.client.modeles.objets.Utilisateur;
12
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels;
14
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels;
13
import org.tela_botanica.client.vues.observation.CartographieObservationVue;
15
import org.tela_botanica.client.vues.observation.CartographieObservationVue;
14
import org.tela_botanica.client.vues.observation.FormulaireImportObservationVue;
16
import org.tela_botanica.client.vues.observation.FormulaireImportObservationVue;
15
import org.tela_botanica.client.vues.observation.FormulaireSaisieObservationVue;
17
import org.tela_botanica.client.vues.observation.FormulaireSaisieObservationVue;
16
import org.tela_botanica.client.vues.observation.ListeObservationVue;
18
import org.tela_botanica.client.vues.observation.ListeObservationVue;
17
import org.tela_botanica.client.vues.observation.MenuObservationVue;
19
import org.tela_botanica.client.vues.observation.MenuObservationVue;
18
import org.tela_botanica.client.vues.observation.PanneauFiltresObservationVues;
20
import org.tela_botanica.client.vues.observation.PanneauFiltresObservationVues;
19
import org.tela_botanica.client.vues.observation.indicateurs.ImageGeneriqueVue;
21
import org.tela_botanica.client.vues.observation.indicateurs.ImageGeneriqueVue;
20
import org.tela_botanica.client.vues.observation.indicateurs.InformationRepartitionVue;
22
import org.tela_botanica.client.vues.observation.indicateurs.InformationRepartitionVue;
21
import org.tela_botanica.client.vues.observation.indicateurs.LienExterneVue;
23
import org.tela_botanica.client.vues.observation.indicateurs.LienExterneVue;
22
import org.tela_botanica.client.vues.observation.indicateurs.MiniZoomImageVue;
24
import org.tela_botanica.client.vues.observation.indicateurs.MiniZoomImageVue;
23
 
25
 
24
import com.google.gwt.core.client.GWT;
26
import com.google.gwt.core.client.GWT;
25
import com.google.gwt.maps.client.geom.LatLng;
27
import com.google.gwt.maps.client.geom.LatLng;
26
import com.google.gwt.user.client.History;
28
import com.google.gwt.user.client.History;
27
import com.google.gwt.user.client.Window;
29
import com.google.gwt.user.client.Window;
28
import com.gwtext.client.core.EventObject;
30
import com.gwtext.client.core.EventObject;
29
import com.gwtext.client.core.Ext;
31
import com.gwtext.client.core.Ext;
30
import com.gwtext.client.core.ExtElement;
32
import com.gwtext.client.core.ExtElement;
31
import com.gwtext.client.core.RegionPosition;
33
import com.gwtext.client.core.RegionPosition;
32
import com.gwtext.client.data.Record;
34
import com.gwtext.client.data.Record;
33
import com.gwtext.client.data.Tree;
35
import com.gwtext.client.data.Tree;
34
import com.gwtext.client.dd.DragData;
36
import com.gwtext.client.dd.DragData;
35
import com.gwtext.client.widgets.BoxComponent;
37
import com.gwtext.client.widgets.BoxComponent;
36
import com.gwtext.client.widgets.Component;
38
import com.gwtext.client.widgets.Component;
37
import com.gwtext.client.widgets.Container;
39
import com.gwtext.client.widgets.Container;
38
import com.gwtext.client.widgets.Panel;
40
import com.gwtext.client.widgets.Panel;
39
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
41
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
40
import com.gwtext.client.widgets.event.PanelListenerAdapter;
42
import com.gwtext.client.widgets.event.PanelListenerAdapter;
41
import com.gwtext.client.widgets.grid.GridDragData;
43
import com.gwtext.client.widgets.grid.GridDragData;
42
import com.gwtext.client.widgets.layout.BorderLayout;
44
import com.gwtext.client.widgets.layout.BorderLayout;
43
import com.gwtext.client.widgets.layout.BorderLayoutData;
45
import com.gwtext.client.widgets.layout.BorderLayoutData;
44
import com.gwtext.client.widgets.layout.FitLayout;
46
import com.gwtext.client.widgets.layout.FitLayout;
45
import com.gwtext.client.widgets.layout.RowLayout;
47
import com.gwtext.client.widgets.layout.RowLayout;
46
import com.gwtext.client.widgets.layout.RowLayoutData;
48
import com.gwtext.client.widgets.layout.RowLayoutData;
47
import com.gwtext.client.widgets.tree.TreeNode;
49
import com.gwtext.client.widgets.tree.TreeNode;
48
 
50
 
49
 
51
 
50
/**
52
/**
51
 * Mediateur gérant les interactions entre vues et les echanges de données
53
 * Mediateur gérant les interactions entre vues et les echanges de données
52
 * C'est un singleton. 
54
 * C'est un singleton. 
53
 * @author aurelien
55
 * @author aurelien
54
 *
56
 *
55
 */
57
 */
56
public class ObservationMediateur {
58
public class ObservationMediateur {
57
	
59
	
58
	/**
60
	/**
59
	 * booleen qui verifie l'unicite de l'instance (donc static)
61
	 * booleen qui verifie l'unicite de l'instance (donc static)
60
	 */
62
	 */
61
	private static boolean estInstancie = false ;
63
	private static boolean estInstancie = false ;
62
 
64
 
63
	/**
65
	/**
64
	 * pointeur sur le médiateur (pour le pattern singleton)
66
	 * pointeur sur le médiateur (pour le pattern singleton)
65
	 */
67
	 */
66
	private static ObservationMediateur thisMediateur = null ;  
68
	private static ObservationMediateur thisMediateur = null ;  
67
	
69
	
68
	/** Mediateur general de l'application carnet en ligne
70
	/** Mediateur general de l'application carnet en ligne
69
	 * 
71
	 * 
70
	 * 
72
	 * 
71
	 */
73
	 */
72
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
74
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
73
	
75
	
74
	
76
	
75
	/**
77
	/**
76
	 * modele de données
78
	 * modele de données
77
	 */
79
	 */
78
	private ObservationModele observationModele = null ;
80
	private ObservationModele observationModele = null ;
79
	
81
	
80
	
82
	
81
	/**
83
	/**
82
	 * panneau principal des Observation (onglet "observation")
84
	 * panneau principal des Observation (onglet "observation")
83
	 */
85
	 */
84
	private final Panel panneauPrincipalObservation = new Panel("Observations");
86
	private final Panel panneauPrincipalObservation = new Panel("Observations");
85
	
87
	
86
	
88
	
87
	/**
89
	/**
88
	 * liste détaillée des Observations
90
	 * liste détaillée des Observations
89
	 */
91
	 */
90
	public ListeObservationVue listeObservation = null ;
92
	public ListeObservationVue listeObservation = null ;
91
	
93
	
92
	/**
94
	/**
93
	 * Saisie des Observations
95
	 * Saisie des Observations
94
	 */
96
	 */
95
	
97
	
96
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
98
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
97
	
99
	
98
	
100
	
99
	/**
101
	/**
100
	 * 
102
	 * 
101
	 * Import des observations depuis un fichier
103
	 * Import des observations depuis un fichier
102
	 * 
104
	 * 
103
	 */
105
	 */
104
	
106
	
105
	private FormulaireImportObservationVue formImportObs=null;
107
	private FormulaireImportObservationVue formImportObs=null;
106
	
108
	
107
	
109
	
108
	/**
110
	/**
109
	 * Cartographie
111
	 * Cartographie
110
	 */
112
	 */
111
	private CartographieObservationVue cartoObservationVue = null;
113
	private CartographieObservationVue cartoObservationVue = null;
112
	
114
	
113
	
115
	
114
 
116
 
115
	/**
117
	/**
116
	 * booleen explicitant s'il y a une selection en cours
118
	 * booleen explicitant s'il y a une selection en cours
117
	 */
119
	 */
118
	private boolean selection = false ;		
120
	private boolean selection = false ;		
119
	/**
121
	/**
120
	 * panneau conteneur pour le panneau  des informations lies à l'observation
122
	 * panneau conteneur pour le panneau  des informations lies à l'observation
121
	 */
123
	 */
122
	
124
	
123
  	private Panel details = new Panel("Details");
125
  	private Panel details = new Panel("Details");
124
 
126
 
125
  	private LienExterneVue liExtVue = null;
127
  	private LienExterneVue liExtVue = null;
126
 
128
 
127
	/**
129
	/**
128
	 * panneau conteneur pour le panneau des filtres
130
	 * panneau conteneur pour le panneau des filtres
129
	 */
131
	 */
130
	
132
	
131
  	private PanneauFiltresObservationVues filtres = null;
133
  	private PanneauFiltresObservationVues filtres = null;
132
 
134
 
133
	
135
	
134
  	
136
  	
135
  	/** 
137
  	/** 
136
  	 * panneau d'information de repartition sur le nom selectionné 
138
  	 * panneau d'information de repartition sur le nom selectionné 
137
  	 * 
139
  	 * 
138
  	 */
140
  	 */
139
  	
141
  	
140
  	private InformationRepartitionVue informationRepartitionVue=null;
142
  	private InformationRepartitionVue informationRepartitionVue=null;
141
  	
143
  	
142
  	
144
  	
143
  	/** 
145
  	/** 
144
  	 * panneau d'affichage d'une image generique associe au nom selectionne 
146
  	 * panneau d'affichage d'une image generique associe au nom selectionne 
145
  	 * 
147
  	 * 
146
  	 */
148
  	 */
147
  	
149
  	
148
  	private ImageGeneriqueVue imageGeneriqueVue=null;
150
  	private ImageGeneriqueVue imageGeneriqueVue=null;
149
  	
151
  	
150
  	private MiniZoomImageVue mvz = null ;
152
  	private MiniZoomImageVue mvz = null ;
151
  	
153
  	
152
  	private boolean importerObservations = false ;
154
  	private boolean importerObservations = false ;
153
 
155
 
154
	private com.gwtext.client.widgets.Window fenetreCarto;
156
	private com.gwtext.client.widgets.Window fenetreCarto;
155
	public boolean changementTabProg = false;
157
	public boolean changementTabProg = false;
-
 
158
	
-
 
159
	private InfosReferentielNom refTaxSelectionne = null;
156
 
160
 
157
	private Panel centre;
161
	private Panel centre;
158
  	
162
  	
159
	/**
163
	/**
160
	 * constructeur privé (on accède a la classe par la méthode getInstance
164
	 * constructeur privé (on accède a la classe par la méthode getInstance
161
	 */
165
	 */
162
	
166
	
163
	
167
	
164
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
168
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
165
	{
169
	{
166
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
170
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;					
167
				
-
 
168
		// on crée un modèle
171
		// on crée un modèle
169
		observationModele = ObservationModele.Instance(this);
172
		observationModele = ObservationModele.Instance(this);
-
 
173
		
-
 
174
		// initialisation du référentiel par défaut
170
		
175
		setRefTaxSelectionne(Configuration.getReferentielsDispos().get(0));	
171
	
176
	
172
		listeObservation = new ListeObservationVue(this);
177
		listeObservation = new ListeObservationVue(this);
173
		listeObservation.setTitle("Observations");
178
		listeObservation.setTitle("Observations");
174
		
179
		
175
		// quelques variables de position pour les borderlayouts
180
		// quelques variables de position pour les borderlayouts
176
		final BorderLayoutData regionNord = new BorderLayoutData(
181
		final BorderLayoutData regionNord = new BorderLayoutData(
177
				RegionPosition.NORTH);
182
				RegionPosition.NORTH);
178
 
183
 
179
		final BorderLayoutData regionCentre = new BorderLayoutData(
184
		final BorderLayoutData regionCentre = new BorderLayoutData(
180
				RegionPosition.CENTER);
185
				RegionPosition.CENTER);
181
		regionCentre.setSplit(true);
186
		regionCentre.setSplit(true);
182
 
187
 
183
		  
188
		  
184
		final BorderLayoutData regionEst = new BorderLayoutData(
189
		final BorderLayoutData regionEst = new BorderLayoutData(
185
				RegionPosition.EAST);
190
				RegionPosition.EAST);
186
		regionEst.setSplit(true);
191
		regionEst.setSplit(true);
187
	
192
	
188
 
193
 
189
		final BorderLayoutData regionOuest = new BorderLayoutData(
194
		final BorderLayoutData regionOuest = new BorderLayoutData(
190
				RegionPosition.WEST);
195
				RegionPosition.WEST);
191
		regionOuest.setSplit(true);
196
		regionOuest.setSplit(true);
192
		
197
		
193
		
198
		
194
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
199
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
195
		cartoObservationVue = new CartographieObservationVue(this);
200
		cartoObservationVue = new CartographieObservationVue(this);
196
		cartoObservationVue.setLayout(new FitLayout());
201
		cartoObservationVue.setLayout(new FitLayout());
197
		
202
		
198
		// Le formulaire de saisie / modification d'observation
203
		// Le formulaire de saisie / modification d'observation
199
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
204
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
200
		formulaireSaisieObservationVue.setTitle("Saisie");
205
		formulaireSaisieObservationVue.setTitle("Saisie");
201
		formulaireSaisieObservationVue.setTitleCollapse(true);
206
		formulaireSaisieObservationVue.setTitleCollapse(true);
202
		formulaireSaisieObservationVue.setCollapsible(true) ;
207
		formulaireSaisieObservationVue.setCollapsible(true) ;
203
		formulaireSaisieObservationVue.setAutoScroll(true) ;
208
		formulaireSaisieObservationVue.setAutoScroll(true) ;
204
		
209
		
205
		fenetreCarto = new com.gwtext.client.widgets.Window();
210
		fenetreCarto = new com.gwtext.client.widgets.Window();
206
		fenetreCarto.setConstrain(true);
211
		fenetreCarto.setConstrain(true);
207
		fenetreCarto.setModal(true);
212
		fenetreCarto.setModal(true);
208
		
213
		
209
		fenetreCarto.add(cartoObservationVue);
214
		fenetreCarto.add(cartoObservationVue);
210
		
215
		
211
		formulaireSaisieObservationVue.addListener(
216
		formulaireSaisieObservationVue.addListener(
212
		new PanelListenerAdapter() {
217
		new PanelListenerAdapter() {
213
			@Override
218
			@Override
214
			public void onCollapse(Panel panel)  {
219
			public void onCollapse(Panel panel)  {
215
				CarnetEnLigneMediateur.fireResize();
220
				CarnetEnLigneMediateur.fireResize();
216
			}
221
			}
217
		    @Override
222
		    @Override
218
			public void onExpand(Panel panel) {
223
			public void onExpand(Panel panel) {
219
		    	CarnetEnLigneMediateur.fireResize();
224
		    	CarnetEnLigneMediateur.fireResize();
220
		    }
225
		    }
221
		});
226
		});
222
		
227
		
223
		centre = new Panel();
228
		centre = new Panel();
224
		centre.setLayout(new BorderLayout());
229
		centre.setLayout(new BorderLayout());
225
		centre.setAutoScroll(true);
230
		centre.setAutoScroll(true);
226
		centre.setBorder(false);
231
		centre.setBorder(false);
227
		
232
		
228
		centre.addListener(
233
		centre.addListener(
229
			new PanelListenerAdapter() {
234
			new PanelListenerAdapter() {
230
				@Override
235
				@Override
231
				public void onCollapse(Panel panel)  {
236
				public void onCollapse(Panel panel)  {
232
					CarnetEnLigneMediateur.fireResize();
237
					CarnetEnLigneMediateur.fireResize();
233
				}
238
				}
234
			    @Override
239
			    @Override
235
				public void onExpand(Panel panel) {
240
				public void onExpand(Panel panel) {
236
			    	CarnetEnLigneMediateur.fireResize();
241
			    	CarnetEnLigneMediateur.fireResize();
237
			    }
242
			    }
238
			    
243
			    
239
				@Override
244
				@Override
240
				public void onResize(BoxComponent component, int adjWidth,
245
				public void onResize(BoxComponent component, int adjWidth,
241
						int adjHeight, int rawWidth, int rawHeight) {
246
						int adjHeight, int rawWidth, int rawHeight) {
242
					formulaireSaisieObservationVue.redimensionnerFormulaire();
247
					formulaireSaisieObservationVue.redimensionnerFormulaire();
243
					listeObservation.doLayout();
248
					listeObservation.doLayout();
244
				}
249
				}
245
				
250
				
246
				@Override
251
				@Override
247
				public void onAfterLayout(Container self) {
252
				public void onAfterLayout(Container self) {
248
					
253
					
249
				}
254
				}
250
		});
255
		});
251
		
256
		
252
		formulaireSaisieObservationVue.setBorder(false);
257
		formulaireSaisieObservationVue.setBorder(false);
253
		
258
		
254
		BorderLayoutData listeLayoutData = new BorderLayoutData(RegionPosition.SOUTH);
259
		BorderLayoutData listeLayoutData = new BorderLayoutData(RegionPosition.SOUTH);
255
		listeLayoutData.setSplit(true);
260
		listeLayoutData.setSplit(true);
256
		
261
		
257
		BorderLayoutData formLayoutData = new BorderLayoutData(RegionPosition.CENTER);
262
		BorderLayoutData formLayoutData = new BorderLayoutData(RegionPosition.CENTER);
258
		formLayoutData.setSplit(true);
263
		formLayoutData.setSplit(true);
259
		
264
		
260
		centre.add(listeObservation, listeLayoutData);
265
		centre.add(listeObservation, listeLayoutData);
261
		centre.add(formulaireSaisieObservationVue, formLayoutData);
266
		centre.add(formulaireSaisieObservationVue, formLayoutData);
262
 
267
 
263
		// Redimensionnement global sur collapse/expand
268
		// Redimensionnement global sur collapse/expand
264
		details.addListener(
269
		details.addListener(
265
			new PanelListenerAdapter() {
270
			new PanelListenerAdapter() {
266
				@Override
271
				@Override
267
				public void onCollapse(Panel panel)  {
272
				public void onCollapse(Panel panel)  {
268
					CarnetEnLigneMediateur.fireResize();
273
					CarnetEnLigneMediateur.fireResize();
269
				}
274
				}
270
			    @Override
275
			    @Override
271
				public void onExpand(Panel panel) {
276
				public void onExpand(Panel panel) {
272
					
277
					
273
			    	String[] selectionListe = listeObservation.getIdSelectionnees();
278
			    	String[] selectionListe = listeObservation.getIdSelectionnees();
274
			    	if(selectionListe.length > 0) {
279
			    	if(selectionListe.length > 0) {
275
			    		Observation obs = listeObservation.getCacheListeObservation().get(selectionListe[0]);
280
			    		Observation obs = listeObservation.getCacheListeObservation().get(selectionListe[0]);
276
			    		obtenirImageInformationExternes(obs.getNumeroNomenclaturalSaisi());
281
			    		obtenirImageInformationExternes(obs.getCodeCourtReferentielTaxo(), obs.getNumeroNomenclaturalSaisi());
277
			    	}
282
			    	}
278
			    	CarnetEnLigneMediateur.fireResize();
283
			    	CarnetEnLigneMediateur.fireResize();
279
			    }
284
			    }
280
		});
285
		});
281
					
286
					
282
		// on initialise le volet qui contient les details
287
		// on initialise le volet qui contient les details
283
		details.setWidth("10%");
288
		details.setWidth("10%");
284
		details.setTitleCollapse(true);
289
		details.setTitleCollapse(true);
285
		details.setCollapsible(true);
290
		details.setCollapsible(true);
286
		
291
		
287
		details.setAutoScroll(true);
292
		details.setAutoScroll(true);
288
		details.setLayout(new RowLayout());
293
		details.setLayout(new RowLayout());
289
		
294
		
290
		// Lien vers eflore
295
		// Lien vers eflore
291
		liExtVue = new LienExterneVue(this);
296
		liExtVue = new LienExterneVue(this);
292
		liExtVue.setHeight("20px");
297
		liExtVue.setHeight("20px");
293
		details.add(liExtVue);
298
		details.add(liExtVue);
294
		
299
		
295
		// Information de repartition
300
		// Information de repartition
296
		informationRepartitionVue=new InformationRepartitionVue(this);
301
		informationRepartitionVue=new InformationRepartitionVue(this);
297
		details.add(informationRepartitionVue, new RowLayoutData("30%"));
302
		details.add(informationRepartitionVue, new RowLayoutData("30%"));
298
		
303
		
299
		// Image generique
304
		// Image generique
300
		imageGeneriqueVue=new ImageGeneriqueVue(this);
305
		imageGeneriqueVue=new ImageGeneriqueVue(this);
301
		details.add(imageGeneriqueVue, new RowLayoutData("30%"));
306
		details.add(imageGeneriqueVue, new RowLayoutData("30%"));
302
		
307
		
303
		mvz = new MiniZoomImageVue(this) ; 
308
		mvz = new MiniZoomImageVue(this) ; 
304
		
309
		
305
		details.add(mvz, new RowLayoutData("34%")) ;	
310
		details.add(mvz, new RowLayoutData("34%")) ;	
306
		
311
		
307
		// on crée le panneau des filtres
312
		// on crée le panneau des filtres
308
		filtres = new PanneauFiltresObservationVues(this);
313
		filtres = new PanneauFiltresObservationVues(this);
309
		
314
		
310
		// on initialise le volet qui contient les filtres
315
		// on initialise le volet qui contient les filtres
311
		filtres.setWidth("10%");
316
		filtres.setWidth("10%");
312
		filtres.setTitleCollapse(true);
317
		filtres.setTitleCollapse(true);
313
		filtres.setCollapsible(true);
318
		filtres.setCollapsible(true);
314
		
319
		
315
		
320
		
316
		filtres.addListener(
321
		filtres.addListener(
317
			new PanelListenerAdapter() {
322
			new PanelListenerAdapter() {
318
				@Override
323
				@Override
319
				public void onCollapse(Panel panel)  {
324
				public void onCollapse(Panel panel)  {
320
					CarnetEnLigneMediateur.fireResize();
325
					CarnetEnLigneMediateur.fireResize();
321
				}
326
				}
322
			    @Override
327
			    @Override
323
				public void onExpand(Panel panel) {
328
				public void onExpand(Panel panel) {
324
			    	CarnetEnLigneMediateur.fireResize();
329
			    	CarnetEnLigneMediateur.fireResize();
325
			    }
330
			    }
326
		});
331
		});
327
		
332
		
328
		panneauPrincipalObservation.add(details,regionEst);
333
		panneauPrincipalObservation.add(details,regionEst);
329
		
334
		
330
		panneauPrincipalObservation.add(filtres,regionOuest);
335
		panneauPrincipalObservation.add(filtres,regionOuest);
331
		panneauPrincipalObservation.add(centre,regionCentre);
336
		panneauPrincipalObservation.add(centre,regionCentre);
332
		
-
 
333
	}
337
	}
334
	
338
	
335
	/**
339
	/**
336
	 * Retourne une instance de manière unique
340
	 * Retourne une instance de manière unique
337
	 * @return l'instance unique du médiateur
341
	 * @return l'instance unique du médiateur
338
	 */
342
	 */
339
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
343
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
340
	{
344
	{
341
			if(!estInstancie || thisMediateur == null)
345
			if(!estInstancie || thisMediateur == null)
342
			{
346
			{
343
				estInstancie = true ;
347
				estInstancie = true ;
344
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
348
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
345
			}
349
			}
346
			
350
			
347
			return thisMediateur ;	
351
			return thisMediateur ;	
348
	}
352
	}
349
	
353
	
350
	
354
	
351
	public void connecterUtilisateur() {
355
	public void connecterUtilisateur() {
352
		
356
		
353
		if(importerObservations) {
357
		if(importerObservations) {
354
			observationModele.importerObservations();
358
			observationModele.importerObservations();
355
		}
359
		}
356
		
360
		
357
		if(panneauPrincipalObservation == null || !panneauPrincipalObservation.isCreated()) 
361
		if(panneauPrincipalObservation == null || !panneauPrincipalObservation.isCreated()) 
358
		{
362
		{
359
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
363
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
360
			{
364
			{
361
				@Override
365
				@Override
362
				public void onRender(Component c)
366
				public void onRender(Component c)
363
				{
367
				{
364
					panneauPrincipalObservation.purgeListeners() ;
368
					panneauPrincipalObservation.purgeListeners() ;
365
					initialiserArbres();
369
					initialiserArbres();
366
					filtres.getRechercheLibreVue().raz();
370
					filtres.getRechercheLibreVue().raz();
367
					obtenirNombreObservation();
371
					obtenirNombreObservation();
368
					analyserHistorique();
372
					analyserHistorique();
369
				}
373
				}
370
			}) ;
374
			}) ;
371
		}
375
		}
372
		else
376
		else
373
		{
377
		{
374
			initialiserArbres();
378
			initialiserArbres();
375
			filtres.getRechercheLibreVue().raz();
379
			filtres.getRechercheLibreVue().raz();
376
			obtenirNombreObservation();
380
			obtenirNombreObservation();
377
			analyserHistorique();
381
			analyserHistorique();
378
		}
382
		}
379
	}
383
	}
380
	
384
	
381
	private void initialiserArbres() {
385
	private void initialiserArbres() {
382
		getPanneauFiltres().getArbreDateObservationFiltreVue().initialiser();
386
		getPanneauFiltres().getArbreDateObservationFiltreVue().initialiser();
383
		getPanneauFiltres().getArbreEntiteGeographiqueObservationFiltreVue().initialiser();		
387
		getPanneauFiltres().getArbreEntiteGeographiqueObservationFiltreVue().initialiser();		
384
		getPanneauFiltres().getArbreMotsClesObservationVue().initialiser();	
388
		getPanneauFiltres().getArbreMotsClesObservationVue().initialiser();	
385
	}
389
	}
386
 
390
 
387
	
391
	
388
	
392
	
389
	// ACTIONS  a entreprendre lors d'un evenement particulier 
393
	// ACTIONS  a entreprendre lors d'un evenement particulier 
390
	/**
394
	/**
391
	 * Lors du raffraichissement de la liste d'observation  
395
	 * Lors du raffraichissement de la liste d'observation  
392
	 */
396
	 */
393
	public void onRafraichissementListeObservations() {
397
	public void onRafraichissementListeObservations() {
394
		
398
		
395
		carnetEnLigneMediateur.donneesObsVersImages(listeObservation.getCacheListeObservation());
399
		carnetEnLigneMediateur.donneesObsVersImages(listeObservation.getCacheListeObservation());
396
		observationModele.rafraichirCacheObservation(listeObservation.getCacheListeObservation());
400
		observationModele.rafraichirCacheObservation(listeObservation.getCacheListeObservation());
397
		
401
		
398
		filtres.getArbreMotsClesObservationVue().cocherMotsCles(new String[0]);
402
		filtres.getArbreMotsClesObservationVue().cocherMotsCles(new String[0]);
399
	}
403
	}
400
	
404
	
401
	/**
405
	/**
402
	 * 
406
	 * 
403
	 * TODO : fonction plus generique, appelle sur un clic ou une selection de ligne, a appeller : SelectionnerObservation 
407
	 * TODO : fonction plus generique, appelle sur un clic ou une selection de ligne, a appeller : SelectionnerObservation 
404
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
408
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
405
	 * médiateur gère alors les conséquences
409
	 * médiateur gère alors les conséquences
406
	 * 
410
	 * 
407
	 * @param rowIndex
411
	 * @param rowIndex
408
	 *            le numéro de ligne selectionné
412
	 *            le numéro de ligne selectionné
409
	 */
413
	 */
410
	
414
	
411
	public void onClicListeObservation(int rowIndex, String ordreObservation) {
415
	public void onClicListeObservation(int rowIndex, String ordreObservation) {
412
	
416
	
413
		Observation obs = obtenirCacheObservation().get(ordreObservation) ;
417
		Observation obs = obtenirCacheObservation().get(ordreObservation) ;
414
		
418
		
415
		if(GWT.isScript()) {
419
		if(GWT.isScript()) {
416
			masquerChargementInfosObservations() ;
420
			masquerChargementInfosObservations() ;
417
		}
421
		}
418
		
422
		
419
		if(formulaireSaisieObservationVue.getModification()) {
423
		if(formulaireSaisieObservationVue.getModification()) {
420
			String[] ids = listeObservation.getIdSelectionnees();
424
			String[] ids = listeObservation.getIdSelectionnees();
421
			if(ids.length > 1) {
425
			if(ids.length > 1) {
422
				formulaireSaisieObservationVue.setMasseModification(true);
426
				formulaireSaisieObservationVue.setMasseModification(true);
423
				ListeObservation listeObs = new ListeObservation();
427
				ListeObservation listeObs = new ListeObservation();
424
				for(int i=0; i < ids.length;i++) {
428
				for(int i=0; i < ids.length;i++) {
425
					Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
429
					Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
426
					listeObs.ajouterObservation(obsAjout);
430
					listeObs.ajouterObservation(obsAjout);
427
				}
431
				}
428
				formulaireSaisieObservationVue.rafraichir(listeObs, false);
432
				formulaireSaisieObservationVue.rafraichir(listeObs, false);
429
			} else {
433
			} else {
430
				formulaireSaisieObservationVue.setMasseModification(false);
434
				formulaireSaisieObservationVue.setMasseModification(false);
431
				// affichage des détails dans le formulaire d'observation
435
				// affichage des détails dans le formulaire d'observation
432
				formulaireSaisieObservationVue.rafraichir(obs, false) ;
436
				formulaireSaisieObservationVue.rafraichir(obs, false) ;
433
			}
437
			}
434
		} else {
438
		} else {
435
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
439
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
436
		}
440
		}
437
		
441
		
438
		// Affichage de l'image correspondante
442
		// Affichage de l'image correspondante
439
		if(details.isVisible()) {
443
		if(details.isVisible()) {
440
			// Affichage de la carte de repartition correspondante
444
			// Affichage de la carte de repartition correspondante
441
			String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalRetenu() ;
445
			String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalRetenu() ;
442
			if(numeroNomenclaturalSaisiObservation != null && !numeroNomenclaturalSaisiObservation.isEmpty()) {
446
			if(numeroNomenclaturalSaisiObservation != null && !numeroNomenclaturalSaisiObservation.isEmpty()) {
443
				observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
447
				observationModele.obtenirImageInformationRepartition(informationRepartitionVue,obs.getCodeCourtReferentielTaxo(), numeroNomenclaturalSaisiObservation) ;
444
				liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
448
				liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
445
				observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
449
				observationModele.obtenirImageGenerique(imageGeneriqueVue,obs.getCodeCourtReferentielTaxo(), numeroNomenclaturalSaisiObservation) ;
446
				observationModele.obtenirLiaisonImage(mvz, obs.getId()) ;
450
				observationModele.obtenirLiaisonImage(mvz, obs.getId()) ;
447
 
451
 
448
			}
452
			}
449
		}
453
		}
450
		filtres.getArbreMotsClesObservationVue().rafraichir(obs.getMotsCles(), false);
454
		filtres.getArbreMotsClesObservationVue().rafraichir(obs.getMotsCles(), false);
451
	}
455
	}
452
	
456
	
453
	public void obtenirImageInformationExternes(String numeroNomenclaturalSaisiObservation) {
457
	public void obtenirImageInformationExternes(String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
454
		
458
		
455
		if(details.isVisible()) {
459
		if(details.isVisible()) {
456
			if(GWT.isScript()) {
460
			if(GWT.isScript()) {
457
				masquerChargementInfosObservations() ;
461
				masquerChargementInfosObservations() ;
458
			}
462
			}
459
			liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
463
			liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
460
			observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
464
			observationModele.obtenirImageInformationRepartition(informationRepartitionVue, referentielTaxo, numeroNomenclaturalSaisiObservation) ;
461
			observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
465
			observationModele.obtenirImageGenerique(imageGeneriqueVue, referentielTaxo, numeroNomenclaturalSaisiObservation) ;
462
		}
466
		}
463
	}
467
	}
464
	
468
	
465
	public int getTaillePage() {
469
	public int getTaillePage() {
466
		return listeObservation.getTaillePage();
470
		return listeObservation.getTaillePage();
467
	}
471
	}
468
	
472
	
469
	public int getPageEnCours() {
473
	public int getPageEnCours() {
470
		return listeObservation.getPageEncours();
474
		return listeObservation.getPageEncours();
471
	}
475
	}
472
	
476
	
473
	
477
	
474
	// ACCES au Modèle 
478
	// ACCES au Modèle 
475
	
-
 
476
	
-
 
477
	// C du CRUD 
479
	// C du CRUD 
478
	
-
 
479
	
-
 
480
	
-
 
481
	/**
480
	/**
482
	 * TODO : afficher un message du type "observation ajouté".  
481
	 * TODO : afficher un message du type "observation ajouté".  
483
	 * Lance la creation d'une observation
482
	 * Lance la creation d'une observation
484
	 * @param obs : l'observation saisie
483
	 * @param obs : l'observation saisie
485
	 */	
484
	 */	
486
	public void ajouterObservation(Observation obs) {
485
	public void ajouterObservation(Observation obs) {
487
			
-
 
488
	  // On rafraichit la liste d'observation 
486
	  // On rafraichit la liste d'observation 
489
	  observationModele.ajouterObservation(listeObservation, obs) ;
487
	  observationModele.ajouterObservation(listeObservation, obs) ;
490
	  filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
488
	  filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
491
	  filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
489
	  filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
492
		
490
		
493
	}
491
	}
494
	
-
 
495
	
-
 
496
	
492
	
497
	// R du CRUD 
-
 
498
	
493
	// R du CRUD 
499
	/**
494
	/**
500
	 * Demande au modele le nombre d'Observation à afficher
495
	 * Demande au modele le nombre d'Observation à afficher
501
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
496
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
502
	 */
497
	 */
503
 
498
 
504
	public void obtenirNombreObservation() {
499
	public void obtenirNombreObservation() {
505
		
500
		
506
		listeObservation.masquerChargement() ;
501
		listeObservation.masquerChargement() ;
507
		mvz.raz() ;
502
		mvz.raz() ;
508
		imageGeneriqueVue.raz() ;
503
		imageGeneriqueVue.raz() ;
509
		informationRepartitionVue.raz() ;
504
		informationRepartitionVue.raz() ;
510
		
505
		
511
		observationModele.obtenirNombreObservation(listeObservation) ;
506
		observationModele.obtenirNombreObservation(listeObservation) ;
512
		
507
		
513
	}
508
	}
514
	
509
	
515
	/**
510
	/**
516
	 * Demande au modele le nombre d'Observation à afficher
511
	 * Demande au modele le nombre d'Observation à afficher
517
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
512
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
518
	 */
513
	 */
519
 
514
 
520
	public void obtenirDernierePageObservation() {
515
	public void obtenirDernierePageObservation() {
521
		
516
		
522
		listeObservation.rafraichir(new Observation(),false) ;
517
		listeObservation.rafraichir(new Observation(),false) ;
523
		
518
		
524
	}
519
	}
525
 
520
 
526
	
521
	
527
	
522
	
528
	public void obtenirListeObservation() {
523
	public void obtenirListeObservation() {
529
		obtenirListeObservation(listeObservation);
524
		obtenirListeObservation(listeObservation);
530
	}
525
	}
531
	
526
	
532
	/**
527
	/**
533
	 * Demande au modele le detail  des Observations à afficher
528
	 * Demande au modele le detail  des Observations à afficher
534
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
529
	 * TODO : grouper cette demande avec la demande d'affichage de liste ? 
535
	 */
530
	 */
536
 
531
 
537
	
532
	
538
	public void obtenirListeObservation(Rafraichissable r) {
533
	public void obtenirListeObservation(Rafraichissable r) {
539
		
534
		
540
		listeObservation.masquerChargement() ;
535
		listeObservation.masquerChargement() ;
541
		observationModele.obtenirListeObservation(r,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
536
		observationModele.obtenirListeObservation(r,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
542
	}
537
	}
543
	
538
	
544
	public void obtenirCacheObservation(Rafraichissable r) {
539
	public void obtenirCacheObservation(Rafraichissable r) {
545
		
540
		
546
		r.rafraichir(observationModele.getCacheObservation(), false) ;
541
		r.rafraichir(observationModele.getCacheObservation(), false) ;
547
	}
542
	}
548
	
543
	
549
 
544
 
550
	/**
545
	/**
551
	 * Envoie au modèle une demande pour obtenir l'arbre des localites
546
	 * Envoie au modèle une demande pour obtenir l'arbre des localites
552
	 * 
547
	 * 
553
	 * @param r
548
	 * @param r
554
	 *            le raffraichissable qui a demandé la mise à jour
549
	 *            le raffraichissable qui a demandé la mise à jour
555
	 */
550
	 */
556
	public void obtenirListeEntiteGeographique() {
551
	public void obtenirListeEntiteGeographique() {
557
		
552
		
558
		observationModele.obtenirListeEntiteGeographique(filtres.getArbreEntiteGeographiqueObservationFiltreVue());
553
		observationModele.obtenirListeEntiteGeographique(filtres.getArbreEntiteGeographiqueObservationFiltreVue());
559
		
554
		
560
	}
555
	}
561
	
556
	
562
	
557
	
563
	// U du CRUD
558
	// U du CRUD
564
	public void modifierObservation(Observation obs) {
559
	public void modifierObservation(Observation obs) {
565
		
560
		
566
		// On prend soin de récupérer les mots clés de l'observation
561
		// On prend soin de récupérer les mots clés de l'observation
567
		Observation obsMod = obtenirCacheObservation().get(obs.getNumeroOrdre());
562
		Observation obsMod = obtenirCacheObservation().get(obs.getNumeroOrdre());
568
		obs.setMotsCles(obsMod.getMotsCles());
563
		obs.setMotsCles(obsMod.getMotsCles());
569
		
564
		
570
		// On rafraichit la liste d'observation
565
		// On rafraichit la liste d'observation
571
		observationModele.modifierObservation(listeObservation, obs) ;
566
		observationModele.modifierObservation(listeObservation, obs) ;
572
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
567
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
573
		filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
568
		filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
574
		
569
		
575
	}
570
	}
576
	
571
	
577
	public void modifierObservationEnMasse(Observation obs) {
572
	public void modifierObservationEnMasse(Observation obs) {
578
		// On rafraichit la liste d'observation
573
		// On rafraichit la liste d'observation
579
		listeObservation.masquerChargement();
574
		listeObservation.masquerChargement();
580
		observationModele.modifierObservationEnMasse(listeObservation, obs) ;
575
		observationModele.modifierObservationEnMasse(listeObservation, obs) ;
581
	}
576
	}
582
	
577
	
583
	// D du CRUD
578
	// D du CRUD
584
	/**
579
	/**
585
	 * TODO : afficher un message du type "observation modifie".  
580
	 * TODO : afficher un message du type "observation modifie".  
586
	 * Lance la modification d'une observation
581
	 * Lance la modification d'une observation
587
	 * @param obs : l'observation a modifier
582
	 * @param obs : l'observation a modifier
588
	 */
583
	 */
589
	
584
	
590
	
585
	
591
	
586
	
592
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
587
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
593
		
588
		
594
		if(listeObservation.getSelectionModel().getCount() > 0)
589
		if(listeObservation.getSelectionModel().getCount() > 0)
595
		{
590
		{
596
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
591
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
597
			observationModele.supprimerObservation(r,numeroOrdre) ;
592
			observationModele.supprimerObservation(r,numeroOrdre) ;
598
			}
593
			}
599
		}
594
		}
600
		
595
		
601
	}
596
	}
602
	
597
	
603
	public boolean listeAvoirObservations() {
598
	public boolean listeAvoirObservations() {
604
		return listeObservation.getStore().getCount() > 0;
599
		return listeObservation.getStore().getCount() > 0;
605
	}
600
	}
606
	
601
	
607
	// Assistants de saisie
602
	// Assistants de saisie
608
	/**
603
	/**
609
	 *  
604
	 *  
610
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne 
605
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne 
611
	 * @param r : la vue demandeuse de donnee
606
	 * @param r : la vue demandeuse de donnee
612
	 * @param critere : les criteres de selection
607
	 * @param critere : les criteres de selection
613
	 */
608
	 */
614
	
609
	
615
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
610
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
616
		
611
		
617
		observationModele.obtenirListeReferentielCommune(r,critere) ;
612
		observationModele.obtenirListeReferentielCommune(r,critere) ;
618
	}
613
	}
619
	
614
	
620
	// Assistants de saisie
615
	// Assistants de saisie
621
	/**
616
	/**
622
	 *  
617
	 *  
623
	 * Lance un appel de recherche d'une liste de résultats 
618
	 * Lance un appel de recherche d'une liste de résultats 
624
	 * correspondant aux criteres de selections pour un référentiel donné 
619
	 * correspondant aux criteres de selections pour un référentiel donné 
625
	 * @param r : la vue demandeuse de donnee
620
	 * @param r : la vue demandeuse de donnee
626
	 * @param referentiel : le référentiel demandé
621
	 * @param referentiel : le référentiel demandé
627
	 * @param critere : les criteres de selection
622
	 * @param critere : les criteres de selection
628
	 */
623
	 */
629
	public void obtenirListeReferentielPerso(Rafraichissable r, TypesReferentiels referentiel, String critere) {
624
	public void obtenirListeReferentielPerso(Rafraichissable r, TypesReferentiels referentiel, String critere) {
630
		observationModele.obtenirListeReferentielPerso(r, referentiel, critere) ;
625
		observationModele.obtenirListeReferentielPerso(r, referentiel, critere) ;
631
	}
626
	}
632
	
627
	
633
	/**
628
	/**
634
	 *  
629
	 *  
635
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne 
630
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne 
636
	 * @param r : la vue demandeuse de donnee
631
	 * @param r : la vue demandeuse de donnee
637
	 * @param critere : les criteres de selection
632
	 * @param critere : les criteres de selection
638
	 */
633
	 */
639
	
634
	
640
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
635
	public void obtenirListeReferentielNom(Rafraichissable r,String referentiel, String critere) {
641
 
636
 
642
		observationModele.obtenirListeReferentielNom(r,critere) ;		
637
		observationModele.obtenirListeReferentielNom(r, referentiel, critere) ;		
643
	}
638
	}
644
	
639
	
645
	// Etat du syteme
640
	// Etat du syteme
646
	
641
	
647
	/**
642
	/**
648
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
643
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
649
	 * sous forme de tableau [nom, valeur]
644
	 * sous forme de tableau [nom, valeur]
650
	 * @return Les noms et valeurs des filtres
645
	 * @return Les noms et valeurs des filtres
651
	 */
646
	 */
652
	public String[][] renvoyerFiltres()
647
	public String[][] renvoyerFiltres()
653
	{		
648
	{		
654
		int longueur = 0;
649
		int longueur = 0;
655
		
650
		
656
		String[] filtresEntitesGeo = filtres.getArbreEntiteGeographiqueObservationFiltreVue().renvoyerValeursAFiltrer() ;
651
		String[] filtresEntitesGeo = filtres.getArbreEntiteGeographiqueObservationFiltreVue().renvoyerValeursAFiltrer() ;
657
		String chaineNomsFiltresGeo = filtresEntitesGeo[0] ;
652
		String chaineNomsFiltresGeo = filtresEntitesGeo[0] ;
658
		String chaineValFiltresGeo = filtresEntitesGeo[1] ;
653
		String chaineValFiltresGeo = filtresEntitesGeo[1] ;
659
		
654
		
660
		String[] filtresDate = filtres.getArbreDateObservationFiltreVue().renvoyerValeursAFiltrer() ;
655
		String[] filtresDate = filtres.getArbreDateObservationFiltreVue().renvoyerValeursAFiltrer() ;
661
		String chaineNomsFiltresDate = filtresDate[0] ;
656
		String chaineNomsFiltresDate = filtresDate[0] ;
662
		String chaineValFiltresDate = filtresDate[1] ;
657
		String chaineValFiltresDate = filtresDate[1] ;
663
		
658
		
664
		String[] filtresTaxon = filtres.getRechercheLibreVue().renvoyerValeursAFiltrer();
659
		String[] filtresTaxon = filtres.getRechercheLibreVue().renvoyerValeursAFiltrer();
665
		
660
		
666
		String[] filtresMotsCles = filtres.getArbreMotsClesObservationVue().renvoyerValeursAFiltrer();
661
		String[] filtresMotsCles = filtres.getArbreMotsClesObservationVue().renvoyerValeursAFiltrer();
667
		
662
		
668
		String chaineNomsFiltres = "" ;
663
		String chaineNomsFiltres = "" ;
669
		String chaineValFiltres = "" ;
664
		String chaineValFiltres = "" ;
670
		
665
		
671
		if(!chaineNomsFiltresGeo.trim().equals("") && !chaineValFiltresGeo.trim().equals("")) {
666
		if(!chaineNomsFiltresGeo.trim().equals("") && !chaineValFiltresGeo.trim().equals("")) {
672
			chaineNomsFiltres += chaineNomsFiltresGeo+",";
667
			chaineNomsFiltres += chaineNomsFiltresGeo+",";
673
			chaineValFiltres += chaineValFiltresGeo+",";
668
			chaineValFiltres += chaineValFiltresGeo+",";
674
		}
669
		}
675
		
670
		
676
		if(!chaineNomsFiltresDate.trim().equals("") && !chaineValFiltresDate.trim().equals("")) {
671
		if(!chaineNomsFiltresDate.trim().equals("") && !chaineValFiltresDate.trim().equals("")) {
677
			chaineNomsFiltres += chaineNomsFiltresDate+",";
672
			chaineNomsFiltres += chaineNomsFiltresDate+",";
678
			chaineValFiltres += chaineValFiltresDate+",";
673
			chaineValFiltres += chaineValFiltresDate+",";
679
		}
674
		}
680
		
675
		
681
		if(!filtresTaxon[0].trim().equals("") && !filtresTaxon[1].trim().equals("")) {
676
		if(!filtresTaxon[0].trim().equals("") && !filtresTaxon[1].trim().equals("")) {
682
			chaineNomsFiltres += filtresTaxon[0]+",";
677
			chaineNomsFiltres += filtresTaxon[0]+",";
683
			chaineValFiltres += filtresTaxon[1]+",";
678
			chaineValFiltres += filtresTaxon[1]+",";
684
		}
679
		}
685
		
680
		
686
		if(!filtresMotsCles[0].trim().equals("") && !filtresMotsCles[1].trim().equals("")) {
681
		if(!filtresMotsCles[0].trim().equals("") && !filtresMotsCles[1].trim().equals("")) {
687
			chaineNomsFiltres += filtresMotsCles[0];
682
			chaineNomsFiltres += filtresMotsCles[0];
688
			chaineValFiltres += filtresMotsCles[1];
683
			chaineValFiltres += filtresMotsCles[1];
689
		}
684
		}
690
		
685
		
691
		String[] nomsFiltres = chaineNomsFiltres.split(",") ;
686
		String[] nomsFiltres = chaineNomsFiltres.split(",") ;
692
		String[] valsFiltres = chaineValFiltres.split(",") ;
687
		String[] valsFiltres = chaineValFiltres.split(",") ;
693
		
688
		
694
		longueur += nomsFiltres.length;
689
		longueur += nomsFiltres.length;
695
		
690
		
696
		String [][] valeursFiltres = new String[longueur][2] ;
691
		String [][] valeursFiltres = new String[longueur][2] ;
697
		
692
		
698
		int i = 0;
693
		int i = 0;
699
		
694
		
700
		if(valsFiltres.length > 0)
695
		if(valsFiltres.length > 0)
701
		{
696
		{
702
			for(i = 0 ; i < nomsFiltres.length ; i++)
697
			for(i = 0 ; i < nomsFiltres.length ; i++)
703
			{
698
			{
704
				valeursFiltres[i][0] = nomsFiltres[i] ;
699
				valeursFiltres[i][0] = nomsFiltres[i] ;
705
				if(valsFiltres[i].equals("Inconnue")) 
700
				if(valsFiltres[i].equals("Inconnue")) 
706
				{
701
				{
707
					valeursFiltres[i][1] = "NULL" ;
702
					valeursFiltres[i][1] = "NULL" ;
708
				}
703
				}
709
				else
704
				else
710
				{
705
				{
711
					valeursFiltres[i][1] = valsFiltres[i] ;
706
					valeursFiltres[i][1] = valsFiltres[i] ;
712
				}
707
				}
713
			}
708
			}
714
		}
709
		}
715
		
710
		
716
		listeObservation.afficherFiltres(valeursFiltres) ;
711
		listeObservation.afficherFiltres(valeursFiltres) ;
717
		
712
		
718
		return valeursFiltres ;
713
		return valeursFiltres ;
719
	}
714
	}
720
 
715
 
721
	/**
716
	/**
722
	 * 
717
	 * 
723
	 * @return
718
	 * @return
724
	 * 
719
	 * 
725
	 */
720
	 */
726
	
721
	
727
	public Panel getPanneauPrincipalObservation() {
722
	public Panel getPanneauPrincipalObservation() {
728
		return panneauPrincipalObservation;
723
		return panneauPrincipalObservation;
729
	}
724
	}
730
 
725
 
731
 
726
 
732
	public void montrerContextMenu(EventObject e) {
727
	public void montrerContextMenu(EventObject e) {
733
		
728
		
734
		MenuObservationVue mvo = new MenuObservationVue(this) ;
729
		MenuObservationVue mvo = new MenuObservationVue(this) ;
735
		mvo.showAt(e.getXY()) ;
730
		mvo.showAt(e.getXY()) ;
736
		
731
		
737
	}
732
	}
738
 
733
 
739
	public void doubleClicListeObservation(int rowIndex) {
734
	public void doubleClicListeObservation(int rowIndex) {
740
		
735
		
741
		
736
		
742
	}
737
	}
743
	
738
	
744
	// Getters 
739
	// Getters 
745
	
740
	
746
	public PanneauFiltresObservationVues getPanneauFiltres() {
741
	public PanneauFiltresObservationVues getPanneauFiltres() {
747
		
742
		
748
		return filtres;
743
		return filtres;
749
		
744
		
750
	}
745
	}
751
	
746
	
752
	public void masquerChargementInfosObservations()
747
	public void masquerChargementInfosObservations()
753
	{
748
	{
754
		ExtElement masked = Ext.get(details.getId());
749
		ExtElement masked = Ext.get(details.getId());
755
 
750
 
756
		if (details.isVisible() && masked != null) {
751
		if (details.isVisible() && masked != null) {
757
			informationRepartitionVue.raz() ;
752
			informationRepartitionVue.raz() ;
758
			imageGeneriqueVue.raz() ;
753
			imageGeneriqueVue.raz() ;
759
			masked.mask("Chargement", true);
754
			masked.mask("Chargement", true);
760
		}
755
		}
761
 
756
 
762
		cartoObservationVue.masquerChargement(true);
757
		cartoObservationVue.masquerChargement(true);
763
	}
758
	}
764
	
759
	
765
	public void deMasquerChargementInfosObservations()
760
	public void deMasquerChargementInfosObservations()
766
	{
761
	{
767
		ExtElement masked = Ext.get(details.getId());
762
		ExtElement masked = Ext.get(details.getId());
768
 
763
 
769
		if (details.isVisible() && masked != null) {
764
		if (details.isVisible() && masked != null) {
770
			masked.unmask() ;
765
			masked.unmask() ;
771
		}	
766
		}	
772
	}
767
	}
773
 
768
 
774
 
769
 
775
	public void obtenirDatesObservation() {
770
	public void obtenirDatesObservation() {
776
		
771
		
777
		observationModele.obtenirDatesObservation(filtres.getArbreDateObservationFiltreVue()) ;
772
		observationModele.obtenirDatesObservation(filtres.getArbreDateObservationFiltreVue()) ;
778
	}
773
	}
779
 
774
 
780
 
775
 
781
	public void exporterObservations() {
776
	public void exporterObservations() {
782
		
777
		
783
			observationModele.exporterObservations() ;
778
			observationModele.exporterObservations() ;
784
	}
779
	}
785
 
780
 
786
 
781
 
787
	public void deconnecterUtilisateur() {
782
	public void deconnecterUtilisateur() {
788
		
783
		
789
		if(panneauPrincipalObservation == null || panneauPrincipalObservation.isCreated() || !panneauPrincipalObservation.isVisible())
784
		if(panneauPrincipalObservation == null || panneauPrincipalObservation.isCreated() || !panneauPrincipalObservation.isVisible())
790
		{
785
		{
791
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
786
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
792
			{
787
			{
793
				@Override
788
				@Override
794
				public void onShow(Component component)
789
				public void onShow(Component component)
795
				{
790
				{
796
					deconnecterUtilisateur();
791
					deconnecterUtilisateur();
797
					panneauPrincipalObservation.purgeListeners();
792
					panneauPrincipalObservation.purgeListeners();
798
				}
793
				}
799
			});
794
			});
800
		}
795
		}
801
		else
796
		else
802
		{
797
		{
803
			listeObservation.raz() ;
798
			listeObservation.raz() ;
804
			formulaireSaisieObservationVue.raz() ;
799
			formulaireSaisieObservationVue.raz() ;
805
			razFiltres();
800
			razFiltres();
806
			informationRepartitionVue.raz() ;
801
			informationRepartitionVue.raz() ;
807
			imageGeneriqueVue.raz() ;
802
			imageGeneriqueVue.raz() ;
808
			mvz.raz() ;
803
			mvz.raz() ;
809
		}
804
		}
810
	}
805
	}
811
 
806
 
812
 
807
 
813
	public void supprimerLiaisonObsImage() {
808
	public void supprimerLiaisonObsImage() {
814
		
809
		
815
		String ordreObs = listeObservation.getIdSelectionnees()[0];
810
		String ordreObs = listeObservation.getIdSelectionnees()[0];
816
		String idObs = observationModele.getIdPourOrdreObs(ordreObs);
811
		String idObs = observationModele.getIdPourOrdreObs(ordreObs);
817
		String idImg = mvz.getIdImage() ;
812
		String idImg = mvz.getIdImage() ;
818
		
813
		
819
		if(Window.confirm("Supprimer le lien entre l'image "+idImg+" et l'observations "+idObs+" ?"))
814
		if(Window.confirm("Supprimer le lien entre l'image "+idImg+" et l'observations "+idObs+" ?"))
820
		{
815
		{
821
			mvz.supprimerLiaisonImage() ;
816
			mvz.supprimerLiaisonImage() ;
822
			observationModele.supprimerLiaisonImages(idImg,idObs) ;
817
			observationModele.supprimerLiaisonImages(idImg,idObs) ;
823
		}
818
		}
824
		
819
		
825
	}
820
	}
826
 
821
 
827
	public void supprimerObservations() {
822
	public void supprimerObservations() {
828
		
823
		
829
		if(listeObservation.getIdSelectionnees().length > 0) {
824
		if(listeObservation.getIdSelectionnees().length > 0) {
830
			if(Window.confirm("Êtes vous sur de vouloir supprimer les observations sélectionnées ?")) { 
825
			if(Window.confirm("Êtes vous sur de vouloir supprimer les observations sélectionnées ?")) { 
831
					String[] numObs = listeObservation.getIdSelectionnees();
826
					String[] numObs = listeObservation.getIdSelectionnees();
832
					String numObsapl = "" ;
827
					String numObsapl = "" ;
833
					for(int i = 0 ; i < numObs.length ; i++) {
828
					for(int i = 0 ; i < numObs.length ; i++) {
834
						numObsapl += numObs[i]+"," ; 
829
						numObsapl += numObs[i]+"," ; 
835
					}
830
					}
836
					
831
					
837
					observationModele.supprimerListeObservation(listeObservation,numObsapl) ;
832
					observationModele.supprimerListeObservation(listeObservation,numObsapl) ;
838
			}
833
			}
839
		}
834
		}
840
		else
835
		else
841
		{
836
		{
842
			Window.alert("Aucune observation sélectionnée");
837
			Window.alert("Aucune observation sélectionnée");
843
		}
838
		}
844
	}
839
	}
845
 
840
 
846
 
841
 
847
	public void transmettreObservations(boolean publier) {
842
	public void transmettreObservations(boolean publier) {
848
		
843
		
849
		if(Utilisateur.getInstance().isIdentifie()) {
844
		if(Utilisateur.getInstance().isIdentifie()) {
850
			if(listeObservation.getIdSelectionnees().length > 0) {
845
			if(listeObservation.getIdSelectionnees().length > 0) {
851
				
846
				
852
				String action = "" ;
847
				String action = "" ;
853
				
848
				
854
				if(publier) {
849
				if(publier) {
855
					action = "rendre publiques" ;
850
					action = "rendre publiques" ;
856
				}
851
				}
857
				else {
852
				else {
858
					action = "rendre privées" ;
853
					action = "rendre privées" ;
859
				}
854
				}
860
				
855
				
861
				if(Window.confirm("Êtes vous sur de vouloir "+action+" les observations sélectionnées ?")) { 
856
				if(Window.confirm("Êtes vous sur de vouloir "+action+" les observations sélectionnées ?")) { 
862
					String[] numObs = listeObservation.getIdSelectionnees();
857
					String[] numObs = listeObservation.getIdSelectionnees();
863
					String numObsApl = "" ;
858
					String numObsApl = "" ;
864
					for(int i = 0 ; i < numObs.length ; i++) {
859
					for(int i = 0 ; i < numObs.length ; i++) {
865
						numObsApl += numObs[i] ;
860
						numObsApl += numObs[i] ;
866
						if(i != numObs.length - 1) {
861
						if(i != numObs.length - 1) {
867
							numObsApl +="," ;
862
							numObsApl +="," ;
868
						}
863
						}
869
					}
864
					}
870
					
865
					
871
					observationModele.transmettreListeObservation(listeObservation,numObsApl, publier) ;
866
					observationModele.transmettreListeObservation(listeObservation,numObsApl, publier) ;
872
				}
867
				}
873
			}
868
			}
874
			else
869
			else
875
			{
870
			{
876
				Window.alert("Aucune observation sélectionnée");
871
				Window.alert("Aucune observation sélectionnée");
877
			}
872
			}
878
		}
873
		}
879
		else
874
		else
880
		{
875
		{
881
			if(publier) {
876
			if(publier) {
882
				if(Window.confirm("La publication des observations nécessite d'être identifié, voulez-vous vous identifier ? (toutes vos observations saisies seront conservées)")) {
877
				if(Window.confirm("La publication des observations nécessite d'être identifié, voulez-vous vous identifier ? (toutes vos observations saisies seront conservées)")) {
883
					importerObservations = true ;
878
					importerObservations = true ;
884
					carnetEnLigneMediateur.afficherDialogueConnexion();
879
					carnetEnLigneMediateur.afficherDialogueConnexion();
885
				}
880
				}
886
			}
881
			}
887
		}
882
		}
888
		
883
		
889
	}
884
	}
890
	
885
	
891
	public void analyserHistorique() {
886
	public void analyserHistorique() {
892
		
887
		
893
		if (History.getToken().length()>0) {
888
		if (History.getToken().length()>0) {
894
 
889
 
895
	        final String anum=History.getToken();
890
	        final String anum=History.getToken();
896
	        observationModele.analyserHistorique(formulaireSaisieObservationVue,anum);
891
	        observationModele.analyserHistorique(formulaireSaisieObservationVue,anum);
897
		}
892
		}
898
	}
893
	}
899
 
894
 
900
	/**
895
	/**
901
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du
896
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du
902
	 * mot clé
897
	 * mot clé
903
	 * 
898
	 * 
904
	 * @param text
899
	 * @param text
905
	 *            le texte du mot clé
900
	 *            le texte du mot clé
906
	 * @param id
901
	 * @param id
907
	 *            l'identifiant du mot clé
902
	 *            l'identifiant du mot clé
908
	 */
903
	 */
909
	public void mettreAjourMotsClesId(String text, String id) {
904
	public void mettreAjourMotsClesId(String text, String id) {
910
 
905
 
911
		observationModele.mettreAjourMotsClesId(text, id);
906
		observationModele.mettreAjourMotsClesId(text, id);
912
 
907
 
913
	}
908
	}
914
	
909
	
915
	public boolean gererDDObsSurMotCle(TreeNode NoeudMotCle, DragData dragData) {
910
	public boolean gererDDObsSurMotCle(TreeNode NoeudMotCle, DragData dragData) {
916
		
911
		
917
		if(dragData instanceof GridDragData) {
912
		if(dragData instanceof GridDragData) {
918
 
913
 
919
			GridDragData gdd = ((GridDragData)dragData);
914
			GridDragData gdd = ((GridDragData)dragData);
920
			
915
			
921
			String idMotCle = ((String[])NoeudMotCle.getUserObject())[1];
916
			String idMotCle = ((String[])NoeudMotCle.getUserObject())[1];
922
			
917
			
923
			Record[] obsALier = gdd.getSelections();
918
			Record[] obsALier = gdd.getSelections();
924
			
919
			
925
			String idObsALier[] = new String[obsALier.length];
920
			String idObsALier[] = new String[obsALier.length];
926
			String idObsALierString = "";
921
			String idObsALierString = "";
927
			
922
			
928
			for(int i = 0; i < obsALier.length; i++) {
923
			for(int i = 0; i < obsALier.length; i++) {
929
				if(i != 0) {
924
				if(i != 0) {
930
					idObsALierString += ", ";
925
					idObsALierString += ", ";
931
				}
926
				}
932
				idObsALierString += obsALier[i].getAsString("ordre_observation");
927
				idObsALierString += obsALier[i].getAsString("ordre_observation");
933
				
928
				
934
				if(!observationAvoirMotCle(idMotCle, obsALier[i].getAsString("ordre_observation"))) {
929
				if(!observationAvoirMotCle(idMotCle, obsALier[i].getAsString("ordre_observation"))) {
935
					idObsALier[i] = obsALier[i].getAsString("ordre_observation");
930
					idObsALier[i] = obsALier[i].getAsString("ordre_observation");
936
				} else {
931
				} else {
937
					idObsALier[i] = "";
932
					idObsALier[i] = "";
938
				}
933
				}
939
			}
934
			}
940
			
935
			
941
			String message = "Lier les observations "; 
936
			String message = "Lier les observations "; 
942
			
937
			
943
			if(idObsALier.length == 1) {
938
			if(idObsALier.length == 1) {
944
				message = "Lier l'observation "; 
939
				message = "Lier l'observation "; 
945
			}
940
			}
946
			
941
			
947
			if(Window.confirm(message+idObsALierString+" au projet "+NoeudMotCle.getText()+" ?")) {
942
			if(Window.confirm(message+idObsALierString+" au projet "+NoeudMotCle.getText()+" ?")) {
948
				mettreAjourMotsCles(idMotCle, idObsALier);
943
				mettreAjourMotsCles(idMotCle, idObsALier);
949
				
944
				
950
				return true;
945
				return true;
951
			} else {
946
			} else {
952
				return false;
947
				return false;
953
			}
948
			}
954
		} else {
949
		} else {
955
			return false;
950
			return false;
956
		}
951
		}
957
	}
952
	}
958
	
953
	
959
	public void gererDDMotCleSurObs(String idObs, String idMC) {
954
	public void gererDDMotCleSurObs(String idObs, String idMC) {
960
		
955
		
961
		Observation obs = obtenirCacheObservation().get(idObs);
956
		Observation obs = obtenirCacheObservation().get(idObs);
962
		
957
		
963
		if(obs == null) {
958
		if(obs == null) {
964
			return;
959
			return;
965
		}
960
		}
966
		
961
		
967
		if(observationAvoirMotCle(idMC, idObs)) {
962
		if(observationAvoirMotCle(idMC, idObs)) {
968
			if(Window.confirm("Voulez vous supprimer la liaison entre l'observation et le mot clé ?")) {
963
			if(Window.confirm("Voulez vous supprimer la liaison entre l'observation et le mot clé ?")) {
969
				String nouveauMotsCles = obs.getMotsCles().replace(idMC, "");
964
				String nouveauMotsCles = obs.getMotsCles().replace(idMC, "");
970
				nouveauMotsCles = nouveauMotsCles.replace(";;", ";");
965
				nouveauMotsCles = nouveauMotsCles.replace(";;", ";");
971
				
966
				
972
				obs.setMotsCles(nouveauMotsCles);
967
				obs.setMotsCles(nouveauMotsCles);
973
				
968
				
974
				observationModele.supprimerLiaisonMotCleObservations(listeObservation, obs.getId(), idMC);
969
				observationModele.supprimerLiaisonMotCleObservations(listeObservation, obs.getId(), idMC);
975
			}
970
			}
976
		}
971
		}
977
	}
972
	}
978
 
973
 
979
	public String gererOverDDMotCleSurObs(String idObs, String IdMC) {
974
	public String gererOverDDMotCleSurObs(String idObs, String IdMC) {
980
		
975
		
981
		if(observationAvoirMotCle(IdMC, idObs)) {
976
		if(observationAvoirMotCle(IdMC, idObs)) {
982
		    return "x-dd-drop-unlink";
977
		    return "x-dd-drop-unlink";
983
		} else {
978
		} else {
984
			return "x-dd-drop-nodrop";
979
			return "x-dd-drop-nodrop";
985
		}
980
		}
986
	}
981
	}
987
	/**
982
	/**
988
	 * Récupère les identifiants des obs selectionnézs et appelle le modèle
983
	 * Récupère les identifiants des obs selectionnézs et appelle le modèle
989
	 * pour qu'il mette à jour les associations mots clés/obs
984
	 * pour qu'il mette à jour les associations mots clés/obs
990
	 * 
985
	 * 
991
	 * @param motsClesEnCours
986
	 * @param motsClesEnCours
992
	 *            les mots clés à associer aux images selectionnés séparés par
987
	 *            les mots clés à associer aux images selectionnés séparés par
993
	 *            un ';'
988
	 *            un ';'
994
	 * @param arbreMC
989
	 * @param arbreMC
995
	 *            l'arbre des mots clés à mettre à jour
990
	 *            l'arbre des mots clés à mettre à jour
996
	 */
991
	 */
997
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
992
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
998
		
993
		
999
		String[] ids = listeObservation.getIdSelectionnees();
994
		String[] ids = listeObservation.getIdSelectionnees();
1000
		observationModele.mettreAjourMotsCles(motsClesEnCours, idsObsALier);
995
		observationModele.mettreAjourMotsCles(motsClesEnCours, idsObsALier);
1001
 
996
 
1002
	}
997
	}
1003
 
998
 
1004
	/**
999
	/**
1005
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots
1000
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots
1006
	 * clés
1001
	 * clés
1007
	 * 
1002
	 * 
1008
	 * @param n
1003
	 * @param n
1009
	 *            le noeud à ajouter à l'arbre
1004
	 *            le noeud à ajouter à l'arbre
1010
	 * @param arbreMC
1005
	 * @param arbreMC
1011
	 *            le nouvel arbre de mots clés à mettre à jour
1006
	 *            le nouvel arbre de mots clés à mettre à jour
1012
	 */
1007
	 */
1013
	public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
1008
	public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
1014
		observationModele.ajouterMotCleDansArbre(n, arbreMC);
1009
		observationModele.ajouterMotCleDansArbre(n, arbreMC);
1015
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
1010
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
1016
 
1011
 
1017
	}
1012
	}
1018
 
1013
 
1019
	/**
1014
	/**
1020
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre
1015
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre
1021
	 * dans l'arbre des mots clés
1016
	 * dans l'arbre des mots clés
1022
	 * 
1017
	 * 
1023
	 * @param n
1018
	 * @param n
1024
	 *            le noeud à supprimer
1019
	 *            le noeud à supprimer
1025
	 * @param arbreMC
1020
	 * @param arbreMC
1026
	 *            le nouvel arbre de mots clés à mettre à jour
1021
	 *            le nouvel arbre de mots clés à mettre à jour
1027
	 */
1022
	 */
1028
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1023
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1029
 
1024
 
1030
		observationModele.supprimerMotCleDansArbre(n, arbreMC);
1025
		observationModele.supprimerMotCleDansArbre(n, arbreMC);
1031
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n.getId(), false);
1026
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n.getId(), false);
1032
 
1027
 
1033
	}
1028
	}
1034
 
1029
 
1035
	/**
1030
	/**
1036
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots
1031
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots
1037
	 * clés
1032
	 * clés
1038
	 * 
1033
	 * 
1039
	 * @param n
1034
	 * @param n
1040
	 *            le noeud à modifier
1035
	 *            le noeud à modifier
1041
	 * @param arbreMC
1036
	 * @param arbreMC
1042
	 *            le nouvel arbre de mots clés à mettre à jour
1037
	 *            le nouvel arbre de mots clés à mettre à jour
1043
	 */
1038
	 */
1044
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
1039
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
1045
 
1040
 
1046
		observationModele.modifierMotCleDansArbre(n, arbreMC);
1041
		observationModele.modifierMotCleDansArbre(n, arbreMC);
1047
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
1042
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
1048
 
1043
 
1049
	}
1044
	}
1050
 
1045
 
1051
	/**
1046
	/**
1052
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans
1047
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans
1053
	 * l'arbre des mots clés
1048
	 * l'arbre des mots clés
1054
	 * 
1049
	 * 
1055
	 * @param n
1050
	 * @param n
1056
	 *            le noeud à déplacer
1051
	 *            le noeud à déplacer
1057
	 * @param arbreMC
1052
	 * @param arbreMC
1058
	 *            le nouvel arbre de mots clés à mettre à jour
1053
	 *            le nouvel arbre de mots clés à mettre à jour
1059
	 */
1054
	 */
1060
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1055
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1061
 
1056
 
1062
		observationModele.deplacerMotCleDansArbre(n, arbreMC);
1057
		observationModele.deplacerMotCleDansArbre(n, arbreMC);
1063
	}
1058
	}
1064
 
1059
 
1065
 
1060
 
1066
	public void rafraichirArbreMotsCles(Tree arbreMotsCles) {
1061
	public void rafraichirArbreMotsCles(Tree arbreMotsCles) {
1067
		
1062
		
1068
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(arbreMotsCles, false);
1063
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(arbreMotsCles, false);
1069
		
1064
		
1070
	}
1065
	}
1071
	
1066
	
1072
	public boolean observationAvoirMotCle(String idMotCle, String idObs) {
1067
	public boolean observationAvoirMotCle(String idMotCle, String idObs) {
1073
		Observation obs = obtenirCacheObservation().get(idObs);
1068
		Observation obs = obtenirCacheObservation().get(idObs);
1074
		if(obs == null) {
1069
		if(obs == null) {
1075
			return false;
1070
			return false;
1076
		}
1071
		}
1077
		
1072
		
1078
		if(obs.getMotsCles().contains(idMotCle)) {
1073
		if(obs.getMotsCles().contains(idMotCle)) {
1079
			return true;
1074
			return true;
1080
		}
1075
		}
1081
		
1076
		
1082
		return false;
1077
		return false;
1083
	}
1078
	}
1084
 
1079
 
1085
 
1080
 
1086
	public void obtenirArbreMotsCles(Rafraichissable r) {
1081
	public void obtenirArbreMotsCles(Rafraichissable r) {
1087
		
1082
		
1088
		observationModele.obtenirArbreMotsCles(r);
1083
		observationModele.obtenirArbreMotsCles(r);
1089
	}
1084
	}
1090
	
1085
	
1091
	public String[] obtenirTexteMotsCles(String[] idsMotsCles) {
1086
	public String[] obtenirTexteMotsCles(String[] idsMotsCles) {
1092
		
1087
		
1093
		String[] tableauMotsClesTexte = new String[idsMotsCles.length];
1088
		String[] tableauMotsClesTexte = new String[idsMotsCles.length];
1094
		
1089
		
1095
		for(int i=0; i< idsMotsCles.length; i++) {
1090
		for(int i=0; i< idsMotsCles.length; i++) {
1096
			tableauMotsClesTexte[i] = observationModele.obtenirTexteMotCle(idsMotsCles[i]);
1091
			tableauMotsClesTexte[i] = observationModele.obtenirTexteMotCle(idsMotsCles[i]);
1097
		}
1092
		}
1098
		
1093
		
1099
		return tableauMotsClesTexte;
1094
		return tableauMotsClesTexte;
1100
	}
1095
	}
1101
	
1096
	
1102
	public ListeObservation obtenirCacheObservation() {
1097
	public ListeObservation obtenirCacheObservation() {
1103
		return observationModele.getCacheObservation();
1098
		return observationModele.getCacheObservation();
1104
	}
1099
	}
1105
 
1100
 
1106
	public void donneesExterieures(Object nouvelleDonnees) {
1101
	public void donneesExterieures(Object nouvelleDonnees) {
1107
		if(nouvelleDonnees instanceof Tree) {
1102
		if(nouvelleDonnees instanceof Tree) {
1108
			
1103
			
1109
			Tree arbreMotsCles = (Tree)nouvelleDonnees ;
1104
			Tree arbreMotsCles = (Tree)nouvelleDonnees ;
1110
			observationModele.rafraichirArbreMotsCles(nouvelleDonnees);
1105
			observationModele.rafraichirArbreMotsCles(nouvelleDonnees);
1111
			rafraichirArbreMotsCles(arbreMotsCles);
1106
			rafraichirArbreMotsCles(arbreMotsCles);
1112
		}
1107
		}
1113
	}
1108
	}
1114
	
1109
	
1115
	public void transmettreDonnees(Object o) {
1110
	public void transmettreDonnees(Object o) {
1116
		carnetEnLigneMediateur.donneesObsVersImages(o);
1111
		carnetEnLigneMediateur.donneesObsVersImages(o);
1117
	}
1112
	}
1118
 
1113
 
1119
	public void onModeModification() {
1114
	public void onModeModification() {
1120
		
1115
		
1121
		String[] ids = listeObservation.getIdSelectionnees();
1116
		String[] ids = listeObservation.getIdSelectionnees();
1122
		Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1117
		Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1123
		
1118
		
1124
		if(ids.length > 1) {
1119
		if(ids.length > 1) {
1125
			formulaireSaisieObservationVue.setMasseModification(true);
1120
			formulaireSaisieObservationVue.setMasseModification(true);
1126
			ListeObservation listeObs = new ListeObservation();
1121
			ListeObservation listeObs = new ListeObservation();
1127
			for(int i=0; i < ids.length;i++) {
1122
			for(int i=0; i < ids.length;i++) {
1128
				Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
1123
				Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
1129
				listeObs.ajouterObservation(obsAjout);
1124
				listeObs.ajouterObservation(obsAjout);
1130
			}
1125
			}
1131
			formulaireSaisieObservationVue.rafraichir(listeObs, false);
1126
			formulaireSaisieObservationVue.rafraichir(listeObs, false);
1132
		} else {
1127
		} else {
1133
			formulaireSaisieObservationVue.setMasseModification(false);
1128
			formulaireSaisieObservationVue.setMasseModification(false);
1134
			// affichage des détails dans le formulaire d'observation
1129
			// affichage des détails dans le formulaire d'observation
1135
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1130
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1136
		}
1131
		}
1137
		
1132
		
1138
		formulaireSaisieObservationVue.setTitle("Modification");
1133
		formulaireSaisieObservationVue.setTitle("Modification");
1139
	}
1134
	}
1140
	
1135
	
1141
	public void onModeCreation() {
1136
	public void onModeCreation() {
1142
		
1137
		
1143
		formulaireSaisieObservationVue.setTitle("Création");
1138
		formulaireSaisieObservationVue.setTitle("Création");
1144
		String[] ids = listeObservation.getIdSelectionnees();
1139
		String[] ids = listeObservation.getIdSelectionnees();
1145
		
1140
		
1146
		if(ids.length > 1) {
1141
		if(ids.length > 1) {
1147
			Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1142
			Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1148
			// affichage des détails dans le formulaire d'observation
1143
			// affichage des détails dans le formulaire d'observation
1149
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1144
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1150
		}
1145
		}
1151
	}
1146
	}
1152
 
1147
 
1153
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
1148
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
1154
		observationModele.obtenirInformationCoord(r,coord);
1149
		observationModele.obtenirInformationCoord(r,coord);
1155
	}
1150
	}
1156
	
1151
	
1157
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
1152
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
1158
		observationModele.obtenirInformationCommune(r,nomCommune, codePostal);
1153
		observationModele.obtenirInformationCommune(r,nomCommune, codePostal);
1159
	}
1154
	}
1160
 
1155
 
1161
	public void obtenirInformationCoord(LatLng coord) {
1156
	public void obtenirInformationCoord(LatLng coord) {
1162
		observationModele.obtenirInformationCoord(cartoObservationVue,coord);
1157
		observationModele.obtenirInformationCoord(cartoObservationVue,coord);
1163
	}
1158
	}
1164
 
1159
 
1165
	public void obtenirInformationCommune(String nomCommune,
1160
	public void obtenirInformationCommune(String nomCommune,
1166
			String codePostal) {
1161
			String codePostal) {
1167
		observationModele.obtenirInformationCommune(cartoObservationVue,nomCommune, codePostal);
1162
		observationModele.obtenirInformationCommune(cartoObservationVue,nomCommune, codePostal);
1168
	}
1163
	}
1169
 
1164
 
1170
	public void rafraichirSaisieCommuneObservation(EntiteGeographiqueObservation infosCommune) {
1165
	public void rafraichirSaisieCommuneObservation(EntiteGeographiqueObservation infosCommune) {
1171
		formulaireSaisieObservationVue.rafraichir(infosCommune, false);
1166
		formulaireSaisieObservationVue.rafraichir(infosCommune, false);
1172
		cacherFenetreCarto();
1167
		cacherFenetreCarto();
1173
	}
1168
	}
1174
 
1169
 
1175
	private void razFiltres() {
1170
	private void razFiltres() {
1176
		
-
 
1177
		filtres.getArbreDateObservationFiltreVue().raz() ;
1171
		filtres.getArbreDateObservationFiltreVue().raz() ;
1178
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
1172
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
1179
		filtres.getArbreMotsClesObservationVue().raz();
1173
		filtres.getArbreMotsClesObservationVue().raz();
1180
		filtres.getRechercheLibreVue().raz();
1174
		filtres.getRechercheLibreVue().raz();
1181
	}
1175
	}
1182
	
1176
	
1183
 
1177
 
1184
	public void viderFiltre(String nom) {
1178
	public void viderFiltre(String nom) {
1185
		filtres.viderFiltres(nom);
1179
		filtres.viderFiltres(nom);
1186
		obtenirNombreObservation();
1180
		obtenirNombreObservation();
1187
	}
1181
	}
1188
 
1182
 
1189
	public Component getListeObservation() {
1183
	public Component getListeObservation() {
1190
		
-
 
1191
		return listeObservation;
1184
		return listeObservation;
1192
	}
1185
	}
1193
 
1186
 
1194
	public void redimensionnerPanneaux(int adjHeight, int adjWidth) {	
1187
	public void redimensionnerPanneaux(int adjHeight, int adjWidth) {	
1195
		formulaireSaisieObservationVue.setHeight(300);
1188
		formulaireSaisieObservationVue.setHeight(300);
1196
		listeObservation.setHeight(adjHeight/2);
1189
		listeObservation.setHeight(adjHeight/2);
1197
		centre.doLayout();
1190
		centre.doLayout();
1198
	}
1191
	}
1199
 
1192
 
1200
	public void afficherFormulaireImportObservation() {
1193
	public void afficherFormulaireImportObservation() {
1201
		if (formImportObs==null) { // lazy inst. 
1194
		if (formImportObs==null) { // lazy inst. 
1202
			formImportObs = new FormulaireImportObservationVue(this);
1195
			formImportObs = new FormulaireImportObservationVue(this);
1203
		}
1196
		}
1204
		formImportObs.afficher();
1197
		formImportObs.afficher();	
1205
		
-
 
1206
		
-
 
1207
	}
1198
	}
1208
 
1199
 
1209
	public void setImporterObservationsAnonymes(boolean importerObservations) {
1200
	public void setImporterObservationsAnonymes(boolean importerObservations) {
1210
		this.importerObservations = importerObservations;
1201
		this.importerObservations = importerObservations;
1211
	}
1202
	}
1212
	
1203
	
1213
 
1204
 
1214
	private void localiserSurCommuneSelectionnee() {
1205
	private void localiserSurCommuneSelectionnee() {
1215
		
1206
		
1216
		cartoObservationVue.masquerChargement(true);
1207
		cartoObservationVue.masquerChargement(true);
1217
		
1208
		
1218
		double[] coordsTab = formulaireSaisieObservationVue.coordonneesValides();
1209
		double[] coordsTab = formulaireSaisieObservationVue.coordonneesValides();
1219
		
1210
		
1220
		if(formulaireSaisieObservationVue.coordonneesValides() != null && !formulaireSaisieObservationVue.getCommune().equals("")) {
1211
		if(formulaireSaisieObservationVue.coordonneesValides() != null && !formulaireSaisieObservationVue.getCommune().equals("")) {
1221
			
1212
			
1222
			String nomCommune = formulaireSaisieObservationVue.getCommuneSansDepartement();
1213
			String nomCommune = formulaireSaisieObservationVue.getCommuneSansDepartement();
1223
			String dptCommune = formulaireSaisieObservationVue.getDepartement();
1214
			String dptCommune = formulaireSaisieObservationVue.getDepartement();
1224
			EntiteGeographiqueObservation egeo = new EntiteGeographiqueObservation(dptCommune, nomCommune, "","");
1215
			EntiteGeographiqueObservation egeo = new EntiteGeographiqueObservation(dptCommune, nomCommune, "","");
1225
			egeo.setLat(coordsTab[0]+"");
1216
			egeo.setLat(coordsTab[0]+"");
1226
			egeo.setLon(coordsTab[1]+"");
1217
			egeo.setLon(coordsTab[1]+"");
1227
			
1218
			
1228
			cartoObservationVue.rafraichir(egeo, false);
1219
			cartoObservationVue.rafraichir(egeo, false);
1229
			
1220
			
1230
		} else {	
1221
		} else {	
1231
			if(formulaireSaisieObservationVue.coordonneesValides() != null) {
1222
			if(formulaireSaisieObservationVue.coordonneesValides() != null) {
1232
				LatLng coords = LatLng.newInstance(coordsTab[0],coordsTab[1]);
1223
				LatLng coords = LatLng.newInstance(coordsTab[0],coordsTab[1]);
1233
				obtenirInformationCoord(coords);
1224
				obtenirInformationCoord(coords);
1234
			} else if (formulaireSaisieObservationVue.communeInitialisee()) {
1225
			} else if (formulaireSaisieObservationVue.communeInitialisee()) {
1235
				String nomCommune = formulaireSaisieObservationVue.getCommune();
1226
				String nomCommune = formulaireSaisieObservationVue.getCommune();
1236
				String dptCommune = formulaireSaisieObservationVue.getDepartement();
1227
				String dptCommune = formulaireSaisieObservationVue.getDepartement();
1237
				obtenirInformationCommune(nomCommune, dptCommune);
1228
				obtenirInformationCommune(nomCommune, dptCommune);
1238
			} else {
1229
			} else {
1239
				obtenirInformationCoord(cartoObservationVue.getCentreFrance());
1230
				obtenirInformationCoord(cartoObservationVue.getCentreFrance());
1240
			}
1231
			}
1241
		}
1232
		}
1242
	}
1233
	}
1243
 
1234
 
1244
	public void afficherFenetreCarto() {
1235
	public void afficherFenetreCarto() {
1245
		int hauteur = (int)Math.round(Window.getClientHeight()*0.75);
1236
		int hauteur = (int)Math.round(Window.getClientHeight()*0.75);
1246
		int largeur = (int)Math.round(Window.getClientWidth()*0.75);
1237
		int largeur = (int)Math.round(Window.getClientWidth()*0.75);
1247
		fenetreCarto.setSize(largeur, hauteur);
1238
		fenetreCarto.setSize(largeur, hauteur);
1248
		if(!fenetreCarto.isVisible()) {
1239
		if(!fenetreCarto.isVisible()) {
1249
			fenetreCarto.show();
1240
			fenetreCarto.show();
1250
		}
1241
		}
1251
		cartoObservationVue.setTailleCarte(hauteur - 20, largeur - 20);
1242
		cartoObservationVue.setTailleCarte(hauteur - 20, largeur - 20);
1252
		cartoObservationVue.recentrerCarte();
1243
		cartoObservationVue.recentrerCarte();
1253
	}
1244
	}
1254
	
1245
	
1255
	
1246
	
1256
 
1247
 
1257
	private void cacherFenetreCarto() {
1248
	private void cacherFenetreCarto() {
1258
		if(fenetreCarto.isVisible()) {
1249
		if(fenetreCarto.isVisible()) {
1259
			fenetreCarto.hide();
1250
			fenetreCarto.hide();
1260
		}
1251
		}
1261
	}
1252
	}
-
 
1253
 
-
 
1254
	public InfosReferentielNom getRefTaxSelectionne() {
-
 
1255
		return refTaxSelectionne;
-
 
1256
	}
-
 
1257
	
-
 
1258
	public void setRefTaxSelectionne(int index) {
-
 
1259
		refTaxSelectionne = Configuration.getReferentielsDispos().get(index);
-
 
1260
	}
-
 
1261
	
-
 
1262
	public void setRefTaxSelectionne(InfosReferentielNom refTax) {
-
 
1263
		refTaxSelectionne = refTax;
-
 
1264
	}
1262
}
1265
}