Subversion Repositories eFlore/Applications.cel

Rev

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