Subversion Repositories eFlore/Applications.cel

Rev

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