Subversion Repositories eFlore/Applications.cel

Rev

Rev 437 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.observation;
2
 
12 david 3
 
86 jpm 4
 
82 david 5
// TODO : systematiser les onQuelquechose, appelle depuis les vues
6
 
156 aurelien 7
 
2 aperonnet 8
import org.tela_botanica.client.CarnetEnLigneMediateur;
12 david 9
import org.tela_botanica.client.interfaces.Rafraichissable;
251 aurelien 10
import org.tela_botanica.client.modeles.EntiteGeographiqueObservation;
12 david 11
import org.tela_botanica.client.modeles.ListeObservation;
2 aperonnet 12
import org.tela_botanica.client.modeles.Observation;
251 aurelien 13
import org.tela_botanica.client.vues.observation.CartographieObservationVue;
437 aurelien 14
import org.tela_botanica.client.vues.observation.FormulaireImportObservationVue;
195 david 15
import org.tela_botanica.client.vues.observation.FormulaireSaisieObservationVue;
16
import org.tela_botanica.client.vues.observation.ListeObservationVue;
17
import org.tela_botanica.client.vues.observation.MenuObservationVue;
18
import org.tela_botanica.client.vues.observation.PanneauFiltresObservationVues;
196 david 19
import org.tela_botanica.client.vues.observation.indicateurs.ImageGeneriqueVue;
20
import org.tela_botanica.client.vues.observation.indicateurs.InformationRepartitionVue;
318 aurelien 21
import org.tela_botanica.client.vues.observation.indicateurs.LienExterneVue;
196 david 22
import org.tela_botanica.client.vues.observation.indicateurs.MiniZoomImageVue;
23
import org.tela_botanica.client.vues.observation.indicateurs.NuageMotsClesVue;
115 aurelien 24
 
53 david 25
import com.google.gwt.core.client.GWT;
410 aurelien 26
import com.google.gwt.core.client.JavaScriptObject;
27
import com.google.gwt.dev.util.Util;
28
import com.google.gwt.dom.client.Node;
29
import com.google.gwt.http.client.Request;
30
import com.google.gwt.http.client.RequestBuilder;
31
import com.google.gwt.http.client.RequestCallback;
32
import com.google.gwt.http.client.RequestException;
33
import com.google.gwt.http.client.Response;
34
import com.google.gwt.http.client.URL;
251 aurelien 35
import com.google.gwt.maps.client.geom.LatLng;
410 aurelien 36
import com.google.gwt.user.client.Element;
140 aurelien 37
import com.google.gwt.user.client.History;
410 aurelien 38
import com.google.gwt.user.client.Timer;
77 jpm 39
import com.google.gwt.user.client.Window;
410 aurelien 40
import com.google.gwt.user.client.ui.HTML;
41
import com.google.gwt.user.server.Base64Utils;
42
import com.gwtext.client.core.DomConfig;
43
import com.gwtext.client.core.DomHelper;
41 jpm 44
import com.gwtext.client.core.EventObject;
86 jpm 45
import com.gwtext.client.core.Ext;
46
import com.gwtext.client.core.ExtElement;
53 david 47
import com.gwtext.client.core.RegionPosition;
217 aurelien 48
import com.gwtext.client.data.Record;
156 aurelien 49
import com.gwtext.client.data.Tree;
342 aurelien 50
import com.gwtext.client.dd.DragData;
251 aurelien 51
import com.gwtext.client.widgets.BoxComponent;
86 jpm 52
import com.gwtext.client.widgets.Component;
251 aurelien 53
import com.gwtext.client.widgets.Container;
12 david 54
import com.gwtext.client.widgets.Panel;
156 aurelien 55
import com.gwtext.client.widgets.TabPanel;
86 jpm 56
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
202 david 57
import com.gwtext.client.widgets.event.PanelListenerAdapter;
251 aurelien 58
import com.gwtext.client.widgets.event.TabPanelListenerAdapter;
342 aurelien 59
import com.gwtext.client.widgets.grid.GridDragData;
53 david 60
import com.gwtext.client.widgets.layout.BorderLayout;
61
import com.gwtext.client.widgets.layout.BorderLayoutData;
156 aurelien 62
import com.gwtext.client.widgets.layout.FitLayout;
53 david 63
import com.gwtext.client.widgets.layout.RowLayout;
80 jpm 64
import com.gwtext.client.widgets.layout.RowLayoutData;
156 aurelien 65
import com.gwtext.client.widgets.tree.TreeNode;
2 aperonnet 66
 
48 david 67
 
12 david 68
/**
69
 * Mediateur gérant les interactions entre vues et les echanges de données
70
 * C'est un singleton.
71
 * @author aurelien
72
 *
73
 */
