Subversion Repositories eFlore/Applications.cel

Rev

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