Subversion Repositories eFlore/Applications.cel

Rev

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