Subversion Repositories eFlore/Applications.cel

Rev

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

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