Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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