Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.observation;
2
 
12 david 3
 
86 jpm 4
 
82 david 5
// TODO : systematiser les onQuelquechose, appelle depuis les vues
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;
251 aurelien 27
import com.google.gwt.maps.client.geom.LatLng;
140 aurelien 28
import com.google.gwt.user.client.History;
77 jpm 29
import com.google.gwt.user.client.Window;
41 jpm 30
import com.gwtext.client.core.EventObject;
86 jpm 31
import com.gwtext.client.core.Ext;
32
import com.gwtext.client.core.ExtElement;
53 david 33
import com.gwtext.client.core.RegionPosition;
217 aurelien 34
import com.gwtext.client.data.Record;
156 aurelien 35
import com.gwtext.client.data.Tree;
342 aurelien 36
import com.gwtext.client.dd.DragData;
251 aurelien 37
import com.gwtext.client.widgets.BoxComponent;
86 jpm 38
import com.gwtext.client.widgets.Component;
251 aurelien 39
import com.gwtext.client.widgets.Container;
12 david 40
import com.gwtext.client.widgets.Panel;
86 jpm 41
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
202 david 42
import com.gwtext.client.widgets.event.PanelListenerAdapter;
342 aurelien 43
import com.gwtext.client.widgets.grid.GridDragData;
53 david 44
import com.gwtext.client.widgets.layout.BorderLayout;
45
import com.gwtext.client.widgets.layout.BorderLayoutData;
156 aurelien 46
import com.gwtext.client.widgets.layout.FitLayout;
53 david 47
import com.gwtext.client.widgets.layout.RowLayout;
80 jpm 48
import com.gwtext.client.widgets.layout.RowLayoutData;
156 aurelien 49
import com.gwtext.client.widgets.tree.TreeNode;
2 aperonnet 50
 
48 david 51
 
12 david 52
/**
53
 * Mediateur gérant les interactions entre vues et les echanges de données
54
 * C'est un singleton.
55
 * @author aurelien
56
 *
57
 */
