Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
877 aurelien 1
package org.tela_botanica.client.vues;
2
 
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
 
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.Information;
9
import org.tela_botanica.client.modeles.MenuApplicationId;
10
import org.tela_botanica.client.modeles.Projet;
878 aurelien 11
import org.tela_botanica.client.modeles.Valeur;
12
import org.tela_botanica.client.modeles.ValeurListe;
928 jpm 13
import org.tela_botanica.client.util.Debug;
877 aurelien 14
import org.tela_botanica.client.util.Pattern;
15
import org.tela_botanica.client.util.UtilArray;
928 jpm 16
import org.tela_botanica.client.util.UtilString;
877 aurelien 17
 
878 aurelien 18
import com.extjs.gxt.ui.client.Style.SortDir;
877 aurelien 19
import com.extjs.gxt.ui.client.event.ButtonEvent;
20
import com.extjs.gxt.ui.client.event.SelectionListener;
21
import com.extjs.gxt.ui.client.store.ListStore;
928 jpm 22
import com.extjs.gxt.ui.client.widget.Info;
877 aurelien 23
import com.extjs.gxt.ui.client.widget.MessageBox;
24
import com.extjs.gxt.ui.client.widget.button.Button;
25
import com.extjs.gxt.ui.client.widget.form.CheckBox;
26
import com.extjs.gxt.ui.client.widget.form.ComboBox;
27
import com.extjs.gxt.ui.client.widget.form.FieldSet;
28
import com.extjs.gxt.ui.client.widget.form.TextArea;
29
import com.extjs.gxt.ui.client.widget.form.TextField;
30
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
31
import com.extjs.gxt.ui.client.widget.layout.FormData;
32
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
33
 
34
public class ProjetForm extends Formulaire implements Rafraichissable {
35
 
36
	private Projet projet;
878 aurelien 37
 
38
	private String listeValeurIndexationDureeId = "dureesIndexation";
39
	private int listeValeurIndexationDureeInt = 1072;
40
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
41
	private int listeValeurIndexationFrequenceInt = 1073;
887 aurelien 42
	private String listeLanguesId = "langues";
43
	private int listeLanguesInt = 1071;
878 aurelien 44
 
45
	private ListStore<Valeur> listeIndexationDuree = null;
46
	private ListStore<Valeur> listeIndexationFrequence = null;
887 aurelien 47
	private ListStore<Valeur> listeLangue = null;
878 aurelien 48
 
887 aurelien 49
	private ValeurListe valeurListeIndexationDuree = null;
50
	private ValeurListe valeurListeIndexationFrequence = null;
51
	private ValeurListe valeurListeLangue = null;
52
 
908 aurelien 53
	private boolean listeIndexationDureeChargee = false;
54
	private boolean listeIndexationFrequenceChargee = false;
55
	private boolean listeLangueChargee = false;
56
 
57
 
877 aurelien 58
	private FieldSet generalitesFieldset = null;
59
	private TextField<String> nomChp = null;
60
	private TextField<String> abreviationChp = null;
886 aurelien 61
	private TextArea descriptionChp = null;
877 aurelien 62
	private TextArea resumeChp = null;
63
	private TextField<String> urlChp = null;
64
 
65
	private FieldSet complementFieldset = null;
66
	private TextField<String> motsClesChp = null;
67
	private TextField<String> citationChp = null;
68
	private TextField<String> licenceChp = null;
887 aurelien 69
	private ComboBox<Valeur> langueChp = null;
877 aurelien 70
	private CheckBox markPublicChp = null;
71
 
72
	private FieldSet indexationFieldset = null;
73
	private TextField<String> indexationHeureChp = null;
878 aurelien 74
	private ComboBox<Valeur> indexationDureeChp = null;
75
	private ComboBox<Valeur> indexationFrequenceChp = null;
877 aurelien 76
 
77
	private boolean formulaireValideOk = false;
78
	private boolean projetValideOk = false;
79
 
80
	private Rafraichissable vueExterneARafraichirApresValidation = null;
81
 
82
 
83
	public ProjetForm(Mediateur mediateurCourrant, String projetId) {
84
		initialiserProjetForm(mediateurCourrant, projetId);
85
	}
86
 
87
	public ProjetForm(Mediateur mediateurCourrant, String projetId, Rafraichissable vueARafraichirApresValidation) {
88
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
89
		initialiserProjetForm(mediateurCourrant, projetId);
90
	}
91
 
878 aurelien 92
	private void initialiserProjetForm(Mediateur mediateurCourant, String projetId) {
877 aurelien 93
		projet = new Projet();
94
		projet.setId(projetId);
95
 
96
		String modeDeCreation = (projet.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
878 aurelien 97
		initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
877 aurelien 98
 
99
		panneauFormulaire.setLayout(new FlowLayout());
928 jpm 100
		actualiserTitreFormulaire();
877 aurelien 101
 
102
		creerZoneGeneralites();
103
		panneauFormulaire.add(generalitesFieldset);
104
 
105
		creerZoneComplement();
106
		panneauFormulaire.add(complementFieldset);
107
 
108
		creerZoneIndexation();
109
		panneauFormulaire.add(indexationFieldset);
110
 
886 aurelien 111
		creerTabIndex();
112
 
877 aurelien 113
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
928 jpm 114
			mediateur.selectionnerProjet(this, projetId);
877 aurelien 115
		}
908 aurelien 116
 
928 jpm 117
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
118
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
119
		mediateur.obtenirListeValeurEtRafraichir(this, listeLanguesId);
877 aurelien 120
	}
121
 
928 jpm 122
	private void actualiserTitreFormulaire() {
123
		String titre = i18nC.projetTitreFormAjout();
877 aurelien 124
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
928 jpm 125
			 titre = i18nC.projetTitreFormModif()+" - "+i18nC.id()+": "+projet.getId();
877 aurelien 126
		}
928 jpm 127
		panneauFormulaire.setHeading(titre);
877 aurelien 128
	}
