Subversion Repositories eFlore/Applications.cel

Rev

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

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