Subversion Repositories eFlore/Applications.coel

Rev

Rev 781 | Rev 786 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
219 aurelien 1
package org.tela_botanica.client.vues;
2
 
227 aurelien 3
import java.util.ArrayList;
4
import java.util.Iterator;
365 jp_milcent 5
import java.util.List;
227 aurelien 6
import java.util.Set;
7
 
219 aurelien 8
import org.tela_botanica.client.Mediateur;
9
import org.tela_botanica.client.RegistreId;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
705 aurelien 11
import org.tela_botanica.client.modeles.Information;
775 jpm 12
import org.tela_botanica.client.modeles.MenuApplicationId;
239 aurelien 13
import org.tela_botanica.client.modeles.Personne;
227 aurelien 14
import org.tela_botanica.client.modeles.PersonneListe;
219 aurelien 15
import org.tela_botanica.client.modeles.Publication;
749 aurelien 16
import org.tela_botanica.client.modeles.PublicationAPersonne;
17
import org.tela_botanica.client.modeles.PublicationAPersonneListe;
705 aurelien 18
import org.tela_botanica.client.modeles.PublicationListe;
219 aurelien 19
import org.tela_botanica.client.modeles.Structure;
227 aurelien 20
import org.tela_botanica.client.modeles.StructureListe;
782 jpm 21
import org.tela_botanica.client.util.UtilArray;
219 aurelien 22
 
23
import com.extjs.gxt.ui.client.Registry;
24
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
705 aurelien 25
import com.extjs.gxt.ui.client.event.BaseEvent;
505 jp_milcent 26
import com.extjs.gxt.ui.client.event.ButtonEvent;
775 jpm 27
import com.extjs.gxt.ui.client.event.ComponentEvent;
705 aurelien 28
import com.extjs.gxt.ui.client.event.Events;
775 jpm 29
import com.extjs.gxt.ui.client.event.KeyListener;
705 aurelien 30
import com.extjs.gxt.ui.client.event.Listener;
219 aurelien 31
import com.extjs.gxt.ui.client.event.SelectionListener;
32
import com.extjs.gxt.ui.client.store.ListStore;
227 aurelien 33
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
219 aurelien 34
import com.extjs.gxt.ui.client.widget.LayoutContainer;
705 aurelien 35
import com.extjs.gxt.ui.client.widget.MessageBox;
219 aurelien 36
import com.extjs.gxt.ui.client.widget.button.Button;
37
import com.extjs.gxt.ui.client.widget.form.ComboBox;
38
import com.extjs.gxt.ui.client.widget.form.DateField;
39
import com.extjs.gxt.ui.client.widget.form.FieldSet;
40
import com.extjs.gxt.ui.client.widget.form.FormPanel;
775 jpm 41
import com.extjs.gxt.ui.client.widget.form.Radio;
219 aurelien 42
import com.extjs.gxt.ui.client.widget.form.TextField;
43
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
44
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
46
import com.extjs.gxt.ui.client.widget.layout.FormData;
47
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
705 aurelien 48
import com.google.gwt.core.client.GWT;
49
import com.google.gwt.user.client.Window;
227 aurelien 50
import com.google.gwt.user.client.ui.HTML;
705 aurelien 51
import com.google.gwt.user.client.ui.Label;
219 aurelien 52
 