47 david 58
public class ObservationMediateur {
12 david 59
 
60
	/**
61
	 * booleen qui verifie l'unicite de l'instance (donc static)
62
	 */
31 jpm 63
	private static boolean estInstancie = false ;
64
 
65
	/**
66
	 * pointeur sur le médiateur (pour le pattern singleton)
67
	 */
68
	private static ObservationMediateur thisMediateur = null ;
12 david 69
 
70
	/** Mediateur general de l'application carnet en ligne
71
	 *
72
	 *
73
	 */
74
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
75
 
76
 
77
	/**
78
	 * modele de données
79
	 */
80
	private ObservationModele observationModele = null ;
81
 
82
 
83
	/**
84
	 * panneau principal des Observation (onglet "observation")
85
	 */
209 aurelien 86
	private final Panel panneauPrincipalObservation = new Panel("Observations");
12 david 87
 
88
 
89
	/**
90
	 * liste détaillée des Observations
91
	 */
318 aurelien 92
	public ListeObservationVue listeObservation = null ;
12 david 93
 
94
	/**
95
	 * Saisie des Observations
96
	 */
97
 
98
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
99
 
482 david 100
 
251 aurelien 101
	/**
482 david 102
	 *
103
	 * Import des observations depuis un fichier
104
	 *
105
	 */
106
 
107
	private FormulaireImportObservationVue formImportObs=null;
108
 
109
 
110
	/**
251 aurelien 111
	 * Cartographie
112
	 */
113
	private CartographieObservationVue cartoObservationVue = null;
48 david 114
 
251 aurelien 115
 
48 david 116
 
12 david 117
	/**
118
	 * booleen explicitant s'il y a une selection en cours
119
	 */
156 aurelien 120
	private boolean selection = false ;
12 david 121
	/**
53 david 122
	 * panneau conteneur pour le panneau  des informations lies à l'observation
123
	 */
12 david 124
 
318 aurelien 125
  	private Panel details = new Panel("Details");
53 david 126
 
318 aurelien 127
  	private LienExterneVue liExtVue = null;
53 david 128
 
12 david 129
	/**
53 david 130
	 * panneau conteneur pour le panneau des filtres
131
	 */
132
 
54 david 133
  	private PanneauFiltresObservationVues filtres = null;
53 david 134
 
135
 
54 david 136
 
137
  	/**
138
  	 * panneau d'information de repartition sur le nom selectionné
139
  	 *
140
  	 */
141
 
142
  	private InformationRepartitionVue informationRepartitionVue=null;
143
 
144
 
145
  	/**
146
  	 * panneau d'affichage d'une image generique associe au nom selectionne
147
  	 *
148
  	 */
149
 
150
  	private ImageGeneriqueVue imageGeneriqueVue=null;
151
 
94 jpm 152
  	private MiniZoomImageVue mvz = null ;
54 david 153
 
140 aurelien 154
  	private boolean importerObservations = false ;
251 aurelien 155
 
677 aurelien 156
	private com.gwtext.client.widgets.Window fenetreCarto;
658 aurelien 157
	public boolean changementTabProg = false;
1542 aurelien 158
 
159
	private InfosReferentielNom refTaxSelectionne = null;
251 aurelien 160
 
161
	private Panel centre;
140 aurelien 162
 
53 david 163
	/**
12 david 164
	 * constructeur privé (on accède a la classe par la méthode getInstance
165
	 */
166
 
167
 
168
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
169
	{
1542 aurelien 170
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
12 david 171
		// on crée un modèle
172
		observationModele = ObservationModele.Instance(this);
173
 
1542 aurelien 174
		// initialisation du référentiel par défaut
175
		setRefTaxSelectionne(Configuration.getReferentielsDispos().get(0));
48 david 176
 
12 david 177
		listeObservation = new ListeObservationVue(this);
53 david 178
		listeObservation.setTitle("Observations");
12 david 179
 
53 david 180
		// quelques variables de position pour les borderlayouts
181
		final BorderLayoutData regionNord = new BorderLayoutData(
182
				RegionPosition.NORTH);
183
 
184
		final BorderLayoutData regionCentre = new BorderLayoutData(
185
				RegionPosition.CENTER);
342 aurelien 186
		regionCentre.setSplit(true);
53 david 187
 
188
 
189
		final BorderLayoutData regionEst = new BorderLayoutData(
190
				RegionPosition.EAST);
342 aurelien 191
		regionEst.setSplit(true);
53 david 192
 
193
 
194
		final BorderLayoutData regionOuest = new BorderLayoutData(
195
				RegionPosition.WEST);
342 aurelien 196
		regionOuest.setSplit(true);
12 david 197
 
53 david 198
 
199
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
251 aurelien 200
		cartoObservationVue = new CartographieObservationVue(this);
201
		cartoObservationVue.setLayout(new FitLayout());
53 david 202
 
12 david 203
		// Le formulaire de saisie / modification d'observation
204
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
677 aurelien 205
		formulaireSaisieObservationVue.setTitle("Saisie");
206
		formulaireSaisieObservationVue.setTitleCollapse(true);
207
		formulaireSaisieObservationVue.setCollapsible(true) ;
208
		formulaireSaisieObservationVue.setAutoScroll(true) ;
251 aurelien 209
 
677 aurelien 210
		fenetreCarto = new com.gwtext.client.widgets.Window();
211
		fenetreCarto.setConstrain(true);
212
		fenetreCarto.setModal(true);
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
 
217 aurelien 423
		if(formulaireSaisieObservationVue.getModification()) {
424
			String[] ids = listeObservation.getIdSelectionnees();
425
			if(ids.length > 1) {
426
				formulaireSaisieObservationVue.setMasseModification(true);
427
				ListeObservation listeObs = new ListeObservation();
428
				for(int i=0; i < ids.length;i++) {
429
					Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
430
					listeObs.ajouterObservation(obsAjout);
431
				}
432
				formulaireSaisieObservationVue.rafraichir(listeObs, false);
433
			} else {
434
				formulaireSaisieObservationVue.setMasseModification(false);
435
				// affichage des détails dans le formulaire d'observation
436
				formulaireSaisieObservationVue.rafraichir(obs, false) ;
437
			}
438
		} else {
439
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
440
		}
658 aurelien 441
 
82 david 442
		// Affichage de l'image correspondante
677 aurelien 443
		if(details.isVisible()) {
444
			// Affichage de la carte de repartition correspondante
1557 aurelien 445
			String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalRetenu();
1488 aurelien 446
			if(numeroNomenclaturalSaisiObservation != null && !numeroNomenclaturalSaisiObservation.isEmpty()) {
1542 aurelien 447
				observationModele.obtenirImageInformationRepartition(informationRepartitionVue,obs.getCodeCourtReferentielTaxo(), numeroNomenclaturalSaisiObservation) ;
448
				observationModele.obtenirImageGenerique(imageGeneriqueVue,obs.getCodeCourtReferentielTaxo(), numeroNomenclaturalSaisiObservation) ;
1557 aurelien 449
			} else {
450
				informationRepartitionVue.rafraichir("", false);
451
				imageGeneriqueVue.rafraichir("", false);
1488 aurelien 452
			}
1557 aurelien 453
			observationModele.obtenirLiaisonImage(mvz, obs.getId()) ;
454
			liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
677 aurelien 455
		}
342 aurelien 456
		filtres.getArbreMotsClesObservationVue().rafraichir(obs.getMotsCles(), false);
82 david 457
	}
458
 
1542 aurelien 459
	public void obtenirImageInformationExternes(String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
677 aurelien 460
 
461
		if(details.isVisible()) {
462
			if(GWT.isScript()) {
463
				masquerChargementInfosObservations() ;
464
			}
465
			liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, 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
		{
593
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
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
	// Assistants de saisie
2 aperonnet 605
	/**
13 david 606
	 *
607
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne
608
	 * @param r : la vue demandeuse de donnee
609
	 * @param critere : les criteres de selection
610
	 */
12 david 611
 
13 david 612
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 613
 
13 david 614
		observationModele.obtenirListeReferentielCommune(r,critere) ;
2 aperonnet 615
	}
20 david 616
 
733 aurelien 617
	// Assistants de saisie
618
	/**
619
	 *
620
	 * Lance un appel de recherche d'une liste de résultats
621
	 * correspondant aux criteres de selections pour un référentiel donné
622
	 * @param r : la vue demandeuse de donnee
623
	 * @param referentiel : le référentiel demandé
624
	 * @param critere : les criteres de selection
625
	 */
626
	public void obtenirListeReferentielPerso(Rafraichissable r, TypesReferentiels referentiel, String critere) {
627
		observationModele.obtenirListeReferentielPerso(r, referentiel, critere) ;
628
	}
82 david 629
 
20 david 630
	/**
631
	 *
632
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne
633
	 * @param r : la vue demandeuse de donnee
634
	 * @param critere : les criteres de selection
635
	 */
636
 
1542 aurelien 637
	public void obtenirListeReferentielNom(Rafraichissable r,String referentiel, String critere) {
2 aperonnet 638
 
1542 aurelien 639
		observationModele.obtenirListeReferentielNom(r, referentiel, critere) ;
20 david 640
	}
82 david 641
 
642
	// Etat du syteme
643
 
20 david 644
	/**
82 david 645
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
646
	 * sous forme de tableau [nom, valeur]
647
	 * @return Les noms et valeurs des filtres
20 david 648
	 */
82 david 649
	public String[][] renvoyerFiltres()
115 aurelien 650
	{
325 aurelien 651
		int longueur = 0;
115 aurelien 652
 
325 aurelien 653
		String[] filtresEntitesGeo = filtres.getArbreEntiteGeographiqueObservationFiltreVue().renvoyerValeursAFiltrer() ;
654
		String chaineNomsFiltresGeo = filtresEntitesGeo[0] ;
655
		String chaineValFiltresGeo = filtresEntitesGeo[1] ;
656
 
657
		String[] filtresDate = filtres.getArbreDateObservationFiltreVue().renvoyerValeursAFiltrer() ;
658
		String chaineNomsFiltresDate = filtresDate[0] ;
659
		String chaineValFiltresDate = filtresDate[1] ;
660
 
661
		String[] filtresTaxon = filtres.getRechercheLibreVue().renvoyerValeursAFiltrer();
662
 
342 aurelien 663
		String[] filtresMotsCles = filtres.getArbreMotsClesObservationVue().renvoyerValeursAFiltrer();
664
 
325 aurelien 665
		String chaineNomsFiltres = "" ;
666
		String chaineValFiltres = "" ;
667
 
668
		if(!chaineNomsFiltresGeo.trim().equals("") && !chaineValFiltresGeo.trim().equals("")) {
669
			chaineNomsFiltres += chaineNomsFiltresGeo+",";
670
			chaineValFiltres += chaineValFiltresGeo+",";
671
		}
672
 
673
		if(!chaineNomsFiltresDate.trim().equals("") && !chaineValFiltresDate.trim().equals("")) {
674
			chaineNomsFiltres += chaineNomsFiltresDate+",";
675
			chaineValFiltres += chaineValFiltresDate+",";
676
		}
677
 
678
		if(!filtresTaxon[0].trim().equals("") && !filtresTaxon[1].trim().equals("")) {
976 aurelien 679
			chaineNomsFiltres += filtresTaxon[0]+",";
680
			chaineValFiltres += filtresTaxon[1]+",";
325 aurelien 681
		}
682
 
342 aurelien 683
		if(!filtresMotsCles[0].trim().equals("") && !filtresMotsCles[1].trim().equals("")) {
684
			chaineNomsFiltres += filtresMotsCles[0];
685
			chaineValFiltres += filtresMotsCles[1];
686
		}
687
 
325 aurelien 688
		String[] nomsFiltres = chaineNomsFiltres.split(",") ;
689
		String[] valsFiltres = chaineValFiltres.split(",") ;
690
 
691
		longueur += nomsFiltres.length;
692
 
693
		String [][] valeursFiltres = new String[longueur][2] ;
694
 
695
		int i = 0;
696
 
697
		if(valsFiltres.length > 0)
698
		{
699
			for(i = 0 ; i < nomsFiltres.length ; i++)
87 jpm 700
			{
325 aurelien 701
				valeursFiltres[i][0] = nomsFiltres[i] ;
702
				if(valsFiltres[i].equals("Inconnue"))
87 jpm 703
				{
1332 aurelien 704
					valeursFiltres[i][1] = "NULL" ;
87 jpm 705
				}
325 aurelien 706
				else
707
				{
708
					valeursFiltres[i][1] = valsFiltres[i] ;
709
				}
87 jpm 710
			}
325 aurelien 711
		}
712
 
677 aurelien 713
		listeObservation.afficherFiltres(valeursFiltres) ;
714
 
325 aurelien 715
		return valeursFiltres ;
20 david 716
	}
82 david 717
 
54 david 718
	/**
719
	 *
82 david 720
	 * @return
54 david 721
	 *
722
	 */
723
 
82 david 724
	public Panel getPanneauPrincipalObservation() {
725
		return panneauPrincipalObservation;
726
	}
54 david 727
 
728
 
41 jpm 729
	public void montrerContextMenu(EventObject e) {
730
 
107 aurelien 731
		MenuObservationVue mvo = new MenuObservationVue(this) ;
732
		mvo.showAt(e.getXY()) ;
41 jpm 733
 
734
	}
735
 
736
	public void doubleClicListeObservation(int rowIndex) {
737
 
738
 
739
	}
82 david 740
 
741
	// Getters
742
 
54 david 743
	public PanneauFiltresObservationVues getPanneauFiltres() {
744
 
745
		return filtres;
746
 
747
	}
86 jpm 748
 
749
	public void masquerChargementInfosObservations()
750
	{
318 aurelien 751
		ExtElement masked = Ext.get(details.getId());
54 david 752
 
342 aurelien 753
		if (details.isVisible() && masked != null) {
86 jpm 754
			informationRepartitionVue.raz() ;
755
			imageGeneriqueVue.raz() ;
756
			masked.mask("Chargement", true);
757
		}
251 aurelien 758
 
759
		cartoObservationVue.masquerChargement(true);
86 jpm 760
	}
82 david 761
 
86 jpm 762
	public void deMasquerChargementInfosObservations()
763
	{
318 aurelien 764
		ExtElement masked = Ext.get(details.getId());
63 jpm 765
 
342 aurelien 766
		if (details.isVisible() && masked != null) {
86 jpm 767
			masked.unmask() ;
768
		}
769
	}
91 jpm 770
 
771
 
772
	public void obtenirDatesObservation() {
773
 
774
		observationModele.obtenirDatesObservation(filtres.getArbreDateObservationFiltreVue()) ;
775
	}
101 jpm 776
 
777
 
778
	public void exporterObservations() {
779
 
128 aurelien 780
			observationModele.exporterObservations() ;
101 jpm 781
	}
104 jpm 782
 
783
 
784
	public void deconnecterUtilisateur() {
785
 
140 aurelien 786
		if(panneauPrincipalObservation == null || panneauPrincipalObservation.isCreated() || !panneauPrincipalObservation.isVisible())
787
		{
788
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
789
			{
1291 aurelien 790
				@Override
140 aurelien 791
				public void onShow(Component component)
792
				{
793
					deconnecterUtilisateur();
794
					panneauPrincipalObservation.purgeListeners();
795
				}
796
			});
797
		}
798
		else
799
		{
800
			listeObservation.raz() ;
801
			formulaireSaisieObservationVue.raz() ;
261 aurelien 802
			razFiltres();
140 aurelien 803
			informationRepartitionVue.raz() ;
804
			imageGeneriqueVue.raz() ;
805
			mvz.raz() ;
806
		}
104 jpm 807
	}
808
 
809
 
810
	public void supprimerLiaisonObsImage() {
811
 
1314 aurelien 812
		String ordreObs = listeObservation.getIdSelectionnees()[0];
813
		String idObs = observationModele.getIdPourOrdreObs(ordreObs);
104 jpm 814
		String idImg = mvz.getIdImage() ;
815
 
816
		if(Window.confirm("Supprimer le lien entre l'image "+idImg+" et l'observations "+idObs+" ?"))
817
		{
818
			mvz.supprimerLiaisonImage() ;
819
			observationModele.supprimerLiaisonImages(idImg,idObs) ;
820
		}
821
 
822
	}
107 aurelien 823
 
824
	public void supprimerObservations() {
825
 
128 aurelien 826
		if(listeObservation.getIdSelectionnees().length > 0) {
827
			if(Window.confirm("Êtes vous sur de vouloir supprimer les observations sélectionnées ?")) {
828
					String[] numObs = listeObservation.getIdSelectionnees();
829
					String numObsapl = "" ;
830
					for(int i = 0 ; i < numObs.length ; i++) {
831
						numObsapl += numObs[i]+"," ;
832
					}
833
 
834
					observationModele.supprimerListeObservation(listeObservation,numObsapl) ;
107 aurelien 835
			}
128 aurelien 836
		}
837
		else
838
		{
839
			Window.alert("Aucune observation sélectionnée");
840
		}
107 aurelien 841
	}
108 aurelien 842
 
843
 
145 aurelien 844
	public void transmettreObservations(boolean publier) {
108 aurelien 845
 
937 aurelien 846
		if(Utilisateur.getInstance().isIdentifie()) {
140 aurelien 847
			if(listeObservation.getIdSelectionnees().length > 0) {
145 aurelien 848
 
849
				String action = "" ;
850
 
851
				if(publier) {
852
					action = "rendre publiques" ;
853
				}
854
				else {
855
					action = "rendre privées" ;
856
				}
857
 
858
				if(Window.confirm("Êtes vous sur de vouloir "+action+" les observations sélectionnées ?")) {
140 aurelien 859
					String[] numObs = listeObservation.getIdSelectionnees();
860
					String numObsApl = "" ;
861
					for(int i = 0 ; i < numObs.length ; i++) {
862
						numObsApl += numObs[i] ;
863
						if(i != numObs.length - 1) {
864
							numObsApl +="," ;
865
						}
128 aurelien 866
					}
140 aurelien 867
 
145 aurelien 868
					observationModele.transmettreListeObservation(listeObservation,numObsApl, publier) ;
108 aurelien 869
				}
870
			}
140 aurelien 871
			else
872
			{
873
				Window.alert("Aucune observation sélectionnée");
874
			}
108 aurelien 875
		}
128 aurelien 876
		else
877
		{
145 aurelien 878
			if(publier) {
879
				if(Window.confirm("La publication des observations nécessite d'être identifié, voulez-vous vous identifier ? (toutes vos observations saisies seront conservées)")) {
880
					importerObservations = true ;
881
					carnetEnLigneMediateur.afficherDialogueConnexion();
882
				}
140 aurelien 883
			}
128 aurelien 884
		}
108 aurelien 885
 
886
	}
140 aurelien 887
 
888
	public void analyserHistorique() {
889
 
890
		if (History.getToken().length()>0) {
115 aurelien 891
 
140 aurelien 892
	        final String anum=History.getToken();
893
	        observationModele.analyserHistorique(formulaireSaisieObservationVue,anum);
894
		}
895
	}
115 aurelien 896
 
156 aurelien 897
	/**
898
	 * Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du
899
	 * mot clé
900
	 *
901
	 * @param text
902
	 *            le texte du mot clé
903
	 * @param id
904
	 *            l'identifiant du mot clé
905
	 */
906
	public void mettreAjourMotsClesId(String text, String id) {
907
 
908
		observationModele.mettreAjourMotsClesId(text, id);
909
 
115 aurelien 910
	}
342 aurelien 911
 
912
	public boolean gererDDObsSurMotCle(TreeNode NoeudMotCle, DragData dragData) {
913
 
914
		if(dragData instanceof GridDragData) {
359 aurelien 915
 
342 aurelien 916
			GridDragData gdd = ((GridDragData)dragData);
917
 
918
			String idMotCle = ((String[])NoeudMotCle.getUserObject())[1];
919
 
920
			Record[] obsALier = gdd.getSelections();
921
 
922
			String idObsALier[] = new String[obsALier.length];
923
			String idObsALierString = "";
924
 
925
			for(int i = 0; i < obsALier.length; i++) {
926
				if(i != 0) {
927
					idObsALierString += ", ";
928
				}
929
				idObsALierString += obsALier[i].getAsString("ordre_observation");
930
 
359 aurelien 931
				if(!observationAvoirMotCle(idMotCle, obsALier[i].getAsString("ordre_observation"))) {
932
					idObsALier[i] = obsALier[i].getAsString("ordre_observation");
933
				} else {
934
					idObsALier[i] = "";
935
				}
342 aurelien 936
			}
937
 
938
			String message = "Lier les observations ";
939
 
940
			if(idObsALier.length == 1) {
941
				message = "Lier l'observation ";
942
			}
943
 
944
			if(Window.confirm(message+idObsALierString+" au projet "+NoeudMotCle.getText()+" ?")) {
945
				mettreAjourMotsCles(idMotCle, idObsALier);
946
 
947
				return true;
948
			} else {
949
				return false;
950
			}
951
		} else {
952
			return false;
953
		}
954
	}
955
 
385 aurelien 956
	public void gererDDMotCleSurObs(String idObs, String idMC) {
342 aurelien 957
 
958
		Observation obs = obtenirCacheObservation().get(idObs);
959
 
960
		if(obs == null) {
961
			return;
962
		}
963
 
385 aurelien 964
		if(observationAvoirMotCle(idMC, idObs)) {
342 aurelien 965
			if(Window.confirm("Voulez vous supprimer la liaison entre l'observation et le mot clé ?")) {
385 aurelien 966
				String nouveauMotsCles = obs.getMotsCles().replace(idMC, "");
342 aurelien 967
				nouveauMotsCles = nouveauMotsCles.replace(";;", ";");
968
 
969
				obs.setMotsCles(nouveauMotsCles);
970
 
1314 aurelien 971
				observationModele.supprimerLiaisonMotCleObservations(listeObservation, obs.getId(), idMC);
342 aurelien 972
			}
973
		}
974
	}
115 aurelien 975
 
342 aurelien 976
	public String gererOverDDMotCleSurObs(String idObs, String IdMC) {
977
 
978
		if(observationAvoirMotCle(IdMC, idObs)) {
979
		    return "x-dd-drop-unlink";
980
		} else {
981
			return "x-dd-drop-nodrop";
982
		}
983
	}
156 aurelien 984
	/**
342 aurelien 985
	 * Récupère les identifiants des obs selectionnézs et appelle le modèle
986
	 * pour qu'il mette à jour les associations mots clés/obs
156 aurelien 987
	 *
988
	 * @param motsClesEnCours
989
	 *            les mots clés à associer aux images selectionnés séparés par
342 aurelien 990
	 *            un ';'
156 aurelien 991
	 * @param arbreMC
992
	 *            l'arbre des mots clés à mettre à jour
993
	 */
318 aurelien 994
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
995
 
156 aurelien 996
		String[] ids = listeObservation.getIdSelectionnees();
318 aurelien 997
		observationModele.mettreAjourMotsCles(motsClesEnCours, idsObsALier);
156 aurelien 998
 
115 aurelien 999
	}
1000
 
156 aurelien 1001
	/**
1002
	 * Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots
1003
	 * clés
1004
	 *
1005
	 * @param n
1006
	 *            le noeud à ajouter à l'arbre
1007
	 * @param arbreMC
1008
	 *            le nouvel arbre de mots clés à mettre à jour
1009
	 */
1010
	public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
1011
		observationModele.ajouterMotCleDansArbre(n, arbreMC);
318 aurelien 1012
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
115 aurelien 1013
 
156 aurelien 1014
	}