47 david 74
public class ObservationMediateur {
12 david 75
 
76
	/**
77
	 * booleen qui verifie l'unicite de l'instance (donc static)
78
	 */
31 jpm 79
	private static boolean estInstancie = false ;
80
 
81
	/**
82
	 * pointeur sur le médiateur (pour le pattern singleton)
83
	 */
84
	private static ObservationMediateur thisMediateur = null ;
12 david 85
 
86
	/** Mediateur general de l'application carnet en ligne
87
	 *
88
	 *
89
	 */
90
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
91
 
92
 
93
	/**
94
	 * modele de données
95
	 */
96
	private ObservationModele observationModele = null ;
97
 
98
 
99
	/**
100
	 * panneau principal des Observation (onglet "observation")
101
	 */
209 aurelien 102
	private final Panel panneauPrincipalObservation = new Panel("Observations");
12 david 103
 
104
 
105
	/**
106
	 * liste détaillée des Observations
107
	 */
318 aurelien 108
	public ListeObservationVue listeObservation = null ;
12 david 109
 
110
	/**
111
	 * Saisie des Observations
112
	 */
113
 
114
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
115
 
251 aurelien 116
	/**
117
	 * Cartographie
118
	 */
119
	private CartographieObservationVue cartoObservationVue = null;
48 david 120
 
251 aurelien 121
 
48 david 122
 
12 david 123
	/**
124
	 * booleen explicitant s'il y a une selection en cours
125
	 */
156 aurelien 126
	private boolean selection = false ;
12 david 127
	/**
53 david 128
	 * panneau conteneur pour le panneau  des informations lies à l'observation
129
	 */
12 david 130
 
318 aurelien 131
  	private Panel details = new Panel("Details");
53 david 132
 
318 aurelien 133
  	private LienExterneVue liExtVue = null;
53 david 134
 
12 david 135
	/**
53 david 136
	 * panneau conteneur pour le panneau des filtres
137
	 */
138
 
54 david 139
  	private PanneauFiltresObservationVues filtres = null;
53 david 140
 
141
 
54 david 142
 
143
  	/**
144
  	 * panneau d'information de repartition sur le nom selectionné
145
  	 *
146
  	 */
147
 
148
  	private InformationRepartitionVue informationRepartitionVue=null;
149
 
150
 
151
  	/**
152
  	 * panneau d'affichage d'une image generique associe au nom selectionne
153
  	 *
154
  	 */
155
 
156
  	private ImageGeneriqueVue imageGeneriqueVue=null;
157
 
94 jpm 158
  	private MiniZoomImageVue mvz = null ;
54 david 159
 
115 aurelien 160
  	private NuageMotsClesVue nuaMC = null;
94 jpm 161
 
125 aurelien 162
  	private Panel conteneurFormulaire = null ;
115 aurelien 163
 
140 aurelien 164
  	private boolean importerObservations = false ;
251 aurelien 165
 
166
	private TabPanel ongletsSaisieCarto;
167
 
168
	private Panel centre;
140 aurelien 169
 
53 david 170
	/**
12 david 171
	 * constructeur privé (on accède a la classe par la méthode getInstance
172
	 */
173
 
174
 
175
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
176
	{
177
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
251 aurelien 178
 
12 david 179
		// on crée un modèle
180
		observationModele = ObservationModele.Instance(this);
181
 
48 david 182
 
12 david 183
		listeObservation = new ListeObservationVue(this);
53 david 184
		listeObservation.setTitle("Observations");
12 david 185
 
53 david 186
		// quelques variables de position pour les borderlayouts
187
		final BorderLayoutData regionNord = new BorderLayoutData(
188
				RegionPosition.NORTH);
189
 
190
		final BorderLayoutData regionCentre = new BorderLayoutData(
191
				RegionPosition.CENTER);
342 aurelien 192
		regionCentre.setSplit(true);
53 david 193
 
194
 
195
		final BorderLayoutData regionEst = new BorderLayoutData(
196
				RegionPosition.EAST);
342 aurelien 197
		regionEst.setSplit(true);
53 david 198
 
199
 
200
		final BorderLayoutData regionOuest = new BorderLayoutData(
201
				RegionPosition.WEST);
342 aurelien 202
		regionOuest.setSplit(true);
12 david 203
 
53 david 204
 
205
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
206
 
115 aurelien 207
		// on ajoute un panneau supplémentaire pour contenir le formulaire, pour éviter un bug de taille
208
		// des panneaux
125 aurelien 209
		conteneurFormulaire = new Panel();
251 aurelien 210
		cartoObservationVue = new CartographieObservationVue(this);
211
		cartoObservationVue.setLayout(new FitLayout());
53 david 212
 
12 david 213
		// Le formulaire de saisie / modification d'observation
214
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
115 aurelien 215
		formulaireSaisieObservationVue.setHeader(false);
216
		conteneurFormulaire.setTitle("Saisie");
217
		conteneurFormulaire.setTitleCollapse(true);
218
		conteneurFormulaire.setCollapsible(true) ;
202 david 219
		conteneurFormulaire.setAutoScroll(true) ;
220
		// Redimensionnement global sur collapse/expand
251 aurelien 221
 
222
 
223
		ongletsSaisieCarto = new TabPanel();
224
 
202 david 225
		conteneurFormulaire.addListener(
226
		new PanelListenerAdapter() {
251 aurelien 227
			public void onCollapse(Panel panel)  {
318 aurelien 228
				CarnetEnLigneMediateur.fireResize();
251 aurelien 229
			}
230
		    public void onExpand(Panel panel) {
318 aurelien 231
		    	CarnetEnLigneMediateur.fireResize();
251 aurelien 232
		    }
233
		});
234
 
235
		ongletsSaisieCarto.addListener(new TabPanelListenerAdapter() {
236
 
237
			public void onActivate(Panel panel) {
238
 
239
				if (panel.equals(conteneurFormulaire)) {
240
					if (!cartoObservationVue.isCarteAjoutee()) {
392 aurelien 241
 
267 aurelien 242
						if(formulaireSaisieObservationVue.communeInitialisee()) {
243
							String nomCommune = formulaireSaisieObservationVue.getCommune();
244
							String codePostal = formulaireSaisieObservationVue.getDepartement();
245
							obtenirInformationCommune(nomCommune, codePostal);
246
						}
247
						cartoObservationVue.initialiserCarte(formulaireSaisieObservationVue.communeInitialisee());
202 david 248
					}
251 aurelien 249
				} else {
250
						cartoObservationVue.recentrerCarte();
251
				}
252
			}
253
 
254
			public boolean doBeforeTabChange(TabPanel source, Panel newPanel,
255
					Panel oldPanel) {
256
				if (newPanel.equals(cartoObservationVue)) {
257
					if (!cartoObservationVue.isCarteAjoutee()) {
267 aurelien 258
						cartoObservationVue.initialiserCarte(formulaireSaisieObservationVue.communeInitialisee());
251 aurelien 259
					}
283 aurelien 260
					listeObservation.collapse(false);
261
				} else {
262
					listeObservation.expand(false);
251 aurelien 263
				}
264
				return true;
265
			}
202 david 266
		});
53 david 267
 
251 aurelien 268
		centre = new Panel();
269
		centre.setLayout(new BorderLayout());
202 david 270
		centre.setAutoScroll(true);
271
		centre.setBorder(false);
201 david 272
 
251 aurelien 273
		centre.addListener(
274
			new PanelListenerAdapter() {
275
				public void onCollapse(Panel panel)  {
318 aurelien 276
					CarnetEnLigneMediateur.fireResize();
251 aurelien 277
				}
278
			    public void onExpand(Panel panel) {
318 aurelien 279
			    	CarnetEnLigneMediateur.fireResize();
251 aurelien 280
			    }
281
 
282
				public void onResize(BoxComponent component, int adjWidth,
283
						int adjHeight, int rawWidth, int rawHeight) {
318 aurelien 284
					ongletsSaisieCarto.doLayout();
285
					listeObservation.doLayout();
251 aurelien 286
				}
287
 
288
				public void onAfterLayout(Container self) {
363 aurelien 289
 
251 aurelien 290
				}
291
		});
292
 
115 aurelien 293
		formulaireSaisieObservationVue.setBorder(false);
294
		conteneurFormulaire.add(formulaireSaisieObservationVue);
12 david 295
 
251 aurelien 296
		ongletsSaisieCarto.add(conteneurFormulaire);
297
		ongletsSaisieCarto.add(cartoObservationVue);
156 aurelien 298
 
251 aurelien 299
		BorderLayoutData listeLayoutData = new BorderLayoutData(RegionPosition.SOUTH);
300
		listeLayoutData.setSplit(true);
301
 
302
		BorderLayoutData formLayoutData = new BorderLayoutData(RegionPosition.CENTER);
303
		listeLayoutData.setSplit(true);
304
 
305
		centre.add(listeObservation, listeLayoutData);
306
		centre.add(ongletsSaisieCarto, formLayoutData);
202 david 307
 
308
		// Redimensionnement global sur collapse/expand
318 aurelien 309
		details.addListener(
202 david 310
		new PanelListenerAdapter() {
251 aurelien 311
			public void onCollapse(Panel panel)  {
318 aurelien 312
				CarnetEnLigneMediateur.fireResize();
251 aurelien 313
			}
314
		    public void onExpand(Panel panel) {
318 aurelien 315
		    	CarnetEnLigneMediateur.fireResize();
251 aurelien 316
		    }
202 david 317
		});
251 aurelien 318
 
53 david 319
		// on initialise le volet qui contient les details
318 aurelien 320
		details.setWidth("10%");
321
		details.setTitleCollapse(true);
322
		details.setCollapsible(true);
156 aurelien 323
 
324
		details.setAutoScroll(true);
54 david 325
		details.setLayout(new RowLayout());
53 david 326
 
318 aurelien 327
		// Lien vers eflore
328
		liExtVue = new LienExterneVue(this);
329
		liExtVue.setHeight("20px");
330
		details.add(liExtVue);
156 aurelien 331
 
54 david 332
		// Information de repartition
333
		informationRepartitionVue=new InformationRepartitionVue(this);
318 aurelien 334
		details.add(informationRepartitionVue, new RowLayoutData("30%"));
54 david 335
 
336
		// Image generique
337
		imageGeneriqueVue=new ImageGeneriqueVue(this);
318 aurelien 338
		details.add(imageGeneriqueVue, new RowLayoutData("30%"));
54 david 339
 
94 jpm 340
		mvz = new MiniZoomImageVue(this) ;
54 david 341
 
136 aurelien 342
		details.add(mvz, new RowLayoutData("34%")) ;
94 jpm 343
 
54 david 344
		// on crée le panneau des filtres
345
		filtres = new PanneauFiltresObservationVues(this);
346
 
347
		// on initialise le volet qui contient les filtres
136 aurelien 348
		filtres.setWidth("10%");
53 david 349
		filtres.setTitleCollapse(true);
350
		filtres.setCollapsible(true);
54 david 351
 
202 david 352
 
353
		filtres.addListener(
251 aurelien 354
			new PanelListenerAdapter() {
355
				public void onCollapse(Panel panel)  {
318 aurelien 356
					CarnetEnLigneMediateur.fireResize();
251 aurelien 357
				}
358
			    public void onExpand(Panel panel) {
318 aurelien 359
			    	CarnetEnLigneMediateur.fireResize();
251 aurelien 360
			    }
202 david 361
		});
362
 
318 aurelien 363
		panneauPrincipalObservation.add(details,regionEst);
156 aurelien 364
 
53 david 365
		panneauPrincipalObservation.add(filtres,regionOuest);
366
		panneauPrincipalObservation.add(centre,regionCentre);
367
 
12 david 368
	}
410 aurelien 369
 
12 david 370
	/**
371
	 * Retourne une instance de manière unique
372
	 * @return l'instance unique du médiateur
373
	 */
374
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
375
	{
31 jpm 376
			if(!estInstancie || thisMediateur == null)
12 david 377
			{
378
				estInstancie = true ;
31 jpm 379
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
12 david 380
			}
31 jpm 381
 
382
			return thisMediateur ;
12 david 383
	}
140 aurelien 384
 
385
 
386
	public void connecterUtilisateur() {
387
 
388
		if(importerObservations) {
389
 
390
			observationModele.importerObservations();
391
		}
392
 
393
		if(panneauPrincipalObservation == null || !panneauPrincipalObservation.isCreated())
394
		{
395
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
396
			{
397
				public void onRender(Component c)
398
				{
399
					panneauPrincipalObservation.purgeListeners() ;
261 aurelien 400
					initialiserArbres();
401
					filtres.getRechercheLibreVue().raz();
140 aurelien 402
					obtenirNombreObservation();
403
					analyserHistorique();
404
				}
405
			}) ;
406
		}
407
		else
408
		{
261 aurelien 409
			initialiserArbres();
410
			filtres.getRechercheLibreVue().raz();
140 aurelien 411
			obtenirNombreObservation();
412
			analyserHistorique();
413
		}
414
	}