129
 
130
	private void creerZoneGeneralites() {
131
		FormLayout layout = new FormLayout();
132
		layout.setLabelWidth(100);
133
 
134
		// Fieldset Infos Générales
135
		generalitesFieldset = new FieldSet();
928 jpm 136
		generalitesFieldset.setHeading(i18nC.projetTitreInfoGenerale());
877 aurelien 137
		generalitesFieldset.setCollapsible(true);
138
		generalitesFieldset.setLayout(layout);
139
 
140
		nomChp = new TextField<String>();
141
		nomChp.setName("cpu");
142
		nomChp.setFieldLabel("Nom");
143
		generalitesFieldset.add(nomChp, new FormData(450, 0));
144
 
145
		abreviationChp = new TextField<String>();
146
		abreviationChp.setFieldLabel("Abréviation");
147
		generalitesFieldset.add(abreviationChp, new FormData(450, 0));
148
 
886 aurelien 149
		descriptionChp = new TextArea();
877 aurelien 150
		descriptionChp.setFieldLabel("Description");
151
		generalitesFieldset.add(descriptionChp, new FormData(450, 0));
152
 
153
		resumeChp = new TextArea();
154
		resumeChp.setFieldLabel("Résumé");
155
		generalitesFieldset.add(resumeChp, new FormData(450, 0));
156
 
157
		urlChp = new TextField<String>();
158
		urlChp.setFieldLabel("URL du projet");
159
		generalitesFieldset.add(urlChp, new FormData(450, 0));
160
	}
161
 
