Subversion Repositories eFlore/Applications.cel

Rev

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