415
 
416
	private void initialiserArbres() {
417
		getPanneauFiltres().getArbreDateObservationFiltreVue().initialiser();
261 aurelien 418
		getPanneauFiltres().getArbreEntiteGeographiqueObservationFiltreVue().initialiser();
342 aurelien 419
		getPanneauFiltres().getArbreMotsClesObservationVue().initialiser();
140 aurelien 420
	}
82 david 421
 
12 david 422
 
423
 
82 david 424
	// ACTIONS  a entreprendre lors d'un evenement particulier
12 david 425
 
82 david 426
 
12 david 427
	/**
82 david 428
	 * Lors du raffraichissement de la liste d'observation
429
	 */
430
 
431
 
432
	public void onRafraichissementListeObservations() {
433
 
173 aurelien 434
		carnetEnLigneMediateur.donneesObsVersImages(listeObservation.getCacheListeObservation());
156 aurelien 435
		observationModele.rafraichirCacheObservation(listeObservation.getCacheListeObservation());
342 aurelien 436
 
437
		filtres.getArbreMotsClesObservationVue().cocherMotsCles(new String[0]);
82 david 438
	}
439
 
440
	/**
441
	 *
442
	 * TODO : fonction plus generique, appelle sur un clic ou une selection de ligne, a appeller : SelectionnerObservation
443
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
444
	 * médiateur gère alors les conséquences
445
	 *
446
	 * @param rowIndex
447
	 *            le numéro de ligne selectionné
448
	 */
