Subversion Repositories eFlore/Applications.cel

Rev

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

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