Subversion Repositories eFlore/Applications.cel

Rev

Rev 136 | Rev 145 | 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
 
2 aperonnet 7
import org.tela_botanica.client.CarnetEnLigneMediateur;
12 david 8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.ListeObservation;
2 aperonnet 10
import org.tela_botanica.client.modeles.Observation;
12 david 11
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
54 david 12
import org.tela_botanica.client.vues.ImageGeneriqueVue;
13
import org.tela_botanica.client.vues.InformationRepartitionVue;
12 david 14
import org.tela_botanica.client.vues.ListeObservationVue;
107 aurelien 15
import org.tela_botanica.client.vues.MenuObservationVue;
94 jpm 16
import org.tela_botanica.client.vues.MiniZoomImageVue;
115 aurelien 17
import org.tela_botanica.client.vues.NuageMotsClesVue;
54 david 18
import org.tela_botanica.client.vues.PanneauFiltresObservationVues;
115 aurelien 19
 
53 david 20
import com.google.gwt.core.client.GWT;
125 aurelien 21
import com.google.gwt.core.client.JavaScriptObject;
140 aurelien 22
import com.google.gwt.user.client.History;
77 jpm 23
import com.google.gwt.user.client.Window;
41 jpm 24
import com.gwtext.client.core.EventObject;
86 jpm 25
import com.gwtext.client.core.Ext;
26
import com.gwtext.client.core.ExtElement;
53 david 27
import com.gwtext.client.core.RegionPosition;
125 aurelien 28
import com.gwtext.client.widgets.BoxComponent;
86 jpm 29
import com.gwtext.client.widgets.Component;
125 aurelien 30
import com.gwtext.client.widgets.Container;
12 david 31
import com.gwtext.client.widgets.Panel;
86 jpm 32
import com.gwtext.client.widgets.event.ContainerListener;
33
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
53 david 34
import com.gwtext.client.widgets.layout.BorderLayout;
35
import com.gwtext.client.widgets.layout.BorderLayoutData;
36
import com.gwtext.client.widgets.layout.RowLayout;
80 jpm 37
import com.gwtext.client.widgets.layout.RowLayoutData;
2 aperonnet 38
 
48 david 39
 
12 david 40
/**
41
 * Mediateur gérant les interactions entre vues et les echanges de données
42
 * C'est un singleton.
43
 * @author aurelien
44
 *
45
 */