1015
 
1016
	/**
1017
	 * Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre
1018
	 * dans l'arbre des mots clés
1019
	 *
1020
	 * @param n
1021
	 *            le noeud à supprimer
1022
	 * @param arbreMC
1023
	 *            le nouvel arbre de mots clés à mettre à jour
1024
	 */
1025
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1026
 
1027
		observationModele.supprimerMotCleDansArbre(n, arbreMC);
318 aurelien 1028
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n.getId(), false);
156 aurelien 1029
 
1030
	}
1031
 
1032
	/**
1033
	 * Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots
1034
	 * clés
1035
	 *
1036
	 * @param n
1037
	 *            le noeud à modifier
1038
	 * @param arbreMC
1039
	 *            le nouvel arbre de mots clés à mettre à jour
1040
	 */
1041
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
1042
 
1043
		observationModele.modifierMotCleDansArbre(n, arbreMC);
318 aurelien 1044
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
156 aurelien 1045
 
1046
	}
1047
 
1048
	/**
1049
	 * Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans
1050
	 * l'arbre des mots clés
1051
	 *
1052
	 * @param n
1053
	 *            le noeud à déplacer
1054
	 * @param arbreMC
1055
	 *            le nouvel arbre de mots clés à mettre à jour
1056
	 */
1057
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
1058
 
