Subversion Repositories eFlore/Applications.cel

Rev

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