449
 
450
	public void onClicListeObservation(int rowIndex, String ordreObservation) {
451
 
156 aurelien 452
		Observation obs = obtenirCacheObservation().get(ordreObservation) ;
82 david 453
 
105 aurelien 454
		if(GWT.isScript()) {
455
			masquerChargementInfosObservations() ;
456
		}
86 jpm 457
 
82 david 458
		// Affichage de la carte de repartition correspondante
459
		String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalSaisi() ;
460
 
461
		observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
105 aurelien 462
 
217 aurelien 463
		if(formulaireSaisieObservationVue.getModification()) {
464
			String[] ids = listeObservation.getIdSelectionnees();
465
			if(ids.length > 1) {
466
				formulaireSaisieObservationVue.setMasseModification(true);
467
				ListeObservation listeObs = new ListeObservation();
468
				for(int i=0; i < ids.length;i++) {
469
					Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
470
					listeObs.ajouterObservation(obsAjout);
471
				}
472
				formulaireSaisieObservationVue.rafraichir(listeObs, false);
473
			} else {
474
				formulaireSaisieObservationVue.setMasseModification(false);
475
				// affichage des détails dans le formulaire d'observation
476
				formulaireSaisieObservationVue.rafraichir(obs, false) ;
477
			}
478
		} else {
479
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
480
		}
82 david 481
		// Affichage de l'image correspondante
318 aurelien 482
 
483
		liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
82 david 484
 
485
		observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
94 jpm 486
 
487
		observationModele.obtenirLiaisonImage(mvz, ordreObservation) ;
156 aurelien 488
 
342 aurelien 489
		filtres.getArbreMotsClesObservationVue().rafraichir(obs.getMotsCles(), false);
251 aurelien 490
 
392 aurelien 491
		// si on a des coordonnées valides dans le formulaire alors localise directement avec
492
		if(formulaireSaisieObservationVue.coordonneesValides() != null) {
493
			EntiteGeographiqueObservation infos = new EntiteGeographiqueObservation(obs.getIdentifiantLocalite(), obs.getLocalite(), null, null);
494
			infos.setLat(""+obs.getCoordonneeX());
495
			infos.setLon(""+obs.getCoordonneeY());
496
			cartoObservationVue.rafraichir(infos, false);
497
		} else {
498
			// sinon appel à géonames pour obtenir des coordonnées du centre de la commune
499
			observationModele.obtenirInformationCommune(cartoObservationVue, obs.getLocalite(), obs.getIdentifiantLocalite());
500
		}
82 david 501
	}
502
 
128 aurelien 503
	public void obtenirImageInformationExternes(String numeroNomenclaturalSaisiObservation) {
504
		if(GWT.isScript()) {
505
			masquerChargementInfosObservations() ;
506
		}
410 aurelien 507
		liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
128 aurelien 508
		observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
509
		observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
510
	}
82 david 511
 
217 aurelien 512
	public int getTaillePage() {
513
		return listeObservation.getTaillePage();
514
	}
128 aurelien 515
 
217 aurelien 516
	public int getPageEnCours() {
517
		return listeObservation.getPageEncours();
518
	}
519
 
520
 
82 david 521
	// ACCES au Modèle
522
 
523
 
524
	// C du CRUD
525
 
526
 
527
 
528
	/**
529
	 * TODO : afficher un message du type "observation ajouté".
530
	 * Lance la creation d'une observation
531
	 * @param obs : l'observation saisie
104 jpm 532
	 */
82 david 533
	public void ajouterObservation(Observation obs) {
104 jpm 534
 
82 david 535
	  // On raffraichi la liste d'observation
536
	  observationModele.ajouterObservation(listeObservation, obs) ;
91 jpm 537
	  filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
94 jpm 538
	  filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
82 david 539
 
540
	}
541
 
542
 
543
 
544
	// R du CRUD
545
 
546
	/**
54 david 547
	 * Demande au modele le nombre d'Observation à afficher
548
	 * TODO : grouper cette demande avec la demande d'affichage de liste ?
12 david 549
	 */
2 aperonnet 550
 
12 david 551
	public void obtenirNombreObservation() {
552
 
125 aurelien 553
		listeObservation.masquerChargement() ;
104 jpm 554
		mvz.raz() ;
555
		imageGeneriqueVue.raz() ;
556
		informationRepartitionVue.raz() ;
325 aurelien 557
 
104 jpm 558
		observationModele.obtenirNombreObservation(listeObservation) ;
12 david 559
 
2 aperonnet 560
	}
446 aurelien 561
 
562
	/**
563
	 * Demande au modele le nombre d'Observation à afficher
564
	 * TODO : grouper cette demande avec la demande d'affichage de liste ?
565
	 */
54 david 566
 
446 aurelien 567
	public void obtenirDernierePageObservation() {
568
 
569
		listeObservation.rafraichir(new Observation(),false) ;
570
 
571
	}
572
 
12 david 573
 
82 david 574
 
575
	public void obtenirListeObservation() {
576
		obtenirListeObservation(listeObservation);
577
	}
578
 
2 aperonnet 579
	/**
82 david 580
	 * Demande au modele le detail  des Observations à afficher
54 david 581
	 * TODO : grouper cette demande avec la demande d'affichage de liste ?
2 aperonnet 582
	 */
7 aperonnet 583
 
12 david 584
 
