Subversion Repositories eFlore/Applications.cel

Rev

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

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