Subversion Repositories eFlore/Applications.cel

Rev

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

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