162
	private void creerZoneComplement() {
163
		FormLayout layout = new FormLayout();
164
		layout.setLabelWidth(100);
165
 
928 jpm 166
		// Fieldset Complément
877 aurelien 167
		complementFieldset = new FieldSet();
928 jpm 168
		complementFieldset.setHeading(i18nC.projetTitreComplement());
877 aurelien 169
		complementFieldset.setCollapsible(true);
170
		complementFieldset.setLayout(layout);
171
 
172
		motsClesChp = new TextField<String>();
173
		motsClesChp.setFieldLabel("Mots Clés");
174
		complementFieldset.add(motsClesChp);
175
 
176
		citationChp = new TextField<String>();
177
		citationChp.setFieldLabel("Citation");
178
		complementFieldset.add(citationChp);
179
 
180
		licenceChp = new TextField<String>();
181
		licenceChp.setFieldLabel("Licence");
182
		complementFieldset.add(licenceChp);
183
 
887 aurelien 184
		listeLangue = new ListStore<Valeur>();
185
		langueChp = new ComboBox<Valeur>();
186
		langueChp.setStore(listeLangue);
187
		langueChp.setDisplayField("nom");
188
		langueChp.setEditable(true);
189
		langueChp.setForceSelection(true);
190
		langueChp.setTypeAhead(true);
191
		langueChp.setFieldLabel("Langue");
192
		complementFieldset.add(langueChp);
193
 
877 aurelien 194
		markPublicChp = new CheckBox();
195
		markPublicChp.setFieldLabel("Public");
196
		complementFieldset.add(markPublicChp);
197
	}
198
 
199
	private void creerZoneIndexation() {
200
		FormLayout layout = new FormLayout();
201
		layout.setLabelWidth(100);
202
 
928 jpm 203
		// Fieldset Indexation
877 aurelien 204
		indexationFieldset = new FieldSet();
928 jpm 205
		indexationFieldset.setHeading(i18nC.projetTitreIndexation());
877 aurelien 206
		indexationFieldset.setCollapsible(true);
207
		indexationFieldset.setLayout(layout);
208
 
209
		indexationHeureChp = new TextField<String>();
878 aurelien 210
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
877 aurelien 211
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
212
 
878 aurelien 213
		// liste 1073
214
		listeIndexationFrequence = new ListStore<Valeur>();
215
		indexationFrequenceChp = new ComboBox<Valeur>();
216
		indexationFrequenceChp.setStore(listeIndexationFrequence);
217
		indexationFrequenceChp.setDisplayField("nom");
887 aurelien 218
		indexationFrequenceChp.setEditable(true);
219
		indexationFrequenceChp.setForceSelection(true);
220
		indexationFrequenceChp.setTypeAhead(true);
878 aurelien 221
		indexationFrequenceChp.setFieldLabel(i18nC.projetIndexationFrequence());
222
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
223
 
877 aurelien 224
		// liste 1072
878 aurelien 225
		listeIndexationDuree = new ListStore<Valeur>();
226
		indexationDureeChp = new ComboBox<Valeur>();
227
		indexationDureeChp.setStore(listeIndexationDuree);
228
		indexationDureeChp.setDisplayField("nom");
887 aurelien 229
		indexationDureeChp.setEditable(true);
230
		indexationDureeChp.setForceSelection(true);
231
		indexationDureeChp.setTypeAhead(true);
878 aurelien 232
		indexationDureeChp.setFieldLabel(i18nC.projetIndexationDuree());
877 aurelien 233
		indexationFieldset.add(indexationDureeChp, new FormData(80, 0));
234
 
235
	}
886 aurelien 236
 
237
	private void creerTabIndex() {
887 aurelien 238
		nomChp.setTabIndex(1);
239
		abreviationChp.setTabIndex(2);
240
		descriptionChp.setTabIndex(3);
241
		resumeChp.setTabIndex(4);
242
		urlChp.setTabIndex(5);
886 aurelien 243
 
244
		motsClesChp.setTabIndex(6);
245
		citationChp.setTabIndex(7);
246
		licenceChp.setTabIndex(8);
887 aurelien 247
		langueChp.setTabIndex(9);
248
		markPublicChp.setTabIndex(10);
886 aurelien 249
 
887 aurelien 250
		indexationHeureChp.setTabIndex(11);
251
		indexationFrequenceChp.setTabIndex(12);
252
		indexationDureeChp.setTabIndex(13);
886 aurelien 253
 
254
		nomChp.focus();
255
	}
