Subversion Repositories eFlore/Applications.cel

Rev

Rev 1547 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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