Subversion Repositories eFlore/Applications.cel

Rev

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