Subversion Repositories eFlore/Applications.cel

Rev

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

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