47 david 46
public class ObservationMediateur {
12 david 47
 
48
	/**
49
	 * booleen qui verifie l'unicite de l'instance (donc static)
50
	 */
31 jpm 51
	private static boolean estInstancie = false ;
52
 
53
	/**
54
	 * pointeur sur le médiateur (pour le pattern singleton)
55
	 */
56
	private static ObservationMediateur thisMediateur = null ;
12 david 57
 
58
	/** Mediateur general de l'application carnet en ligne
59
	 *
60
	 *
61
	 */
62
 
63
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
64
 
65
 
66
	/**
67
	 * modele de données
68
	 */
69
	private ObservationModele observationModele = null ;
70
 
71
 
72
	/**
73
	 * panneau principal des Observation (onglet "observation")
74
	 */
75
	private final Panel panneauPrincipalObservation = new Panel("Observation");
76
 
77
 
78
	/**
79
	 * liste détaillée des Observations
80
	 */
81
	private ListeObservationVue listeObservation = null ;
82
 
83
	/**
84
	 * Saisie des Observations
85
	 */
86
 
87
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
88
 
48 david 89
 
90
 
12 david 91
	/**
92
	 * booleen explicitant s'il y a une selection en cours
93
	 */
94
	private boolean selection = false ;
47 david 95
 
12 david 96
 
97
 
98
	/**
99
	 * La liste des observations affichées en cours (verifier utilité)
100
	 */
101
 
102
	private ListeObservation cacheObservation = new ListeObservation(0) ;
103
	/**
104
 
105
 
53 david 106
	/**
107
	 * panneau conteneur pour le panneau  des informations lies à l'observation
108
	 */
12 david 109
 
53 david 110
  	private Panel details = new Panel("Détails");
111
 
112
 
113
 
12 david 114
	/**
53 david 115
	 * panneau conteneur pour le panneau des filtres
116
	 */
117
 
54 david 118
  	private PanneauFiltresObservationVues filtres = null;
53 david 119
 
120
 
54 david 121
 
122
  	/**
123
  	 * panneau d'information de repartition sur le nom selectionné
124
  	 *
125
  	 */
126
 
127
  	private InformationRepartitionVue informationRepartitionVue=null;
128
 
129
 
130
  	/**
131
  	 * panneau d'affichage d'une image generique associe au nom selectionne
132
  	 *
133
  	 */
134
 
135
  	private ImageGeneriqueVue imageGeneriqueVue=null;
136
 
94 jpm 137
  	private MiniZoomImageVue mvz = null ;
54 david 138
 
115 aurelien 139
  	private NuageMotsClesVue nuaMC = null;
94 jpm 140
 
125 aurelien 141
  	private Panel conteneurFormulaire = null ;
115 aurelien 142
 
140 aurelien 143
  	private boolean importerObservations = false ;
144
 
53 david 145
	/**
12 david 146
	 * constructeur privé (on accède a la classe par la méthode getInstance
147
	 */
148
 
149
 
150
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
151
	{
152
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
153
 
53 david 154
 
12 david 155
		// on crée un modèle
156
		observationModele = ObservationModele.Instance(this);
157
 
158
 
48 david 159
 
12 david 160
		listeObservation = new ListeObservationVue(this);
53 david 161
		listeObservation.setTitle("Observations");
12 david 162
 
53 david 163
		// quelques variables de position pour les borderlayouts
164
		final BorderLayoutData regionNord = new BorderLayoutData(
165
				RegionPosition.NORTH);
166
 
167
		final BorderLayoutData regionCentre = new BorderLayoutData(
168
				RegionPosition.CENTER);
169
 
170
 
171
		final BorderLayoutData regionEst = new BorderLayoutData(
172
				RegionPosition.EAST);
173
 
174
 
175
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted
176
			regionEst.setSplit(true);
177
		}
178
 
179
		final BorderLayoutData regionOuest = new BorderLayoutData(
180
				RegionPosition.WEST);
12 david 181
 
53 david 182
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted
183
			regionOuest.setSplit(true);
184
		}
185
 
186
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
187
 
115 aurelien 188
		// on ajoute un panneau supplémentaire pour contenir le formulaire, pour éviter un bug de taille
189
		// des panneaux
125 aurelien 190
		conteneurFormulaire = new Panel();
53 david 191
 
12 david 192
		// Le formulaire de saisie / modification d'observation
193
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
115 aurelien 194
		formulaireSaisieObservationVue.setHeader(false);
195
		conteneurFormulaire.setTitle("Saisie");
196
		conteneurFormulaire.setTitleCollapse(true);
197
		conteneurFormulaire.setCollapsible(true) ;
53 david 198
 
2 aperonnet 199
 
125 aurelien 200
		final Panel centre = new Panel();
201
		centre.setLayout(new RowLayout());
80 jpm 202
 
125 aurelien 203
		centre.setHeight(panneauPrincipalObservation.getHeight());
115 aurelien 204
 
205
		formulaireSaisieObservationVue.setBorder(false);
206
		conteneurFormulaire.add(formulaireSaisieObservationVue);
12 david 207
 
128 aurelien 208
		centre.add(conteneurFormulaire, new RowLayoutData(210));
125 aurelien 209
		centre.add(listeObservation, new RowLayoutData());
2 aperonnet 210
 
53 david 211
		// on initialise le volet qui contient les details
136 aurelien 212
		details.setWidth("10%");
53 david 213
		details.setTitleCollapse(true);
214
		details.setCollapsible(true);
54 david 215
		details.setLayout(new RowLayout());
136 aurelien 216
		details.setAutoScroll(true);
53 david 217
 
54 david 218
		// Information de repartition
219
		informationRepartitionVue=new InformationRepartitionVue(this);
220
		// TODO : calcul de la hauteur automatique par le panel ?
221
		informationRepartitionVue.setHeight(160);
136 aurelien 222
		details.add(informationRepartitionVue, new RowLayoutData("33%"));
54 david 223
 
224
 
225
		// Image generique
226
		imageGeneriqueVue=new ImageGeneriqueVue(this);