1059
		observationModele.deplacerMotCleDansArbre(n, arbreMC);
1060
	}
1061
 
1062
 
1063
	public void rafraichirArbreMotsCles(Tree arbreMotsCles) {
115 aurelien 1064
 
318 aurelien 1065
		getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(arbreMotsCles, false);
115 aurelien 1066
 
1067
	}
342 aurelien 1068
 
1069
	public boolean observationAvoirMotCle(String idMotCle, String idObs) {
1070
		Observation obs = obtenirCacheObservation().get(idObs);
1071
		if(obs == null) {
1072
			return false;
1073
		}
1074
 
1075
		if(obs.getMotsCles().contains(idMotCle)) {
1076
			return true;
1077
		}
1078
 
1079
		return false;
1080
	}
115 aurelien 1081
 
1082
 
156 aurelien 1083
	public void obtenirArbreMotsCles(Rafraichissable r) {
115 aurelien 1084
 
156 aurelien 1085
		observationModele.obtenirArbreMotsCles(r);
1086
	}
12 david 1087
 
677 aurelien 1088
	public String[] obtenirTexteMotsCles(String[] idsMotsCles) {
1089
 
1090
		String[] tableauMotsClesTexte = new String[idsMotsCles.length];
1091
 
1092
		for(int i=0; i< idsMotsCles.length; i++) {
1093
			tableauMotsClesTexte[i] = observationModele.obtenirTexteMotCle(idsMotsCles[i]);
1094
		}
1095
 
1096
		return tableauMotsClesTexte;
1097
	}
