Subversion Repositories eFlore/Applications.cel

Rev

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

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