Subversion Repositories eFlore/Applications.cel

Rev

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

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