775 jpm 53
public class PublicationForm extends Formulaire implements Rafraichissable {
219 aurelien 54
 
775 jpm 55
	private Publication publi;
56
	private PublicationAPersonneListe pubAPersonneListeAuteur = null;
219 aurelien 57
 
58
 
775 jpm 59
	private FieldSet auteursFieldset = null;
60
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
61
	private PersonneListe listePersonneAuteur = null;
62
	private LayoutContainer conteneurChamps;
63
	private ListStore<Personne> auteursStorePartage = null;
227 aurelien 64
 
775 jpm 65
	private FieldSet generalitesFieldset = null;
219 aurelien 66
	private TextField<String> nomArticle = null;
67
	private TextField<String> intituleCollPub = null;
68
	private TextField<String> uriPub = null;
69
 
775 jpm 70
	private FieldSet editionFieldset = null;
219 aurelien 71
	private ComboBox<Structure> comboListeEditeurs = null;
72
	private ListStore<Structure> storeEditeurs = null;
725 aurelien 73
	private TextField<String> datePub = null;
219 aurelien 74
	private TextField<String> tomPub = null;
75
	private TextField<String> fasciculePub = null;
76
	private TextField<String> pagesPub = null;
77
 
775 jpm 78
	private String idStructureEdition = "";
79
	private String idPublication = "";
80
	private String idProjet = "";
81
 
82
	private String idAuteurs = "";
83
 
705 aurelien 84
	private boolean formValide = false;
85
	private boolean validationPublication = false;
86
	private boolean validationAuteurs = false;
87
 
782 jpm 88
	protected boolean listePersonneAuteurInitialisee = false;
749 aurelien 89
	protected boolean listeAuteurPublicationInitialisee = false;
782 jpm 90
 
91
	private Rafraichissable vueExterneARafraichirApresValidation = null;
705 aurelien 92
 
781 jpm 93
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
782 jpm 94
		initialiserPublicationForm(mediateurCourrant, publicationId);
95
	}
96
 
97
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
98
		initialiserPublicationForm(mediateurCourrant, publicationId);
99
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
100
	}
101
 
102
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
781 jpm 103
		String modeDeCreation = Formulaire.MODE_AJOUTER;
104
		if (publicationId != null) {
105
			modeDeCreation = Formulaire.MODE_MODIFIER;
106
		}
775 jpm 107
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
781 jpm 108
		chargerOntologie();
109
 
775 jpm 110
		panneauFormulaire.setLayout(new FlowLayout());
111
		String titre = (modeDeCreation.equals(Formulaire.MODE_AJOUTER) ? "Ajout d'une publication" : "Modification d'une publication");
112
		panneauFormulaire.setHeading(titre);
705 aurelien 113
 
775 jpm 114
		creerZoneAuteurs();
115
		panneauFormulaire.add(auteursFieldset);
219 aurelien 116
 
775 jpm 117
		creerZoneGeneralites();
118
		panneauFormulaire.add(generalitesFieldset);
239 aurelien 119
 
775 jpm 120
		creerZoneEdition();
121
		panneauFormulaire.add(editionFieldset);
122
 
781 jpm 123
		mediateurCourrant.selectionnerPublication(this, publicationId);
124
		mediateurCourrant.selectionnerAuteurAPublication(this, publicationId);
125
	}
782 jpm 126
 
781 jpm 127
	private void chargerOntologie() {
775 jpm 128
		mediateur.clicObtenirListeEditeurs(this);
129
		mediateur.clicObtenirListeAuteurs(this);
130
	}
131
 
132
	private void creerZoneAuteurs() {
133
		FormLayout layout = new FormLayout();
134
		layout.setLabelWidth(200);
135
 
136
		// Fieldset Auteur
137
		auteursFieldset = new FieldSet();
138
		auteursFieldset.setHeading("Auteur(s)");
139
		auteursFieldset.setCollapsible(true);
140
		auteursFieldset.setLayout(layout);
141
 
142
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
143
		auteursStorePartage = new ListStore<Personne>();
144
 
145
		genererChampsAuteur(false);
146
	}
147
 
148
	private void genererChampsAuteur(boolean vider) {
149
		auteursFieldset.removeAll();
150
 
151
		conteneurChamps = new LayoutContainer();
152
 
153
		Button ajoutAuteurBtn = new Button("Ajouter un auteur");
154
		ajoutAuteurBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
219 aurelien 155
 
775 jpm 156
			@Override
157
			public void componentSelected(ButtonEvent be) {
158
				creerTextFieldEtBouton(null);
159
 
160
				int nbAuteurs = 0;
161
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
162
					if (auteurComboboxListe.size() > 1) {
163
						it.next().setFieldLabel("Auteur "+nbAuteurs);
164
						nbAuteurs++;
165
					}
166
				}
167
 
168
				auteursFieldset.layout(true);
169
			}
