Subversion Repositories eFlore/Applications.coel

Rev

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