Subversion Repositories eFlore/Applications.cel

Rev

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

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