61 jpm 585
	public void obtenirListeObservation(Rafraichissable r) {
586
 
77 jpm 587
		listeObservation.masquerChargement() ;
125 aurelien 588
 
61 jpm 589
		observationModele.obtenirListeObservation(r,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
590
	}
591
 
86 jpm 592
	public void obtenirCacheObservation(Rafraichissable r) {
593
 
156 aurelien 594
		r.rafraichir(observationModele.getCacheObservation(), false) ;
86 jpm 595
	}
596
 
82 david 597
 
2 aperonnet 598
	/**
82 david 599
	 * Envoie au modèle une demande pour obtenir l'arbre des localites
600
	 *
601
	 * @param r
602
	 *            le raffraichissable qui a demandé la mise à jour
2 aperonnet 603
	 */
82 david 604
	public void obtenirListeEntiteGeographique() {
12 david 605
 
91 jpm 606
		observationModele.obtenirListeEntiteGeographique(filtres.getArbreEntiteGeographiqueObservationFiltreVue());
12 david 607
 
608
	}
82 david 609
 
610
 
611
	// U du CRUD
612
	public void modifierObservation(Observation obs) {
12 david 613
 
342 aurelien 614
		// On prend soin de récupérer les mots clés de l'observation
615
		Observation obsMod = obtenirCacheObservation().get(obs.getNumeroOrdre());
616
		obs.setMotsCles(obsMod.getMotsCles());
82 david 617
 
342 aurelien 618
		// On rafraichit la liste d'observation
619
		observationModele.modifierObservation(listeObservation, obs) ;
620
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
621
		filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
622
 
82 david 623
	}
12 david 624
 
217 aurelien 625
	public void modifierObservationEnMasse(Observation obs) {
626
		// On rafraichit la liste d'observation
220 aurelien 627
		listeObservation.masquerChargement();
217 aurelien 628
		observationModele.modifierObservationEnMasse(listeObservation, obs) ;
629
	}
82 david 630
 
631
	// D du CRUD
632
 
633
 
94 jpm 634
 
54 david 635
	/**
82 david 636
	 * TODO : afficher un message du type "observation modifie".
637
	 * Lance la modification d'une observation
638
	 * @param obs : l'observation a modifier
54 david 639
	 */
640
 
82 david 641
 
642
 
643
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
644
 
645
		if(listeObservation.getSelectionModel().getCount() > 0)
646
		{
647
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
648
			observationModele.supprimerObservation(r,numeroOrdre) ;
649
			}
650
		}
651
 
2 aperonnet 652
	}
12 david 653
 
82 david 654
	// Assistants de saisie
2 aperonnet 655
	/**
13 david 656
	 *
657
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne
658
	 * @param r : la vue demandeuse de donnee
659
	 * @param critere : les criteres de selection
660
	 */
12 david 661
 
13 david 662
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 663
 
13 david 664
		observationModele.obtenirListeReferentielCommune(r,critere) ;
2 aperonnet 665
 
12 david 666
 
2 aperonnet 667
	}
20 david 668
 
82 david 669
 
670
 
20 david 671
	/**
672
	 *
673
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne
674
	 * @param r : la vue demandeuse de donnee
675
	 * @param critere : les criteres de selection
676
	 */
677
 
678
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
2 aperonnet 679
 
94 jpm 680
		observationModele.obtenirListeReferentielNom(r,critere) ;
20 david 681
	}
82 david 682
 
683
	// Etat du syteme
684
 
20 david 685
	/**
82 david 686
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
687
	 * sous forme de tableau [nom, valeur]
688
	 * @return Les noms et valeurs des filtres
20 david 689
	 */
82 david 690
	public String[][] renvoyerFiltres()
115 aurelien 691
	{
325 aurelien 692
		int longueur = 0;
115 aurelien 693
 
325 aurelien 694
		String[] filtresEntitesGeo = filtres.getArbreEntiteGeographiqueObservationFiltreVue().renvoyerValeursAFiltrer() ;
695
		String chaineNomsFiltresGeo = filtresEntitesGeo[0] ;
696
		String chaineValFiltresGeo = filtresEntitesGeo[1] ;
697
 
698
		String[] filtresDate = filtres.getArbreDateObservationFiltreVue().renvoyerValeursAFiltrer() ;
699
		String chaineNomsFiltresDate = filtresDate[0] ;
700
		String chaineValFiltresDate = filtresDate[1] ;
701
 
702
		String[] filtresTaxon = filtres.getRechercheLibreVue().renvoyerValeursAFiltrer();
703
 
342 aurelien 704
		String[] filtresMotsCles = filtres.getArbreMotsClesObservationVue().renvoyerValeursAFiltrer();
705
 
325 aurelien 706
		String chaineNomsFiltres = "" ;
707
		String chaineValFiltres = "" ;
708
 
709
		if(!chaineNomsFiltresGeo.trim().equals("") && !chaineValFiltresGeo.trim().equals("")) {
710
			chaineNomsFiltres += chaineNomsFiltresGeo+",";
711
			chaineValFiltres += chaineValFiltresGeo+",";
712
		}
713
 
714
		if(!chaineNomsFiltresDate.trim().equals("") && !chaineValFiltresDate.trim().equals("")) {
715
			chaineNomsFiltres += chaineNomsFiltresDate+",";
716
			chaineValFiltres += chaineValFiltresDate+",";
717
		}
718
 
719
		if(!filtresTaxon[0].trim().equals("") && !filtresTaxon[1].trim().equals("")) {
720
			chaineNomsFiltres += filtresTaxon[0];
721
			chaineValFiltres += filtresTaxon[1];
722
		}
723
 
342 aurelien 724
		if(!filtresMotsCles[0].trim().equals("") && !filtresMotsCles[1].trim().equals("")) {
725
			chaineNomsFiltres += filtresMotsCles[0];
726
			chaineValFiltres += filtresMotsCles[1];
727
		}
728
 
325 aurelien 729
		String[] nomsFiltres = chaineNomsFiltres.split(",") ;
730
		String[] valsFiltres = chaineValFiltres.split(",") ;
731
 
732
		longueur += nomsFiltres.length;
733
 
734
		String [][] valeursFiltres = new String[longueur][2] ;
735
 
736
		listeObservation.afficherFiltres(chaineValFiltresGeo, chaineValFiltresDate, filtresTaxon[1]) ;
91 jpm 737
 
325 aurelien 738
		int i = 0;
739
 
740
		if(valsFiltres.length > 0)
741
		{
742
			for(i = 0 ; i < nomsFiltres.length ; i++)
87 jpm 743
			{
325 aurelien 744
				valeursFiltres[i][0] = nomsFiltres[i] ;
745
				if(valsFiltres[i].equals("Inconnue"))
87 jpm 746
				{
325 aurelien 747
					valeursFiltres[i][1] = "000null" ;
87 jpm 748
				}
325 aurelien 749
				else
750
				{
751
					valeursFiltres[i][1] = valsFiltres[i] ;
752
				}
87 jpm 753
			}
325 aurelien 754
		}
755
 
756
		return valeursFiltres ;
20 david 757
	}
