Subversion Repositories eFlore/Applications.cel

Rev

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

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