Subversion Repositories eFlore/Applications.cel

Rev

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

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