Subversion Repositories eFlore/Applications.cel

Rev

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