170
 
171
		});
219 aurelien 172
 
775 jpm 173
		auteursFieldset.add(conteneurChamps);
174
		auteursFieldset.add(ajoutAuteurBtn);
175
		auteursFieldset.layout(true);
219 aurelien 176
 
775 jpm 177
		if (!vider) {
178
			creerTextFieldEtBouton(null);
179
		}
180
	}
181
 
182
	public void creerTextFieldEtBouton(Personne auteur) {
183
		final HorizontalPanel panneauHorizontal = new HorizontalPanel();
184
		panneauHorizontal.setLayout(new FormLayout());
219 aurelien 185
 
775 jpm 186
		final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
187
		if (auteur != null) {
188
			GWT.log(auteur.getId(), null);
189
			auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
190
		}
191
		auteurComboboxListe.add(auteursSaisisComboBox);
758 aurelien 192
 
775 jpm 193
		LayoutContainer lc = new LayoutContainer();
194
		lc.setLayout(new FormLayout());
195
		lc.add(auteursSaisisComboBox);
219 aurelien 196
 
775 jpm 197
		Button supp = new Button("-");
198
		supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
199
			@Override
200
			public void componentSelected(ButtonEvent be) {
201
				int nbAuteurs = 0;
202
				if (auteurComboboxListe.size() != 1) {
203
					for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
204
						it.next().setFieldLabel("Auteur "+nbAuteurs);
205
						nbAuteurs++;
206
					}
207
				}
208
				auteurComboboxListe.remove(auteursSaisisComboBox);
209
				conteneurChamps.remove(panneauHorizontal);
210
				auteursFieldset.layout(true);
211
			}
212
 
213
		});
214
		panneauHorizontal.add(lc);
215
		panneauHorizontal.add(supp);
216
		conteneurChamps.add(panneauHorizontal);
217
		auteursFieldset.layout(true);
218
	}
219
 
220
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
221
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
222
		comboBox.setSize(200, 20);
223
		comboBox.setEmptyText(i18nC.chercherAuteurSaisi());
224
		comboBox.setEditable(true);
225
		comboBox.setForceSelection(true);
226
		comboBox.setDisplayField("fmt_nom_complet");
227
		comboBox.setTriggerAction(TriggerAction.ALL);
228
		comboBox.setStore(auteursStorePartage);
229
 
230
		return comboBox;
231
	}
232
 
233
	private void creerZoneGeneralites() {
234
		FormLayout layout = new FormLayout();
235
		layout.setLabelWidth(200);
219 aurelien 236
 
237
		// Fieldset Infos Générales
775 jpm 238
		generalitesFieldset = new FieldSet();
239
		generalitesFieldset.setHeading("Informations générales");
240
		generalitesFieldset.setCollapsible(true);
241
		generalitesFieldset.setLayout(layout);
219 aurelien 242
 
243
		nomArticle = new TextField<String>();
244
		nomArticle.setName("cpu");
245
		nomArticle.setFieldLabel("Titre de l'article ou de l'ouvrage");
246
 
247
		intituleCollPub = new TextField<String>();
248
		intituleCollPub.setFieldLabel("Intitulé de la collection ou de la revue");
249
 
250
		uriPub = new TextField<String>();
251
		uriPub.setFieldLabel("URI de la publication");
252
 
775 jpm 253
		generalitesFieldset.add(nomArticle);
254
		generalitesFieldset.add(intituleCollPub);
255
		generalitesFieldset.add(uriPub);
256
	}
257
 