227
		// TODO : calcul de la hauteur automatique par le panel ?
228
 
229
		imageGeneriqueVue.setHeight(160);
136 aurelien 230
		details.add(imageGeneriqueVue, new RowLayoutData("33%"));
54 david 231
 
94 jpm 232
		mvz = new MiniZoomImageVue(this) ;
54 david 233
 
136 aurelien 234
		details.add(mvz, new RowLayoutData("34%")) ;
94 jpm 235
 
54 david 236
		// on crée le panneau des filtres
237
		filtres = new PanneauFiltresObservationVues(this);
238
 
239
		// on initialise le volet qui contient les filtres
136 aurelien 240
		filtres.setWidth("10%");
99 jpm 241
		filtres.setHeight(700) ;
53 david 242
		filtres.setTitleCollapse(true);
243
		filtres.setCollapsible(true);
54 david 244
 
53 david 245
		panneauPrincipalObservation.add(details,regionEst);
246
		panneauPrincipalObservation.add(filtres,regionOuest);
247
		panneauPrincipalObservation.add(centre,regionCentre);
248
 
12 david 249
	}
2 aperonnet 250
 
7 aperonnet 251
 
12 david 252
	/**
253
	 * Retourne une instance de manière unique
254
	 * @return l'instance unique du médiateur
255
	 */
256
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
257
	{
31 jpm 258
			if(!estInstancie || thisMediateur == null)
12 david 259
			{
260
				estInstancie = true ;
31 jpm 261
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
12 david 262
			}
31 jpm 263
 
264
			return thisMediateur ;
12 david 265
	}
140 aurelien 266
 
267
 
268
	public void connecterUtilisateur() {
269
 
270
		if(importerObservations) {
271
 
272
			observationModele.importerObservations();
273
		}
274
 
275
		if(panneauPrincipalObservation == null || !panneauPrincipalObservation.isCreated())
276
		{
277
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
278
			{
279
				public void onRender(Component c)
280
				{
281
					panneauPrincipalObservation.purgeListeners() ;
282
					obtenirNombreObservation();
283
					initialiserArbres();
284
					analyserHistorique();
285
				}
286
 
287
			}) ;
288
		}
289
		else
290
		{
291
			obtenirNombreObservation();
292
			initialiserArbres();
293
			analyserHistorique();
294
		}
295
	}
296
 
297
	private void initialiserArbres() {
298
		getPanneauFiltres().getArbreDateObservationFiltreVue().initialiser();
299
		getPanneauFiltres().getArbreEntiteGeographiqueObservationFiltreVue().initialiser();
300
 
301
 
302
	}
82 david 303
 
12 david 304
 
305
 
82 david 306
	// ACTIONS  a entreprendre lors d'un evenement particulier
12 david 307
 
82 david 308
 
12 david 309
	/**
82 david 310
	 * Lors du raffraichissement de la liste d'observation
311
	 */
312
 
313
 
314
	public void onRafraichissementListeObservations() {
315
 
316
		cacheObservation = listeObservation.getCacheListeObservation() ;
317
		if(cacheObservation.size() == 0)
318
		{
119 david 319
			//formulaireSaisieObservationVue.raz() ;
82 david 320
		}
104 jpm 321
		carnetEnLigneMediateur.donneesRafraichies(cacheObservation) ;
82 david 322
	}
323
 
324
	/**
325
	 *
326
	 * TODO : fonction plus generique, appelle sur un clic ou une selection de ligne, a appeller : SelectionnerObservation
327
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste le
328
	 * médiateur gère alors les conséquences
329
	 *
330
	 * @param rowIndex
331
	 *            le numéro de ligne selectionné
332
	 */
333
 
334
	public void onClicListeObservation(int rowIndex, String ordreObservation) {
335
 
336
		Observation obs = cacheObservation.get(ordreObservation) ;
337
 
105 aurelien 338
		if(GWT.isScript()) {
339
			masquerChargementInfosObservations() ;
340
		}
86 jpm 341
 
82 david 342
		// Affichage de la carte de repartition correspondante
343
		String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalSaisi() ;
344
 
345
		observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
105 aurelien 346
 
82 david 347
		// affichage des détails dans le formulaire d'observation
348
		formulaireSaisieObservationVue.rafraichir(obs, false) ;
349
		// Affichage de l'image correspondante
350
 
351
		observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
94 jpm 352
 
353
		observationModele.obtenirLiaisonImage(mvz, ordreObservation) ;
82 david 354
 
355
 
356
	}
