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