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