Subversion Repositories eFlore/Applications.cel

Rev

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

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