82 david 758
 
41 jpm 759
 
54 david 760
	/**
82 david 761
	 * Retourne l'identifiant de l'utilisateur connecte
762
	 * @return : identifiant de l'utilisateur connecte
74 david 763
	 */
82 david 764
	public String getIdentifiant() {
74 david 765
 
140 aurelien 766
		return carnetEnLigneMediateur.getUtilisateur().getIdentite();
74 david 767
 
77 jpm 768
	}
82 david 769
 
770
 
74 david 771
	/**
54 david 772
	 *
82 david 773
	 * @return
54 david 774
	 *
775
	 */
776
 
82 david 777
	public Panel getPanneauPrincipalObservation() {
778
		return panneauPrincipalObservation;
779
	}
54 david 780
 
781
 
41 jpm 782
	public void montrerContextMenu(EventObject e) {
783
 
107 aurelien 784
		MenuObservationVue mvo = new MenuObservationVue(this) ;
785
		mvo.showAt(e.getXY()) ;
41 jpm 786
 
787
	}
788
 
789
	public void doubleClicListeObservation(int rowIndex) {
790
 
791
 
792
	}
82 david 793
 
794
	// Getters
795
 
54 david 796
	public PanneauFiltresObservationVues getPanneauFiltres() {
797
 
798
		return filtres;
799
 
800
	}
86 jpm 801
 
802
	public void masquerChargementInfosObservations()
803
	{
318 aurelien 804
		ExtElement masked = Ext.get(details.getId());
54 david 805
 
342 aurelien 806
		if (details.isVisible() && masked != null) {
86 jpm 807
			informationRepartitionVue.raz() ;
808
			imageGeneriqueVue.raz() ;
809
			masked.mask("Chargement", true);
810
		}
251 aurelien 811
 
812
		cartoObservationVue.masquerChargement(true);
86 jpm 813
	}
82 david 814
 
86 jpm 815
	public void deMasquerChargementInfosObservations()
816
	{
318 aurelien 817
		ExtElement masked = Ext.get(details.getId());
63 jpm 818
 
342 aurelien 819
		if (details.isVisible() && masked != null) {
86 jpm 820
			masked.unmask() ;
821
		}
822
	}
91 jpm 823
 
824
 
825
	public void obtenirDatesObservation() {
826
 
827
		observationModele.obtenirDatesObservation(filtres.getArbreDateObservationFiltreVue()) ;
828
	}
101 jpm 829
 
830
 
831
	public void exporterObservations() {
832
 
128 aurelien 833
			observationModele.exporterObservations() ;
101 jpm 834
	}
104 jpm 835
 
836
 
837
	public void deconnecterUtilisateur() {
838
 
140 aurelien 839
		if(panneauPrincipalObservation == null || panneauPrincipalObservation.isCreated() || !panneauPrincipalObservation.isVisible())
840
		{
841
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
842
			{
843
				public void onShow(Component component)
844
				{
845
					deconnecterUtilisateur();
846
					panneauPrincipalObservation.purgeListeners();
847
				}
848
			});
849
		}
850
		else
851
		{
852
			listeObservation.raz() ;
853
			formulaireSaisieObservationVue.raz() ;
261 aurelien 854
			razFiltres();
140 aurelien 855
			informationRepartitionVue.raz() ;
856
			imageGeneriqueVue.raz() ;
857
			mvz.raz() ;
858
		}
104 jpm 859
	}
860
 
861
 
862
	public void supprimerLiaisonObsImage() {
863
 
864
		String idObs = listeObservation.getIdSelectionnees()[0] ;
865
		String idImg = mvz.getIdImage() ;
866
 
867
		if(Window.confirm("Supprimer le lien entre l'image "+idImg+" et l'observations "+idObs+" ?"))
868
		{
869
			mvz.supprimerLiaisonImage() ;
870
			observationModele.supprimerLiaisonImages(idImg,idObs) ;
871
		}
872
 
873
	}
107 aurelien 874
 
875
	public void supprimerObservations() {
876
 
128 aurelien 877
		if(listeObservation.getIdSelectionnees().length > 0) {
878
			if(Window.confirm("Êtes vous sur de vouloir supprimer les observations sélectionnées ?")) {
879
					String[] numObs = listeObservation.getIdSelectionnees();
880
					String numObsapl = "" ;
881
					for(int i = 0 ; i < numObs.length ; i++) {
882
						numObsapl += numObs[i]+"," ;
883
					}
884
 
885
					observationModele.supprimerListeObservation(listeObservation,numObsapl) ;
107 aurelien 886
			}
128 aurelien 887
		}
888
		else
889
		{
890
			Window.alert("Aucune observation sélectionnée");
891
		}
107 aurelien 892
	}
108 aurelien 893
 
894
 
145 aurelien 895
	public void transmettreObservations(boolean publier) {
108 aurelien 896
 
140 aurelien 897
		if(carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
898
			if(listeObservation.getIdSelectionnees().length > 0) {
145 aurelien 899
 
900
				String action = "" ;
901
 
902
				if(publier) {
903
					action = "rendre publiques" ;
904
				}
905
				else {
906
					action = "rendre privées" ;
907
				}
908
 
909
				if(Window.confirm("Êtes vous sur de vouloir "+action+" les observations sélectionnées ?")) {
140 aurelien 910
					String[] numObs = listeObservation.getIdSelectionnees();
911
					String numObsApl = "" ;
912
					for(int i = 0 ; i < numObs.length ; i++) {
913
						numObsApl += numObs[i] ;
914
						if(i != numObs.length - 1) {
915
							numObsApl +="," ;
916
						}
128 aurelien 917
					}
140 aurelien 918
 
145 aurelien 919
					observationModele.transmettreListeObservation(listeObservation,numObsApl, publier) ;
108 aurelien 920
				}
921
			}
140 aurelien 922
			else
923
			{
924
				Window.alert("Aucune observation sélectionnée");
925
			}
108 aurelien 926
		}
128 aurelien 927
		else
928
		{
145 aurelien 929
			if(publier) {
930
				if(Window.confirm("La publication des observations nécessite d'être identifié, voulez-vous vous identifier ? (toutes vos observations saisies seront conservées)")) {
931
					importerObservations = true ;
932
					carnetEnLigneMediateur.afficherDialogueConnexion();
933
				}
140 aurelien 934
			}
128 aurelien 935
		}
108 aurelien 936
 
937
	}