357
 
128 aurelien 358
	public void obtenirImageInformationExternes(String numeroNomenclaturalSaisiObservation) {
359
		if(GWT.isScript()) {
360
			masquerChargementInfosObservations() ;
361
		}
362
		observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
363
		observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
364
	}
82 david 365
 
128 aurelien 366
 
82 david 367
	// ACCES au Modèle
368
 
369
 
370
	// C du CRUD
371
 
372
 
373
 
374
	/**
375
	 * TODO : afficher un message du type "observation ajouté".
376
	 * Lance la creation d'une observation
377
	 * @param obs : l'observation saisie
104 jpm 378
	 */
82 david 379
	public void ajouterObservation(Observation obs) {
104 jpm 380
 
82 david 381
	  // On raffraichi la liste d'observation
382
	  observationModele.ajouterObservation(listeObservation, obs) ;
91 jpm 383
	  filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
94 jpm 384
	  filtres.getArbreDateObservationFiltreVue().rafraichir(obs,true) ;
82 david 385
 
386
	}
387
 
388
 
389
 
390
	// R du CRUD
391
 
392
	/**
54 david 393
	 * Demande au modele le nombre d'Observation à afficher
394
	 * TODO : grouper cette demande avec la demande d'affichage de liste ?
12 david 395
	 */
2 aperonnet 396
 
12 david 397
	public void obtenirNombreObservation() {
398
 
125 aurelien 399
		listeObservation.masquerChargement() ;
104 jpm 400
		mvz.raz() ;
401
		imageGeneriqueVue.raz() ;
402
		informationRepartitionVue.raz() ;
403
		observationModele.obtenirNombreObservation(listeObservation) ;
12 david 404
 
2 aperonnet 405
	}
54 david 406
 
12 david 407
 
82 david 408
 
409
	public void obtenirListeObservation() {
410
		obtenirListeObservation(listeObservation);
411
	}
412
 
2 aperonnet 413
	/**
82 david 414
	 * Demande au modele le detail  des Observations à afficher
54 david 415
	 * TODO : grouper cette demande avec la demande d'affichage de liste ?
2 aperonnet 416
	 */
7 aperonnet 417
 
12 david 418
 
61 jpm 419
	public void obtenirListeObservation(Rafraichissable r) {
420
 
77 jpm 421
		listeObservation.masquerChargement() ;
125 aurelien 422
 
61 jpm 423
		observationModele.obtenirListeObservation(r,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
424
	}
425
 
86 jpm 426
	public void obtenirCacheObservation(Rafraichissable r) {
427
 
428
		r.rafraichir(cacheObservation, false) ;
429
	}
430
 
82 david 431
 
2 aperonnet 432
	/**
82 david 433
	 * Envoie au modèle une demande pour obtenir l'arbre des localites
434
	 *
435
	 * @param r
436
	 *            le raffraichissable qui a demandé la mise à jour
2 aperonnet 437
	 */
82 david 438
	public void obtenirListeEntiteGeographique() {
12 david 439
 
91 jpm 440
		observationModele.obtenirListeEntiteGeographique(filtres.getArbreEntiteGeographiqueObservationFiltreVue());
12 david 441
 
442
	}
82 david 443
 
444
 
445
	// U du CRUD
446
	public void modifierObservation(Observation obs) {
447
 
12 david 448
 
82 david 449
	  // On raffraichi la liste d'observation
450
	  observationModele.modifierObservation(listeObservation, obs) ;
91 jpm 451
	  filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
82 david 452
 
453
	}
12 david 454
 
82 david 455
 
456
 
457
	// D du CRUD
458
 
459
 
94 jpm 460
 
54 david 461
	/**
82 david 462
	 * TODO : afficher un message du type "observation modifie".
463
	 * Lance la modification d'une observation
464
	 * @param obs : l'observation a modifier
54 david 465
	 */
466
 
82 david 467
 
468
 
469
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
470
 
471
		if(listeObservation.getSelectionModel().getCount() > 0)
472
		{
473
			if(Window.confirm("Êtes vous sur de vouloir supprimer cette observation ?")) {
474
			observationModele.supprimerObservation(r,numeroOrdre) ;
475
			}
476
		}
477
 
2 aperonnet 478
	}
