Subversion Repositories eFlore/Applications.cel

Rev

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

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