Subversion Repositories eFlore/Applications.cel

Rev

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

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