258
	private void creerZoneEdition() {
259
		FormLayout layout = new FormLayout();
260
		layout.setLabelWidth(200);
261
 
219 aurelien 262
		// Fieldset Edition
775 jpm 263
		editionFieldset = new FieldSet();
264
		editionFieldset.setHeading("Edition");
265
		editionFieldset.setCollapsible(true);
266
		editionFieldset.setLayout(layout);
219 aurelien 267
 
268
		storeEditeurs = new ListStore<Structure>();
269
		comboListeEditeurs = new ComboBox<Structure>();
270
		comboListeEditeurs.setEmptyText("Sélectionner un editeur...");
271
		comboListeEditeurs.setFieldLabel("Editeur de la publication");
272
		comboListeEditeurs.setDisplayField("nom");
273
		comboListeEditeurs.setStore(storeEditeurs);
274
		comboListeEditeurs.setEditable(true);
275
		comboListeEditeurs.setTypeAhead(true);
227 aurelien 276
		comboListeEditeurs.setTriggerAction(TriggerAction.QUERY);
775 jpm 277
		editionFieldset.add(comboListeEditeurs, new FormData(500, 20));
219 aurelien 278
 
725 aurelien 279
		datePub = new TextField<String>();
734 aurelien 280
		datePub.setMaxLength(4);
281
		datePub.setMinLength(4);
282
		datePub.setFieldLabel("Année de publication");
775 jpm 283
		editionFieldset.add(datePub, new FormData(40, 20));
219 aurelien 284
 
285
		tomPub = new TextField<String>();
286
		tomPub.setFieldLabel("Tome");
775 jpm 287
		editionFieldset.add(tomPub, new FormData(75, 20));
219 aurelien 288
 
289
		fasciculePub = new TextField<String>();
290
		fasciculePub.setFieldLabel("Fascicule");
775 jpm 291
		editionFieldset.add(fasciculePub, new FormData(75, 20));
219 aurelien 292
 
293
		pagesPub = new TextField<String>();
294
		pagesPub.setFieldLabel("Pages");
775 jpm 295
		editionFieldset.add(pagesPub, new FormData(100, 20));
219 aurelien 296
	}
775 jpm 297
 
705 aurelien 298
	public void rafraichir(Object nouvellesDonnees) {
299
		if (nouvellesDonnees instanceof Publication) {
782 jpm 300
			// Si on a reçu les details d'une publication
301
			rafraichirPublication((Publication) nouvellesDonnees);
302
		} else if (nouvellesDonnees instanceof StructureListe) {
303
			// Si on a reçu une liste des editeurs
304
			rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
305
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
306
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
307
		} else if (nouvellesDonnees instanceof Information) {
308
			rafraichirInformation((Information) nouvellesDonnees);
309
		} else {
310
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
227 aurelien 311
		}
312
 
782 jpm 313
		if (etreValide()) {
314
			reinitialiserValidation();
315
			repandreRafraichissement();
316
			controlerFermetureApresRafraichissement();
219 aurelien 317
		}
782 jpm 318
	}
319
 
320
	private void rafraichirPublication(Publication publication) {
321
		publi = publication;
239 aurelien 322
 
782 jpm 323
		genererChampsAuteur(true);
324
		nomArticle.setValue(publi.getTitre());
325
		intituleCollPub.setValue(publi.getCollection());
326
		uriPub.setValue(publi.getURI());
327
		datePub.setRawValue(reduireDateParAnnee(publi.getDateParution()));
328
		tomPub.setValue(publi.getIndicationNvt());
329
		fasciculePub.setValue(publi.getFascicule());
330
		pagesPub.setValue(publi.getPages());
331
		idPublication = publi.getId();
332
		idStructureEdition = publi.getEditeur();
333
		idProjet = publi.getIdProjet() ;
334
	}
335
 
336
	private void rafraichirListeEditeurs(StructureListe editeurs) {
337
		storeEditeurs.removeAll();
338
		storeEditeurs.add((List<Structure>) editeurs.toList());
339
 
340
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
341
			comboListeEditeurs.setValue((Structure) editeurs.get(idStructureEdition));
342
		}
343
		comboListeEditeurs.expand();
344
	}
345
 
346
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
347
		pubAPersonneListeAuteur = auteurs;
