Subversion Repositories eFlore/Applications.cel

Rev

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

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