12 david 479
 
82 david 480
	// Assistants de saisie
2 aperonnet 481
	/**
13 david 482
	 *
483
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne
484
	 * @param r : la vue demandeuse de donnee
485
	 * @param critere : les criteres de selection
486
	 */
12 david 487
 
13 david 488
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 489
 
13 david 490
		observationModele.obtenirListeReferentielCommune(r,critere) ;
2 aperonnet 491
 
12 david 492
 
2 aperonnet 493
	}
20 david 494
 
82 david 495
 
496
 
20 david 497
	/**
498
	 *
499
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne
500
	 * @param r : la vue demandeuse de donnee
501
	 * @param critere : les criteres de selection
502
	 */
503
 
504
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
2 aperonnet 505
 
94 jpm 506
		observationModele.obtenirListeReferentielNom(r,critere) ;
20 david 507
	}
82 david 508
 
509
	// Etat du syteme
510
 
20 david 511
	/**
82 david 512
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
513
	 * sous forme de tableau [nom, valeur]
514
	 * @return Les noms et valeurs des filtres
20 david 515
	 */
82 david 516
	public String[][] renvoyerFiltres()
115 aurelien 517
	{
518
		int longueur = 0;
125 aurelien 519
			/*String[] filtresMotsCles = filtres.getMotsClesObsVue().renvoyerValeursAFiltrer();
115 aurelien 520
			if(filtresMotsCles.length > 0) {
521
				longueur++ ;
125 aurelien 522
			}*/
115 aurelien 523
 
91 jpm 524
			String[] filtresEntitesGeo = filtres.getArbreEntiteGeographiqueObservationFiltreVue().renvoyerValeursAFiltrer() ;
525
			String chaineNomsFiltresGeo = filtresEntitesGeo[0] ;
526
			String chaineValFiltresGeo = filtresEntitesGeo[1] ;
87 jpm 527
 
91 jpm 528
			String[] filtresDate = filtres.getArbreDateObservationFiltreVue().renvoyerValeursAFiltrer() ;
529
			String chaineNomsFiltresDate = filtresDate[0] ;
530
			String chaineValFiltresDate = filtresDate[1] ;
531
 
532
			String chaineNomsFiltres = chaineNomsFiltresGeo+","+chaineNomsFiltresDate ;
533
			String chaineValFiltres = chaineValFiltresGeo+","+chaineValFiltresDate ;
534
 
87 jpm 535
			String[] nomsFiltres = chaineNomsFiltres.split(",") ;
536
			String[] valsFiltres = chaineValFiltres.split(",") ;
91 jpm 537
 
115 aurelien 538
			longueur += nomsFiltres.length;
94 jpm 539
 
115 aurelien 540
			String [][] valeursFiltres = new String[longueur][2] ;
541
 
94 jpm 542
			listeObservation.afficherFiltres(chaineValFiltresGeo, chaineValFiltresDate) ;
91 jpm 543
 
115 aurelien 544
			int i = 0;
91 jpm 545
 
87 jpm 546
			if(nomsFiltres.length > 0)
547
			{
115 aurelien 548
				for(i = 0 ; i < nomsFiltres.length ; i++)
87 jpm 549
				{
550
					valeursFiltres[i][0] = nomsFiltres[i] ;
551
					if(valsFiltres[i].equals("Inconnue"))
552
					{
553
						valeursFiltres[i][1] = "000null" ;
554
					}
555
					else
556
					{
557
						valeursFiltres[i][1] = valsFiltres[i] ;
558
					}
559
				}
560
			}
115 aurelien 561
 
125 aurelien 562
			/*if(filtresMotsCles.length > 0) {
115 aurelien 563
				valeursFiltres[i][0] = filtresMotsCles[0] ;
564
				filtresMotsCles[1] = filtresMotsCles[1].replace("\n", " ");
565
				valeursFiltres[i][1] = filtresMotsCles[1].replace(" ", ";") ;
125 aurelien 566
			}*/
115 aurelien 567
 
568
			return valeursFiltres ;
20 david 569
	}