348
 
349
		if (listePersonneAuteurInitialisee) {
350
			Iterator<String> itap = pubAPersonneListeAuteur.keySet().iterator();
351
			while (itap.hasNext()) {
352
				creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getPersonne());
353
			}
749 aurelien 354
 
782 jpm 355
			int nbAuteurs = 0;
356
			for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
357
				if (auteurComboboxListe.size() > 1) {
358
					it.next().setFieldLabel("Auteur "+nbAuteurs);
359
					nbAuteurs++;
749 aurelien 360
				}
361
			}
782 jpm 362
			listeAuteurPublicationInitialisee = true;
749 aurelien 363
		}
782 jpm 364
	}
365
 
366
	private void rafraichirInformation(Information info) {
367
		if (info.getType().equals("liste_personne")) {
368
			listePersonneAuteurInitialisee = true;
369
			listePersonneAuteur = (PersonneListe) info.getDonnee(0);
370
			List<Personne> liste = listePersonneAuteur.toList();
371
			auteursStorePartage.removeAll();
372
			auteursStorePartage.add(liste);
373
		} else if (info.getType().equals("publication_valide")) {
374
			validationPublication = true;
375
			idPublication = (String) info.getDonnee(0);
705 aurelien 376
 
782 jpm 377
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
378
				mediateur.ajouterAuteurPublication(this, idAuteurs, PublicationAPersonne.ROLE_AUTEUR, idPublication);
379
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
380
				mediateur.modifierAuteurPublication(this, idAuteurs, idPublication);
239 aurelien 381
			}
782 jpm 382
		} else if (info.getType().equals("auteur_valide")) {
383
			validationAuteurs = true;
384
		}
385
	}
386
 
387
	private Boolean etreValide() {
388
		Boolean valide = false;
389
		if (formValide && validationPublication && validationAuteurs) {
390
			valide = true;
391
		}
392
		return valide;
393
	}
394
 
395
	private void reinitialiserValidation() {
396
		formValide = false;
397
		validationPublication = false;
398
		validationAuteurs = false;
399
	}
400
 
401
	private void repandreRafraichissement() {
402
		if (vueExterneARafraichirApresValidation != null) {
403
			Information info = new Information("");
239 aurelien 404
 
782 jpm 405
			vueExterneARafraichirApresValidation.rafraichir(info);
406
		}
407
	}
408
 
409
	public void soumettreFormulaire() {
410
		formValide = verifierFormulaire();
411
		if (formValide) {
412
			Publication publication = new Publication();
413
 
414
			String auteur = "";
415
			for (int i = 0; i < auteurComboboxListe.size(); i++) {
416
				if (auteurComboboxListe.get(i).getValue() != null) {
417
					idAuteurs += auteurComboboxListe.get(i).getValue().getId();
418
					auteur += auteurComboboxListe.get(i).getValue().getNom()+ " "+auteurComboboxListe.get(i).getValue().getPrenom();
419
					if (i != auteurComboboxListe.size() -1) {
420
						auteur += "|";
421
						idAuteurs += ",";
422
					}
741 aurelien 423
				}
239 aurelien 424
			}
782 jpm 425
			publication.setAuteur(auteur);
426
 
427
			String titre = nomArticle.getValue();
428
			publication.setTitre(titre);
429
 
430
			String collection = intituleCollPub.getValue();
431
			publication.setCollection(collection);
432
 
433
			String nomComplet = nomArticle.getValue()+" "+intituleCollPub.getValue();
434
			publication.setNomComplet(nomComplet);
435
 
436
			String uri = uriPub.getValue();
437
			publication.setUri(uri);
438
 
439
			String editeur = "";
440
			if (comboListeEditeurs.getValue() != null) {
441
				editeur = comboListeEditeurs.getValue().getId();
442
			} else if (comboListeEditeurs.getRawValue() != "") {
443
				editeur = comboListeEditeurs.getRawValue();
734 aurelien 444
			}
782 jpm 445
			publication.setEditeur(editeur);
775 jpm 446
 
782 jpm 447
			String datePar = datePub.getRawValue();
448
			datePar = datePar+"-00-00";
449
 
450
			String tome = tomPub.getValue();
451
			publication.setIndicationNvt(tome);
452
 
453
			String fascicule = fasciculePub.getValue();
454
			publication.setFascicule(fascicule);
455
 
456
			String pages = pagesPub.getValue();
457
			publication.setPages(pages);
458
 
459
 
460
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
461
				mediateur.ajouterPublication(this, publication);
462
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
463
				mediateur.modifierPublication(this, publication);
705 aurelien 464
			}
239 aurelien 465
		}