877 aurelien 256
 
257
	public void rafraichir(Object nouvellesDonnees) {
928 jpm 258
		if (nouvellesDonnees instanceof Information) {
259
			Information info = (Information) nouvellesDonnees;
260
			rafraichirInformation(info);
924 jpm 261
		} else if (nouvellesDonnees instanceof ValeurListe) {
928 jpm 262
			ValeurListe valeursListe = (ValeurListe) nouvellesDonnees;
263
			rafraichirValeurListe(valeursListe);
264
			Debug.log("une liste de valeurs est arrivée "+valeursListe.getId());
878 aurelien 265
		}
266
 
877 aurelien 267
		if (etreValide()) {
268
			initialiserValidation();
269
			repandreRafraichissement();
270
			controlerFermetureApresRafraichissement();
271
		}
272
	}
273
 
928 jpm 274
	private void rafraichirInformation(Information info) {
275
		final String type = info.getType();
276
 
277
		// Gestion des problèmes
278
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
279
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
280
		}
281
 
282
		// Gestion des actions
283
		if (type.equals("selection_projet")) {
284
			if (info.getDonnee(0) != null) {
285
				projet = (Projet) info.getDonnee(0);
286
			}
287
			peuplerFormulaire();
288
			actualiserTitreFormulaire();
289
		} else if (type.equals("modif_projet") || type.equals("ajout_projet") ) {
290
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
291
				String projetId = (String) info.getDonnee(0);
292
				projet.setId(projetId);
293
				projetValideOk = true;
294
			}
295
		}
296
 
297
		// Gestion des messages
298
		if (type.equals("selection_projet")) {
299
			Info.display(i18nC.projetTitreFormModif(), info.toString());
300
		} else if (type.equals("modif_projet")) {
301
			Info.display(i18nC.projetTitreFormModif(), info.toString());
302
		} else if (type.equals("ajout_projet")) {
303
			if (!UtilString.isEmpty(projet.getId())) {
304
				info.setMessage("Le projet '"+projet.getId()+"' a bien été ajouté");
305
			}
306
			Info.display(i18nC.projetTitreFormAjout(), info.toString());
307
		}
877 aurelien 308
	}
309
 
928 jpm 310
	private void rafraichirValeurListe(ValeurListe valeursListe) {
311
		if (valeursListe.getId() == listeValeurIndexationDureeInt) {
312
			valeurListeIndexationDuree = valeursListe;
313
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
314
				listeIndexationDuree.add(valeursListe.get(it.next()));
315
				listeIndexationDuree.sort("id_valeur", SortDir.ASC);
316
			}
317
			listeIndexationDureeChargee = true;
318
 
319
			if (mode.equals(MODE_MODIFIER)) {
320
				if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
321
					indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
322
					indexationDureeChp.validate();
323
				}
324
			}
325
			indexationDureeChp.expand();
326
		} else if (valeursListe.getId() == listeValeurIndexationFrequenceInt) {
327
			valeurListeIndexationFrequence = valeursListe;
328
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
329
				listeIndexationFrequence.add(valeursListe.get(it.next()));
330
				listeIndexationFrequence.sort("id_valeur", SortDir.ASC);
331
			}
332
			listeIndexationFrequenceChargee = true;
333
 
334
			if (mode.equals(MODE_MODIFIER)) {
335
				if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
336
					indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
337
					indexationFrequenceChp.validate();
338
				}
339
			}
340
			indexationFrequenceChp.expand();
341
		} else if (valeursListe.getId() == listeLanguesInt) {
342
			valeurListeLangue = valeursListe;
343
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
344
				listeLangue.add(valeursListe.get(it.next()));
345
				listeLangue.sort("id_valeur", SortDir.ASC);
346
			}