1098
 
156 aurelien 1099
	public ListeObservation obtenirCacheObservation() {
1100
		return observationModele.getCacheObservation();
1101
	}
1102
 
1103
	public void donneesExterieures(Object nouvelleDonnees) {
1104
		if(nouvelleDonnees instanceof Tree) {
1105
 
1106
			Tree arbreMotsCles = (Tree)nouvelleDonnees ;
1107
			observationModele.rafraichirArbreMotsCles(nouvelleDonnees);
1108
			rafraichirArbreMotsCles(arbreMotsCles);
1109
		}
1110
	}
1111
 
1112
	public void transmettreDonnees(Object o) {
1113
		carnetEnLigneMediateur.donneesObsVersImages(o);
1114
	}
217 aurelien 1115
 
1116
	public void onModeModification() {
1117
 
1118
		String[] ids = listeObservation.getIdSelectionnees();
359 aurelien 1119
		Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1120
 
217 aurelien 1121
		if(ids.length > 1) {
1122
			formulaireSaisieObservationVue.setMasseModification(true);
1123
			ListeObservation listeObs = new ListeObservation();
1124
			for(int i=0; i < ids.length;i++) {
1125
				Observation obsAjout = observationModele.getCacheObservation().get(ids[i]);
1126
				listeObs.ajouterObservation(obsAjout);
1127
			}
1128
			formulaireSaisieObservationVue.rafraichir(listeObs, false);
1129
		} else {
1130
			formulaireSaisieObservationVue.setMasseModification(false);
1131
			// affichage des détails dans le formulaire d'observation
1132
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1133
		}
251 aurelien 1134
 
677 aurelien 1135
		formulaireSaisieObservationVue.setTitle("Modification");
217 aurelien 1136
	}