140 aurelien 938
 
939
	public void analyserHistorique() {
940
 
941
		if (History.getToken().length()>0) {
115 aurelien 942
 
140 aurelien 943
	        final String anum=History.getToken();
944
	        observationModele.analyserHistorique(formulaireSaisieObservationVue,anum);
945
		}
946
	}
115 aurelien 947
 
156 aurelien 948
	/**
949
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du
950
	 * mot clé
951
	 *
952
	 * @param text
953
	 *            le texte du mot clé
954
	 * @param id
955
	 *            l'identifiant du mot clé
956
	 */
957
	public void mettreAjourMotsClesId(String text, String id) {
958
 
959
		observationModele.mettreAjourMotsClesId(text, id);
960
 
115 aurelien 961
	}
342 aurelien 962
 
963
	public boolean gererDDObsSurMotCle(TreeNode NoeudMotCle, DragData dragData) {
964
 
965
		if(dragData instanceof GridDragData) {
359 aurelien 966
 
342 aurelien 967
			GridDragData gdd = ((GridDragData)dragData);
968
 
969
			String idMotCle = ((String[])NoeudMotCle.getUserObject())[1];
970
 
971
			Record[] obsALier = gdd.getSelections();
972
 
973
			String idObsALier[] = new String[obsALier.length];
974
			String idObsALierString = "";
975
 
976
			for(int i = 0; i < obsALier.length; i++) {
977
				if(i != 0) {
978
					idObsALierString += ", ";
979
				}
980
				idObsALierString += obsALier[i].getAsString("ordre_observation");
981
 
359 aurelien 982
				if(!observationAvoirMotCle(idMotCle, obsALier[i].getAsString("ordre_observation"))) {
983
					idObsALier[i] = obsALier[i].getAsString("ordre_observation");
984
				} else {
985
					idObsALier[i] = "";
986
				}
342 aurelien 987
			}
988
 
989
			String message = "Lier les observations ";
990
 
991
			if(idObsALier.length == 1) {
992
				message = "Lier l'observation ";
993
			}
994
 
995
			if(Window.confirm(message+idObsALierString+" au projet "+NoeudMotCle.getText()+" ?")) {
996
				mettreAjourMotsCles(idMotCle, idObsALier);
997
 
998
				return true;
999
			} else {
1000
				return false;
1001
			}
1002
		} else {
1003
			return false;
1004
		}
1005
	}
1006
 
385 aurelien 1007
	public void gererDDMotCleSurObs(String idObs, String idMC) {
342 aurelien 1008
 
1009
		Observation obs = obtenirCacheObservation().get(idObs);
1010
 
1011
		if(obs == null) {
1012
			return;
1013
		}
1014
 
385 aurelien 1015
		if(observationAvoirMotCle(idMC, idObs)) {
342 aurelien 1016
			if(Window.confirm("Voulez vous supprimer la liaison entre l'observation et le mot clé ?")) {
385 aurelien 1017
				String nouveauMotsCles = obs.getMotsCles().replace(idMC, "");
342 aurelien 1018
				nouveauMotsCles = nouveauMotsCles.replace(";;", ";");
1019
 
1020
				obs.setMotsCles(nouveauMotsCles);
1021
 
385 aurelien 1022
				observationModele.supprimerLiaisonMotCleObservations(listeObservation, idObs, idMC);
342 aurelien 1023
			}
1024
		}
1025
	}
115 aurelien 1026
 
342 aurelien 1027
	public String gererOverDDMotCleSurObs(String idObs, String IdMC) {
1028
 
1029
		if(observationAvoirMotCle(IdMC, idObs)) {
1030
		    return "x-dd-drop-unlink";
1031
		} else {
1032
			return "x-dd-drop-nodrop";
1033
		}
1034
	}
156 aurelien 1035
	/**
342 aurelien 1036
	 * Récupère les identifiants des obs selectionnézs et appelle le modèle
1037
	 * pour qu'il mette à jour les associations mots clés/obs
156 aurelien 1038
	 *
1039
	 * @param motsClesEnCours
1040
	 *            les mots clés à associer aux images selectionnés séparés par
342 aurelien 1041
	 *            un ';'
156 aurelien 1042
	 * @param arbreMC
1043
	 *            l'arbre des mots clés à mettre à jour
1044
	 */
318 aurelien 1045
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
1046
 
156 aurelien 1047
		String[] ids = listeObservation.getIdSelectionnees();
318 aurelien 1048
		observationModele.mettreAjourMotsCles(motsClesEnCours, idsObsALier);
156 aurelien 1049
 
115 aurelien 1050
	}
1051
 
156 aurelien 1052
	/**
1053
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots
1054
	 * clés
1055
	 *
1056
	 * @param n
1057
	 *            le noeud à ajouter à l'arbre
1058
	 * @param arbreMC
1059
	 *            le nouvel arbre de mots clés à mettre à jour
1060
	 */
1061
	public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
1062
		observationModele.ajouterMotCleDansArbre(n, arbreMC);
318 aurelien 1063
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
115 aurelien 1064
 
156 aurelien 1065
	}
1066
 
1067
	/**
1068
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre
1069
	 * dans l'arbre des mots clés
1070
	 *
1071
	 * @param n
1072
	 *            le noeud à supprimer
1073
	 * @param arbreMC
1074
	 *            le nouvel arbre de mots clés à mettre à jour
1075
	 */
1076
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1077
 
1078
		observationModele.supprimerMotCleDansArbre(n, arbreMC);
318 aurelien 1079
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n.getId(), false);
156 aurelien 1080
 
1081
	}
1082
 