347
			listeLangueChargee = true;
348
 
349
			if (mode.equals(MODE_MODIFIER)) {
350
				if (valeurListeLangue.get(projet.getLangue()) != null) {
351
					langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
352
					langueChp.validate();
353
				}
354
			}
355
		}
356
	}
357
 
877 aurelien 358
	private Boolean etreValide() {
359
		Boolean valide = false;
360
		if (formulaireValideOk && projetValideOk) {
361
			valide = true;
362
		}
363
		return valide;
364
	}
365
 
366
	private void initialiserValidation() {
367
		formulaireValideOk = false;
368
		projetValideOk = false;
369
	}
370
 
371
	private void repandreRafraichissement() {
372
		if (vueExterneARafraichirApresValidation != null) {
878 aurelien 373
			String type = "projet_modifie";
877 aurelien 374
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
878 aurelien 375
				type = "projet_ajoute";
877 aurelien 376
			}
377
			Information info = new Information(type);
378
			info.setDonnee(0, projet);
379
			vueExterneARafraichirApresValidation.rafraichir(info);
380
		}
381
	}
382
 
383
	public boolean soumettreFormulaire() {
384
		formulaireValideOk = verifierFormulaire();
385
		if (formulaireValideOk) {
386
			Projet projetCollecte = collecterProjet();
387
			if (projetCollecte != null) {
388
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
389
					mediateur.ajouterProjet(this, projetCollecte);
390
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
391
					mediateur.modifierProjet(this, projetCollecte);
392
				}
393
			}
394
		}
395
		return formulaireValideOk;
396
	}
397
 
398
	protected boolean verifierFormulaire() {
399
		boolean valide = true;
400
		ArrayList<String> messages = new ArrayList<String>();
401
 
402
		String titre = nomChp.getValue();
403
		if (titre == null || titre.equals("")) {
404
			messages.add("Veuillez saisir le nom du projet !");
405
		}
406
 
886 aurelien 407
		String abr = abreviationChp.getValue();
408
		if (abr == null || abr.equals("")) {
409
			messages.add("Veuillez saisir l'abréviation du projet !");
410
		}
411
 
412
		String desc = descriptionChp.getValue();
413
		if (desc == null || desc.equals("")) {
414
			messages.add("Veuillez saisir la description du projet !");
415
		}
416
 
417
		String resume = resumeChp.getValue();
418
		if (resume == null || resume.equals("")) {
419
			messages.add("Veuillez saisir le résumé du projet !");
420
		}
421
 
877 aurelien 422
		String uri = urlChp.getValue();
886 aurelien 423
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
877 aurelien 424
			messages.add("L'URL saisie n'est pas valide !");
425
		}
426
 
886 aurelien 427
		String heure = indexationHeureChp.getValue();
928 jpm 428
		if (!UtilString.isEmpty(heure)) {
429
			if (!heure.matches(Pattern.heureMinute)) {
430
				messages.add("L'heureMinute d'indexation saisie n'est pas valide !");
887 aurelien 431
			}
886 aurelien 432
		}
433
 
877 aurelien 434
		if (messages.size() != 0) {
435
			String[] tableauDeMessages = {};
436
			tableauDeMessages = messages.toArray(tableauDeMessages);
437
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
438
			valide = false;
439
		}
440
		return valide;
441
	}
442
 