82 david 570
 
41 jpm 571
 
54 david 572
	/**
82 david 573
	 * Retourne l'identifiant de l'utilisateur connecte
574
	 * @return : identifiant de l'utilisateur connecte
74 david 575
	 */
82 david 576
	public String getIdentifiant() {
74 david 577
 
140 aurelien 578
		return carnetEnLigneMediateur.getUtilisateur().getIdentite();
74 david 579
 
77 jpm 580
	}
82 david 581
 
582
 
74 david 583
	/**
54 david 584
	 *
82 david 585
	 * @return
54 david 586
	 *
587
	 */
588
 
82 david 589
	public Panel getPanneauPrincipalObservation() {
590
		return panneauPrincipalObservation;
591
	}
54 david 592
 
593
 
41 jpm 594
	public void montrerContextMenu(EventObject e) {
595
 
107 aurelien 596
		MenuObservationVue mvo = new MenuObservationVue(this) ;
597
		mvo.showAt(e.getXY()) ;
41 jpm 598
 
599
	}
600
 
601
	public void doubleClicListeObservation(int rowIndex) {
602
 
603
 
604
	}
605
 
54 david 606
 
82 david 607
 
608
	// Getters
609
 
54 david 610
	public PanneauFiltresObservationVues getPanneauFiltres() {
611
 
612
		return filtres;
613
 
614
	}
86 jpm 615
 
616
	public void masquerChargementInfosObservations()
617
	{
618
		ExtElement masked = Ext.get(details.getId());
54 david 619
 
86 jpm 620
		if (masked != null && !masked.isMasked()) {
621
			informationRepartitionVue.raz() ;
622
			imageGeneriqueVue.raz() ;
623
			masked.mask("Chargement", true);
624
		}
625
	}
82 david 626
 
86 jpm 627
	public void deMasquerChargementInfosObservations()
628
	{
629
		ExtElement masked = Ext.get(details.getId());
63 jpm 630
 
86 jpm 631
		if (masked != null && masked.isMasked()) {
632
			masked.unmask() ;
633
		}
634
	}
91 jpm 635
 
636
 
637
	public void obtenirDatesObservation() {
638
 
639
		observationModele.obtenirDatesObservation(filtres.getArbreDateObservationFiltreVue()) ;
640
	}
101 jpm 641
 
642
 
643
	public void exporterObservations() {
644
 
128 aurelien 645
			observationModele.exporterObservations() ;
101 jpm 646
	}
104 jpm 647
 
648
 
649
	public void deconnecterUtilisateur() {
650
 
140 aurelien 651
		if(panneauPrincipalObservation == null || panneauPrincipalObservation.isCreated() || !panneauPrincipalObservation.isVisible())
652
		{
653
			panneauPrincipalObservation.addListener(new ContainerListenerAdapter()
654
			{
655
				public void onShow(Component component)
656
				{
657
					deconnecterUtilisateur();
658
					panneauPrincipalObservation.purgeListeners();
659
				}
660
			});
661
		}
662
		else
663
		{
664
			listeObservation.raz() ;
665
			formulaireSaisieObservationVue.raz() ;
666
			filtres.getArbreDateObservationFiltreVue().raz() ;
667
			filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
668
			informationRepartitionVue.raz() ;
669
			imageGeneriqueVue.raz() ;
670
			mvz.raz() ;
671
		}
104 jpm 672
	}
673
 
674
 
675
	public void supprimerLiaisonObsImage() {
676
 
677
		String idObs = listeObservation.getIdSelectionnees()[0] ;
678
		String idImg = mvz.getIdImage() ;
679
 
680
		if(Window.confirm("Supprimer le lien entre l'image "+idImg+" et l'observations "+idObs+" ?"))
681
		{
682
			mvz.supprimerLiaisonImage() ;
683
			observationModele.supprimerLiaisonImages(idImg,idObs) ;
684
		}
685
 
686
	}
107 aurelien 687
 
