Subversion Repositories eFlore/Applications.cel

Rev

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