Subversion Repositories eFlore/Applications.cel

Rev

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

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