251 aurelien 1137
 
1138
	public void onModeCreation() {
359 aurelien 1139
 
677 aurelien 1140
		formulaireSaisieObservationVue.setTitle("Création");
359 aurelien 1141
		String[] ids = listeObservation.getIdSelectionnees();
1142
 
1143
		if(ids.length > 1) {
1144
			Observation obs = listeObservation.getCacheListeObservation().get(ids[ids.length - 1]);
1145
			// affichage des détails dans le formulaire d'observation
1146
			formulaireSaisieObservationVue.rafraichir(obs, false) ;
1147
		}
251 aurelien 1148
	}
1149
 
1150
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
1151
		observationModele.obtenirInformationCoord(r,coord);
1152
	}
1153
 
1154
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
1155
		observationModele.obtenirInformationCommune(r,nomCommune, codePostal);
1156
	}
1157
 
1158
	public void obtenirInformationCoord(LatLng coord) {
1159
		observationModele.obtenirInformationCoord(cartoObservationVue,coord);
1160
	}
1161
 
1162
	public void obtenirInformationCommune(String nomCommune,
1163
			String codePostal) {
658 aurelien 1164
		observationModele.obtenirInformationCommune(cartoObservationVue,nomCommune, codePostal);
251 aurelien 1165
	}
1166
 
