Subversion Repositories eFlore/Applications.cel

Rev

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

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