Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.observation;
2
 
12 david 3
 
86 jpm 4
 
82 david 5
// TODO : systematiser les onQuelquechose, appelle depuis les vues
2 aperonnet 6
import org.tela_botanica.client.CarnetEnLigneMediateur;
12 david 7
import org.tela_botanica.client.interfaces.Rafraichissable;
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
445
			String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalSaisi() ;
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
				{
325 aurelien 712
					valeursFiltres[i][1] = "000null" ;
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
 
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
 
937 aurelien 853
		if(Utilisateur.getInstance().isIdentifie()) {
140 aurelien 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
		}
937 aurelien 1213
		formImportObs.initialiserUtilisateur(Utilisateur.getInstance().getIdentifiantUtilisateurConnecte());
482 david 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
}