1167
	public void rafraichirSaisieCommuneObservation(EntiteGeographiqueObservation infosCommune) {
1168
		formulaireSaisieObservationVue.rafraichir(infosCommune, false);
677 aurelien 1169
		cacherFenetreCarto();
251 aurelien 1170
	}
261 aurelien 1171
 
1172
	private void razFiltres() {
1173
		filtres.getArbreDateObservationFiltreVue().raz() ;
1174
		filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
318 aurelien 1175
		filtres.getArbreMotsClesObservationVue().raz();
261 aurelien 1176
		filtres.getRechercheLibreVue().raz();
1177
	}
677 aurelien 1178
 
318 aurelien 1179
 
677 aurelien 1180
	public void viderFiltre(String nom) {
1181
		filtres.viderFiltres(nom);
1182
		obtenirNombreObservation();
1183
	}
1184
 
318 aurelien 1185
	public Component getListeObservation() {
1186
		return listeObservation;
1187
	}
1188
 
1324 aurelien 1189
	public void redimensionnerPanneaux(int adjHeight, int adjWidth) {
342 aurelien 1190
		formulaireSaisieObservationVue.setHeight(300);
1324 aurelien 1191
		listeObservation.setHeight(adjHeight/2);
318 aurelien 1192
		centre.doLayout();
1193
	}