688
	public void supprimerObservations() {
689
 
128 aurelien 690
		if(listeObservation.getIdSelectionnees().length > 0) {
691
			if(Window.confirm("Êtes vous sur de vouloir supprimer les observations sélectionnées ?")) {
692
					String[] numObs = listeObservation.getIdSelectionnees();
693
					String numObsapl = "" ;
694
					for(int i = 0 ; i < numObs.length ; i++) {
695
						numObsapl += numObs[i]+"," ;
696
					}
697
 
698
					observationModele.supprimerListeObservation(listeObservation,numObsapl) ;
107 aurelien 699
			}
128 aurelien 700
		}
701
		else
702
		{
703
			Window.alert("Aucune observation sélectionnée");
704
		}
107 aurelien 705
	}
108 aurelien 706
 
707
 
708
	public void transmettreObservations() {
709
 
140 aurelien 710
		if(carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
711
			if(listeObservation.getIdSelectionnees().length > 0) {
712
				if(Window.confirm("Êtes vous sur de vouloir transmettre les observations sélectionnées ?")) {
713
					String[] numObs = listeObservation.getIdSelectionnees();
714
					String numObsApl = "" ;
715
					for(int i = 0 ; i < numObs.length ; i++) {
716
						numObsApl += numObs[i] ;
717
						if(i != numObs.length - 1) {
718
							numObsApl +="," ;
719
						}
128 aurelien 720
					}
140 aurelien 721
 
722
					observationModele.transmettreListeObservation(listeObservation,numObsApl) ;
108 aurelien 723
				}
724
			}
140 aurelien 725
			else
726
			{
727
				Window.alert("Aucune observation sélectionnée");
728
			}
108 aurelien 729
		}
128 aurelien 730
		else
731
		{
140 aurelien 732
			if(Window.confirm("La transmission des observations nécessite d'être identifié, voulez-vous vous identifier ? (toutes vos observations saisies seront conservées)")) {
733
				importerObservations = true ;
734
				carnetEnLigneMediateur.afficherDialogueConnexion();
735
			}
128 aurelien 736
		}
108 aurelien 737
 
738
	}
140 aurelien 739
 
740
	public void analyserHistorique() {
741
 
742
		if (History.getToken().length()>0) {
115 aurelien 743
 
140 aurelien 744
	        final String anum=History.getToken();
745
	        observationModele.analyserHistorique(formulaireSaisieObservationVue,anum);
746
		}
747
	}
115 aurelien 748
 
140 aurelien 749
 
125 aurelien 750
	/*public void ajouterMotCleRecherche(String motCle) {
115 aurelien 751
 
752
		filtres.getMotsClesObsVue().rafraichir(motCle, false);
753
	}
754
 
755
 
756
	public void obtenirNuageMotsCles(Rafraichissable r) {
757
 
758
		observationModele.obtenirNuageMotsCles(r);
759
	}
760
 
761
 
762
	public void afficherNuageMotsCles() {
763
 
764
		if(nuaMC != null && nuaMC.isVisible()) {
765
			nuaMC.hide();
766
			nuaMC.close();
767
			nuaMC = null;
768
		}
769
		else {
770
			nuaMC = new NuageMotsClesVue(this);
771
			nuaMC.show(filtres.getMotsClesObsVue().getElement());
772
		}
773
	}
774
 
775
 
776
	public void AjouterMotsClesEnMasse(String motsAAjouter) {
777
 
778
		String[] numObs = listeObservation.getIdSelectionnees();
779
		String numObsApl = "" ;
780
 
781
		if(numObs.length < 1) {
782
			return;
783
		}
784
 
785
		for(int i = 0 ; i < numObs.length ; i++) {
786
			numObsApl += numObs[i] ;
787
			if(i != numObs.length - 1) {
788
				numObsApl +="," ;
789
			}
790
		}
791
 
792
		motsAAjouter = motsAAjouter.replace("\n", " ");
793
		motsAAjouter = motsAAjouter.replace(" ", ";");
794
		observationModele.ajouterMotsCles(listeObservation,numObsApl,motsAAjouter);
795
 
796
	}
797
 
798
 
799
	public void afficherSaisieMotsCles(Element e) {
800
 
801
		SaisieMotsClesVue suaMC = new SaisieMotsClesVue(this);
802
		suaMC.show(e.getId());
803
 
125 aurelien 804
	}*/
12 david 805
 
2 aperonnet 806
}