219 aurelien 466
	}
467
 
782 jpm 468
	private boolean verifierFormulaire() {
469
		boolean valide = true;
470
		ArrayList<String> messages = new ArrayList<String>();
471
 
472
		boolean auteurErreur = false;
775 jpm 473
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
474
			if (auteurComboboxListe.get(i).getValue() != null) {
782 jpm 475
				auteurErreur = true;
476
				break;
227 aurelien 477
			}
478
		}
782 jpm 479
		if (auteurErreur) {
480
			messages.add("Veuillez saisir au moins un auteur !");
705 aurelien 481
		}
482
 
782 jpm 483
		String titre = nomArticle.getValue();
484
		if (titre == null || titre.equals("")) {
485
			messages.add("Veuillez saisir le titre de la publication !");
705 aurelien 486
		}
487
 
219 aurelien 488
		String datePar = datePub.getRawValue();
775 jpm 489
		if (datePar == null || datePar.equals("")) {
782 jpm 490
			messages.add("Veuillez saisir une date !");
725 aurelien 491
		} else {
782 jpm 492
			if (!etreDateValide(datePar)) {
493
				messages.add("Format de l'année saisie est incorrect");
725 aurelien 494
			}
705 aurelien 495
		}
717 aurelien 496
 
782 jpm 497
		if (messages.size() != 0) {
498
			String[] tableauDeMessages = {};
499
			tableauDeMessages = messages.toArray(tableauDeMessages);
500
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "\n\n"), null);
501
			valide = false;
705 aurelien 502
		}
782 jpm 503
		return valide;
775 jpm 504
	}
505
 
506
	protected void reinitialiserFormulaire() {
781 jpm 507
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
775 jpm 508
			mediateur.afficherFormPublication(publi.getId());
509
		} else {
510
			mediateur.afficherFormPublication(null);
219 aurelien 511
		}
512
	}
227 aurelien 513
 
782 jpm 514
	private boolean etreDateValide(String datePar) {
515
		boolean valide = true;
516
		if (!datePar.matches("^[0-2][0-9]{3}$")) {
517
			valide = false;
725 aurelien 518
		}
782 jpm 519
		return valide;
725 aurelien 520
	}
758 aurelien 521
 
522
	private String reduireDateParAnnee(String datePar) {
775 jpm 523
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
758 aurelien 524
			return datePar.split("-")[0];
505 jp_milcent 525
		} else {
758 aurelien 526
			return "";
227 aurelien 527
		}
758 aurelien 528
	}
227 aurelien 529
 
775 jpm 530
	@Override
531
	protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
532
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
227 aurelien 533
			@Override
775 jpm 534
			public void componentSelected(ButtonEvent ce) {
535
				String code = ((Button) ce.getComponent()).getData("code");
536
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
782 jpm 537
					soumettreFormulaire();
775 jpm 538
					clicBoutonvalidation = true;
539
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
782 jpm 540
					soumettreFormulaire();
775 jpm 541
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
542
					mediateur.clicMenu(menuIdCourant);
543
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
544
					reinitialiserFormulaire();
227 aurelien 545
				}
546
			}
775 jpm 547
		};
227 aurelien 548
 
775 jpm 549
		return ecouteur;
227 aurelien 550
	}
781 jpm 551
 
505 jp_milcent 552
}