1194
 
437 aurelien 1195
	public void afficherFormulaireImportObservation() {
482 david 1196
		if (formImportObs==null) { // lazy inst.
1197
			formImportObs = new FormulaireImportObservationVue(this);
1198
		}
1542 aurelien 1199
		formImportObs.afficher();
437 aurelien 1200
	}
1201
 
658 aurelien 1202
	public void setImporterObservationsAnonymes(boolean importerObservations) {
1203
		this.importerObservations = importerObservations;
1204
	}
1205
 
1206
 
1207
	private void localiserSurCommuneSelectionnee() {
1208
 
1209
		cartoObservationVue.masquerChargement(true);
1210
 
1211
		double[] coordsTab = formulaireSaisieObservationVue.coordonneesValides();
1212
 
1213
		if(formulaireSaisieObservationVue.coordonneesValides() != null && !formulaireSaisieObservationVue.getCommune().equals("")) {
1214
 
1215
			String nomCommune = formulaireSaisieObservationVue.getCommuneSansDepartement();
1216
			String dptCommune = formulaireSaisieObservationVue.getDepartement();
1217
			EntiteGeographiqueObservation egeo = new EntiteGeographiqueObservation(dptCommune, nomCommune, "","");
1218
			egeo.setLat(coordsTab[0]+"");
1219
			egeo.setLon(coordsTab[1]+"");
1220
 
1221
			cartoObservationVue.rafraichir(egeo, false);
1222
 
1223
		} else {
1224
			if(formulaireSaisieObservationVue.coordonneesValides() != null) {
1225
				LatLng coords = LatLng.newInstance(coordsTab[0],coordsTab[1]);
1226
				obtenirInformationCoord(coords);
1227
			} else if (formulaireSaisieObservationVue.communeInitialisee()) {
1228
				String nomCommune = formulaireSaisieObservationVue.getCommune();
1229
				String dptCommune = formulaireSaisieObservationVue.getDepartement();
1230
				obtenirInformationCommune(nomCommune, dptCommune);
1231
			} else {
1232
				obtenirInformationCoord(cartoObservationVue.getCentreFrance());
1233
			}
1234
		}
1235
	}
1236
 
677 aurelien 1237
	public void afficherFenetreCarto() {
1238
		int hauteur = (int)Math.round(Window.getClientHeight()*0.75);
1239
		int largeur = (int)Math.round(Window.getClientWidth()*0.75);
1240
		fenetreCarto.setSize(largeur, hauteur);
1241
		if(!fenetreCarto.isVisible()) {
1242
			fenetreCarto.show();
1243
		}
1244
		cartoObservationVue.setTailleCarte(hauteur - 20, largeur - 20);
1245
		cartoObservationVue.recentrerCarte();
658 aurelien 1246
	}
677 aurelien 1247
 
1248
 
1249
 
1250
	private void cacherFenetreCarto() {
1251
		if(fenetreCarto.isVisible()) {
1252
			fenetreCarto.hide();
1253
		}
1254
	}
1542 aurelien 1255
 
1256
	public InfosReferentielNom getRefTaxSelectionne() {
1257
		return refTaxSelectionne;
1258
	}
1259
 
1260
	public void setRefTaxSelectionne(int index) {
1261
		refTaxSelectionne = Configuration.getReferentielsDispos().get(index);
1262
	}
1263
 
1264
	public void setRefTaxSelectionne(InfosReferentielNom refTax) {
1265
		refTaxSelectionne = refTax;
1266
	}
2 aperonnet 1267
}