Subversion Repositories eFlore/Applications.cel

Rev

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

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