443
	private void peuplerFormulaire() {
878 aurelien 444
		nomChp.setValue(projet.getNom());
445
		abreviationChp.setValue(projet.getAbreviation());
446
		descriptionChp.setValue(projet.getDescription());
447
		resumeChp.setValue(projet.getResume());
448
		urlChp.setValue(projet.getUrl());
449
 
450
		motsClesChp.setValue(projet.getMotsCles());
451
		citationChp.setValue(projet.getCitation());
452
		licenceChp.setValue(projet.getLicence());
887 aurelien 453
 
924 jpm 454
		if (projet.getMarkPublic().equals("1")) {
887 aurelien 455
			markPublicChp.setValue(true);
456
		} else {
457
			markPublicChp.setValue(false);
458
		}
878 aurelien 459
 
924 jpm 460
		if (listeLangueChargee) {
908 aurelien 461
			if(valeurListeLangue.get(projet.getLangue()) != null) {
462
				langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
463
				langueChp.validate();
464
			}
465
		}
466
 
924 jpm 467
		if (listeIndexationFrequenceChargee) {
468
			if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
908 aurelien 469
				indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
470
				indexationFrequenceChp.validate();
471
			}
472
		}
473
 
924 jpm 474
		if (listeIndexationDureeChargee) {
475
			if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
908 aurelien 476
				indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
477
				indexationDureeChp.validate();
478
			}
479
		}
480
 
887 aurelien 481
		String[] heureTab = projet.getIndexationHeure().split(":");
924 jpm 482
		if (heureTab.length > 1) {
902 aurelien 483
			String heure = heureTab[0]+":"+heureTab[1];
924 jpm 484
			if (heure.matches(Pattern.heureMinute)) {
902 aurelien 485
				indexationHeureChp.setValue(heure);
486
			}
887 aurelien 487
		}
878 aurelien 488
 
489
		doLayout(true);
877 aurelien 490
	}
491
 
492
	private Projet collecterProjet() {
887 aurelien 493
		Projet projetCollecte = (Projet) projet.cloner(new Projet());
877 aurelien 494
 
928 jpm 495
		projetCollecte.setNom(nomChp.getValue());
496
		projetCollecte.setAbreviation(abreviationChp.getValue());
497
		projetCollecte.setDescription(descriptionChp.getValue());
498
		projetCollecte.setResume(resumeChp.getValue());
499
		projetCollecte.setUrl(urlChp.getValue());
877 aurelien 500
 
928 jpm 501
		projetCollecte.setMotsCles(motsClesChp.getValue());
502
		projetCollecte.setCitation(citationChp.getValue());
503
		projetCollecte.setLicence(licenceChp.getValue());
504
		if (langueChp.getValue() != null) {
505
			projetCollecte.setLangue(langueChp.getValue().getId());
506
		}
507
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
508
		projetCollecte.setMarkPublic(markPublic);
887 aurelien 509
 
928 jpm 510
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
511
		if (indexationFrequenceChp.getValue() != null) {
512
			projetCollecte.setIndexationFreq(indexationFrequenceChp.getValue().getId());
877 aurelien 513
		}
928 jpm 514
		if (indexationDureeChp.getValue() != null) {
515
			projetCollecte.setIndexationDuree(indexationDureeChp.getValue().getId());
516
		}
517
 
518
		Projet projetARetourner = null;
887 aurelien 519
		if (!projetCollecte.comparer(projet)) {
520
			projetARetourner = projet = projetCollecte;
928 jpm 521
			Debug.log(projetARetourner.toString());
887 aurelien 522
		}
877 aurelien 523
		return projetARetourner;
524
	}
525
 
526
	protected void reinitialiserFormulaire() {
527
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
528
			mediateur.afficherFormProjet(projet.getId());
529
		} else {
530
			mediateur.afficherFormProjet(null);
531
		}
532
	}
533
 
534
	@Override
535
	protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
536
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
537
			@Override
538
			public void componentSelected(ButtonEvent ce) {
539
				String code = ((Button) ce.getComponent()).getData("code");
540
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
541
					soumettreFormulaire();
542
					clicBoutonvalidation = true;
543
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
544
					soumettreFormulaire();
545
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
546
					mediateur.clicMenu(menuIdCourant);
547
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
548
					reinitialiserFormulaire();
549
				}
550
			}
551
		};
552
 
553
		return ecouteur;
554
	}
908 aurelien 555
 
877 aurelien 556
}