Subversion Repositories eFlore/Applications.cel

Rev

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

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