Subversion Repositories eFlore/Applications.cel

Rev

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