Subversion Repositories eFlore/Applications.cel

Rev

Rev 410 | Rev 446 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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