1083
	/**
1084
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots
1085
	 * clés
1086
	 *
1087
	 * @param n
1088
	 *            le noeud à modifier
1089
	 * @param arbreMC
1090
	 *            le nouvel arbre de mots clés à mettre à jour
1091
	 */
1092
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
1093
 
1094
		observationModele.modifierMotCleDansArbre(n, arbreMC);
318 aurelien 1095
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
156 aurelien 1096
 
1097
	}
1098
 
1099
	/**
1100
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans
1101
	 * l'arbre des mots clés
1102
	 *
1103
	 * @param n
1104
	 *            le noeud à déplacer
1105
	 * @param arbreMC
1106
	 *            le nouvel arbre de mots clés à mettre à jour
1107
	 */
1108
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1109
 
1110
		observationModele.deplacerMotCleDansArbre(n, arbreMC);
1111
	}
1112
 
1113
 
1114
	public void rafraichirArbreMotsCles(Tree arbreMotsCles) {
115 aurelien 1115
 
318 aurelien 1116
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(arbreMotsCles, false);
115 aurelien 1117
 
1118
	}
342 aurelien 1119
 
1120
	public boolean observationAvoirMotCle(String idMotCle, String idObs) {
1121
		Observation obs = obtenirCacheObservation().get(idObs);
1122
		if(obs == null) {
1123
			return false;
1124
		}
1125
 
1126
		if(obs.getMotsCles().contains(idMotCle)) {
1127
			return true;
1128
		}
1129
 
1130
		return false;
1131
	}
115 aurelien 1132
 
1133
 
156 aurelien 1134
	public void obtenirArbreMotsCles(Rafraichissable r) {
115 aurelien 1135
 
156 aurelien 1136
		observationModele.obtenirArbreMotsCles(r);
1137
	}
12 david 1138
 
156 aurelien 1139
	public ListeObservation obtenirCacheObservation() {
1140
		return observationModele.getCacheObservation();
1141
	}
1142
 
1143
	public void donneesExterieures(Object nouvelleDonnees) {
1144
		if(nouvelleDonnees instanceof Tree) {
1145
 
1146
			Tree arbreMotsCles = (Tree)nouvelleDonnees ;
1147
			observationModele.rafraichirArbreMotsCles(nouvelleDonnees);
1148
			rafraichirArbreMotsCles(arbreMotsCles);
1149
		}
1150
	}
1151
 
1152
	public void transmettreDonnees(Object o) {
1153
		carnetEnLigneMediateur.donneesObsVersImages(o);
1154
	}
217 aurelien 1155
 
1156
	public void onModeModification() {
1157
 
1158
		String[] ids = listeObservation.getIdSelectionnees();
359 aurelien 1159
		Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1160
 
217 aurelien 1161
		if(ids.length > 1) {
1162
			formulaireSaisieObservationVue.setMasseModification(true);
1163
			ListeObservation listeObs = new ListeObservation();
1164
			for(int i=0; i < ids.length;i++) {
1165
				Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
1166
				listeObs.ajouterObservation(obsAjout);
1167
			}
1168
			formulaireSaisieObservationVue.rafraichir(listeObs, false);
1169
		} else {
1170
			formulaireSaisieObservationVue.setMasseModification(false);
1171
			// affichage des détails dans le formulaire d'observation
1172
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1173
		}
251 aurelien 1174
 
1175
		conteneurFormulaire.setTitle("Modification");
217 aurelien 1176
	}
251 aurelien 1177
 
1178
	public void onModeCreation() {
359 aurelien 1179
 
251 aurelien 1180
		conteneurFormulaire.setTitle("Création");
359 aurelien 1181
		String[] ids = listeObservation.getIdSelectionnees();
1182
 
1183
		if(ids.length > 1) {
1184
			Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1185
			// affichage des détails dans le formulaire d'observation
1186
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1187
		}
251 aurelien 1188
	}
1189
 
1190
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
1191
		observationModele.obtenirInformationCoord(r,coord);
1192
	}
1193
 
1194
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
1195
		observationModele.obtenirInformationCommune(r,nomCommune, codePostal);
1196
	}
1197
 
1198
	public void obtenirInformationCoord(LatLng coord) {
1199
		observationModele.obtenirInformationCoord(cartoObservationVue,coord);
1200
		if(!cartoObservationVue.isVisible()){
1201
			cartoObservationVue.masquerChargement(true);
1202
			ongletsSaisieCarto.activate(1);
1203
		}
1204
	}
1205
 
1206
	public void obtenirInformationCommune(String nomCommune,
1207
			String codePostal) {
1208
		observationModele.obtenirInformationCommune(cartoObservationVue,nomCommune, codePostal);
1209
		if(!cartoObservationVue.isVisible()){
1210
			cartoObservationVue.masquerChargement(true);
1211
			ongletsSaisieCarto.activate(1);
267 aurelien 1212
			cartoObservationVue.recentrerCarte();
251 aurelien 1213
		}
1214
	}
1215
 
1216
	public void rafraichirSaisieCommuneObservation(EntiteGeographiqueObservation infosCommune) {
1217
		formulaireSaisieObservationVue.rafraichir(infosCommune, false);
1218
		ongletsSaisieCarto.activate(0);
1219
	}
261 aurelien 1220
 
1221
 
1222
	private void razFiltres() {
1223
 
1224
		filtres.getArbreDateObservationFiltreVue().raz() ;
1225
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
318 aurelien 1226
		filtres.getArbreMotsClesObservationVue().raz();
261 aurelien 1227
		filtres.getRechercheLibreVue().raz();
1228
	}
318 aurelien 1229
 
1230
	public Component getListeObservation() {
1231
 
1232
		return listeObservation;
1233
	}
1234
 
1235
	public void redimensionnerPanneaux(int adjHeight, int adjWidth) {
1236
 
342 aurelien 1237
		formulaireSaisieObservationVue.setHeight(300);
1238
 
1239
		//if(listeObservation.getHeight() > centre.getHeight()) {
1240
			listeObservation.setHeight(adjHeight/2);
1241
		//}
318 aurelien 1242
		centre.doLayout();
1243
 
1244
	}
1245
 
437 aurelien 1246
	public void afficherFormulaireImportObservation() {
1247
		FormulaireImportObservationVue formImportObs = new FormulaireImportObservationVue(this);
1248
	}
1249
 
2 aperonnet 1250
}