Subversion Repositories eFlore/Applications.cel

Rev

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

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