Subversion Repositories eFlore/Applications.cel

Rev

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

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