Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
935 jpm 1
package org.tela_botanica.client.vues.projet;
877 aurelien 2
 
3
import java.util.ArrayList;
4
 
980 jpm 5
import org.tela_botanica.client.ComposantClass;
877 aurelien 6
import org.tela_botanica.client.Mediateur;
1115 jpm 7
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
1329 cyprien 8
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
1239 cyprien 9
import org.tela_botanica.client.composants.InfoLogger;
1329 cyprien 10
import org.tela_botanica.client.composants.pagination.ProxyValeur;
877 aurelien 11
import org.tela_botanica.client.interfaces.Rafraichissable;
12
import org.tela_botanica.client.modeles.Information;
13
import org.tela_botanica.client.modeles.MenuApplicationId;
1329 cyprien 14
import org.tela_botanica.client.modeles.Valeur;
935 jpm 15
import org.tela_botanica.client.modeles.projet.Projet;
1367 cyprien 16
import org.tela_botanica.client.synchronisation.Sequenceur;
928 jpm 17
import org.tela_botanica.client.util.Debug;
877 aurelien 18
import org.tela_botanica.client.util.Pattern;
19
import org.tela_botanica.client.util.UtilArray;
928 jpm 20
import org.tela_botanica.client.util.UtilString;
935 jpm 21
import org.tela_botanica.client.vues.Formulaire;
877 aurelien 22
 
1322 gduche 23
import com.extjs.gxt.ui.client.Style.Scroll;
1329 cyprien 24
import com.extjs.gxt.ui.client.data.ModelData;
25
import com.extjs.gxt.ui.client.data.ModelType;
1118 jpm 26
import com.extjs.gxt.ui.client.event.BaseEvent;
980 jpm 27
import com.extjs.gxt.ui.client.event.Events;
1118 jpm 28
import com.extjs.gxt.ui.client.event.Listener;
928 jpm 29
import com.extjs.gxt.ui.client.widget.Info;
877 aurelien 30
import com.extjs.gxt.ui.client.widget.MessageBox;
31
import com.extjs.gxt.ui.client.widget.form.CheckBox;
32
import com.extjs.gxt.ui.client.widget.form.FieldSet;
33
import com.extjs.gxt.ui.client.widget.form.TextArea;
34
import com.extjs.gxt.ui.client.widget.form.TextField;
35
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
36
import com.extjs.gxt.ui.client.widget.layout.FormData;
37
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
1613 aurelien 38
import com.google.gwt.user.client.Window;
877 aurelien 39
 
40
public class ProjetForm extends Formulaire implements Rafraichissable {
41
 
42
	private Projet projet;
878 aurelien 43
 
44
	private String listeValeurIndexationDureeId = "dureesIndexation";
45
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
887 aurelien 46
	private String listeLanguesId = "langues";
878 aurelien 47
 
877 aurelien 48
	private FieldSet generalitesFieldset = null;
49
	private TextField<String> nomChp = null;
50
	private TextField<String> abreviationChp = null;
886 aurelien 51
	private TextArea descriptionChp = null;
877 aurelien 52
	private TextArea resumeChp = null;
53
	private TextField<String> urlChp = null;
54
 
55
	private FieldSet complementFieldset = null;
56
	private TextField<String> motsClesChp = null;
57
	private TextField<String> citationChp = null;
58
	private TextField<String> licenceChp = null;
1329 cyprien 59
	private ChampComboBoxRechercheTempsReelPaginable langueChp = null;
877 aurelien 60
	private CheckBox markPublicChp = null;
61
 
62
	private FieldSet indexationFieldset = null;
63
	private TextField<String> indexationHeureChp = null;
1115 jpm 64
	private ChampComboBoxListeValeurs indexationDureeChp = null;
65
	private ChampComboBoxListeValeurs indexationFrequenceChp = null;
877 aurelien 66
 
67
	private boolean formulaireValideOk = false;
68
	private boolean projetValideOk = false;
1367 cyprien 69
 
70
	private Sequenceur sequenceur = new Sequenceur();
877 aurelien 71
 
1613 aurelien 72
	public Rafraichissable vueExterneARafraichirApresValidation = null;
877 aurelien 73
 
74
 
75
	public ProjetForm(Mediateur mediateurCourrant, String projetId) {
76
		initialiserProjetForm(mediateurCourrant, projetId);
77
	}
78
 
79
	public ProjetForm(Mediateur mediateurCourrant, String projetId, Rafraichissable vueARafraichirApresValidation) {
80
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
81
		initialiserProjetForm(mediateurCourrant, projetId);
82
	}
83
 
878 aurelien 84
	private void initialiserProjetForm(Mediateur mediateurCourant, String projetId) {
877 aurelien 85
		projet = new Projet();
86
		projet.setId(projetId);
87
 
88
		String modeDeCreation = (projet.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
878 aurelien 89
		initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
877 aurelien 90
 
91
		panneauFormulaire.setLayout(new FlowLayout());
1322 gduche 92
		panneauFormulaire.setScrollMode(Scroll.AUTO);
1094 jpm 93
		genererTitreFormulaire();
877 aurelien 94
 
95
		creerZoneGeneralites();
96
		panneauFormulaire.add(generalitesFieldset);
97
 
98
		creerZoneComplement();
99
		panneauFormulaire.add(complementFieldset);
100
 
101
		creerZoneIndexation();
102
		panneauFormulaire.add(indexationFieldset);
103
 
886 aurelien 104
		creerTabIndex();
105
 
877 aurelien 106
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
1468 jpm 107
			mediateur.selectionnerProjet(this, projetId, null, false, null);
1118 jpm 108
		}
877 aurelien 109
	}
110
 
1094 jpm 111
	private void genererTitreFormulaire() {
928 jpm 112
		String titre = i18nC.projetTitreFormAjout();
877 aurelien 113
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
1094 jpm 114
			 titre = i18nC.projetTitreFormModif();
115
			 if (projet != null) {
116
				 titre += " - "+i18nC.id()+": "+projet.getId();
117
			 }
877 aurelien 118
		}
928 jpm 119
		panneauFormulaire.setHeading(titre);
877 aurelien 120
	}
121
 
122
	private void creerZoneGeneralites() {
123
		FormLayout layout = new FormLayout();
124
		layout.setLabelWidth(100);
125
 
126
		// Fieldset Infos Générales
127
		generalitesFieldset = new FieldSet();
928 jpm 128
		generalitesFieldset.setHeading(i18nC.projetTitreInfoGenerale());
877 aurelien 129
		generalitesFieldset.setCollapsible(true);
130
		generalitesFieldset.setLayout(layout);
131
 
132
		nomChp = new TextField<String>();
133
		nomChp.setName("cpu");
1118 jpm 134
		nomChp.setFieldLabel(i18nC.projetNom());
980 jpm 135
		nomChp.addStyleName(ComposantClass.OBLIGATOIRE);
136
		nomChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
877 aurelien 137
		generalitesFieldset.add(nomChp, new FormData(450, 0));
138
 
139
		abreviationChp = new TextField<String>();
1118 jpm 140
		abreviationChp.setFieldLabel(i18nC.projetAbreviation());
981 jpm 141
		abreviationChp.addStyleName(ComposantClass.OBLIGATOIRE);
980 jpm 142
		abreviationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
877 aurelien 143
		generalitesFieldset.add(abreviationChp, new FormData(450, 0));
144
 
886 aurelien 145
		descriptionChp = new TextArea();
1118 jpm 146
		descriptionChp.setFieldLabel(i18nC.projetDescription());
981 jpm 147
		descriptionChp.addStyleName(ComposantClass.OBLIGATOIRE);
980 jpm 148
		descriptionChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
877 aurelien 149
		generalitesFieldset.add(descriptionChp, new FormData(450, 0));
150
 
151
		resumeChp = new TextArea();
1118 jpm 152
		resumeChp.setFieldLabel(i18nC.projetResume());
981 jpm 153
		resumeChp.addStyleName(ComposantClass.OBLIGATOIRE);
980 jpm 154
		resumeChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
877 aurelien 155
		generalitesFieldset.add(resumeChp, new FormData(450, 0));
156
 
157
		urlChp = new TextField<String>();
1118 jpm 158
		urlChp.setFieldLabel(i18nC.projetUrl());
877 aurelien 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>();
1115 jpm 173
		motsClesChp.setFieldLabel(i18nC.projetMotsCles());
174
		complementFieldset.add(motsClesChp, new FormData(450, 0));
877 aurelien 175
 
176
		citationChp = new TextField<String>();
1115 jpm 177
		citationChp.setFieldLabel(i18nC.projetCitation());
178
		complementFieldset.add(citationChp, new FormData(450, 0));
877 aurelien 179
 
180
		licenceChp = new TextField<String>();
1115 jpm 181
		licenceChp.setFieldLabel(i18nC.projetLicence());
182
		complementFieldset.add(licenceChp, new FormData(450, 0));
877 aurelien 183
 
1329 cyprien 184
		ModelType modelTypesLangues = new ModelType();
185
		modelTypesLangues.setRoot("valeurs");
186
		modelTypesLangues.setTotalName("nbElements");
187
		modelTypesLangues.addField("cmlv_nom");
188
		modelTypesLangues.addField("cmlv_id_valeur");
189
		modelTypesLangues.addField("cmlv_abreviation");
190
		modelTypesLangues.addField("cmlv_description");
887 aurelien 191
 
1329 cyprien 192
		String displayNameLangues = "cmlv_nom";
193
		String nomListeTypes = "langues";
1468 jpm 194
		ProxyValeur<ModelData> proxyLangues = new ProxyValeur<ModelData>(nomListeTypes, null);
1329 cyprien 195
 
196
		langueChp = new ChampComboBoxRechercheTempsReelPaginable(proxyLangues, modelTypesLangues, displayNameLangues);
197
		langueChp.setWidth(100,300);
198
		langueChp.getCombo().setTabIndex(tabIndex++);
199
		langueChp.getCombo().setFieldLabel(i18nC.projetLangue());
200
		langueChp.getCombo().setForceSelection(true);
201
 
202
		complementFieldset.add(langueChp, new FormData(300, 0));
203
 
877 aurelien 204
		markPublicChp = new CheckBox();
1118 jpm 205
		markPublicChp.setFieldLabel(i18nC.projetMarkPublic());
206
		markPublicChp.addListener(Events.Change, new Listener<BaseEvent>() {
207
			public void handleEvent(BaseEvent be) {
208
				if (markPublicChp.getValue()) {
209
					indexationFieldset.show();
210
				} else {
211
					indexationFieldset.hide();
212
				}
213
			}
214
		});
877 aurelien 215
		complementFieldset.add(markPublicChp);
216
	}
217
 
218
	private void creerZoneIndexation() {
219
		FormLayout layout = new FormLayout();
220
		layout.setLabelWidth(100);
221
 
928 jpm 222
		// Fieldset Indexation
877 aurelien 223
		indexationFieldset = new FieldSet();
928 jpm 224
		indexationFieldset.setHeading(i18nC.projetTitreIndexation());
877 aurelien 225
		indexationFieldset.setCollapsible(true);
226
		indexationFieldset.setLayout(layout);
1118 jpm 227
		indexationFieldset.hide();
228
		indexationFieldset.addListener(Events.Hide, new Listener<BaseEvent>() {
229
			public void handleEvent(BaseEvent be) {
230
				indexationHeureChp.clear();
231
				indexationFrequenceChp.clear();
232
				indexationDureeChp.clear();
233
			}
234
		});
877 aurelien 235
 
236
		indexationHeureChp = new TextField<String>();
878 aurelien 237
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
1115 jpm 238
		indexationHeureChp.setToolTip(i18nC.projetMessageHeureMinute());
877 aurelien 239
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
240
 
1115 jpm 241
		indexationFrequenceChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationFrequence(), listeValeurIndexationFrequenceId);
878 aurelien 242
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
243
 
1115 jpm 244
		indexationDureeChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationDuree(), listeValeurIndexationDureeId);
877 aurelien 245
		indexationFieldset.add(indexationDureeChp, new FormData(80, 0));
246
 
247
	}
886 aurelien 248
 
249
	private void creerTabIndex() {
887 aurelien 250
		nomChp.setTabIndex(1);
251
		abreviationChp.setTabIndex(2);
252
		descriptionChp.setTabIndex(3);
253
		resumeChp.setTabIndex(4);
254
		urlChp.setTabIndex(5);
886 aurelien 255
 
256
		motsClesChp.setTabIndex(6);
257
		citationChp.setTabIndex(7);
258
		licenceChp.setTabIndex(8);
887 aurelien 259
		langueChp.setTabIndex(9);
260
		markPublicChp.setTabIndex(10);
886 aurelien 261
 
887 aurelien 262
		indexationHeureChp.setTabIndex(11);
263
		indexationFrequenceChp.setTabIndex(12);
264
		indexationDureeChp.setTabIndex(13);
886 aurelien 265
 
266
		nomChp.focus();
267
	}
877 aurelien 268
 
269
	public void rafraichir(Object nouvellesDonnees) {
928 jpm 270
		if (nouvellesDonnees instanceof Information) {
271
			Information info = (Information) nouvellesDonnees;
272
			rafraichirInformation(info);
1115 jpm 273
		} else {
274
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
878 aurelien 275
		}
276
 
877 aurelien 277
		if (etreValide()) {
278
			initialiserValidation();
279
			repandreRafraichissement();
1239 cyprien 280
			controlerFermeture();
877 aurelien 281
		}
282
	}
283
 
928 jpm 284
	private void rafraichirInformation(Information info) {
285
		final String type = info.getType();
286
 
287
		// Gestion des problèmes
288
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
289
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
290
		}
291
 
292
		// Gestion des actions
293
		if (type.equals("selection_projet")) {
294
			if (info.getDonnee(0) != null) {
295
				projet = (Projet) info.getDonnee(0);
296
			}
297
			peuplerFormulaire();
1094 jpm 298
			genererTitreFormulaire();
1102 jpm 299
		}
300
		if (type.equals("ajout_projet") || type.equals("modif_projet")) {
928 jpm 301
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
1094 jpm 302
				projetValideOk = true;
1613 aurelien 303
				if(!type.equals("modif_projet")) {
304
					String projetId = (String) info.getDonnee(0);
305
					if (vueExterneARafraichirApresValidation != null) {
306
						projet.setId(projetId);
307
					}
1094 jpm 308
				}
1613 aurelien 309
				controlerFermeture();
928 jpm 310
			}
311
		}
312
 
313
		// Gestion des messages
314
		if (type.equals("selection_projet")) {
1239 cyprien 315
			InfoLogger.display(i18nC.projetTitreFormModif(), info.toString());
928 jpm 316
		} else if (type.equals("modif_projet")) {
1613 aurelien 317
			//InfoLogger.display(i18nC.projetTitreFormModif(), info.toString());
928 jpm 318
		} else if (type.equals("ajout_projet")) {
1094 jpm 319
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
320
				String projetId = (String) info.getDonnee(0);
1239 cyprien 321
				InfoLogger.display(i18nC.projetTitreFormAjout(), "Le projet '"+projetId+"' a bien été ajouté");
1094 jpm 322
			} else {
1239 cyprien 323
				InfoLogger.display(i18nC.projetTitreFormAjout(), info.toString(), true);
928 jpm 324
			}
325
		}
877 aurelien 326
	}
928 jpm 327
 
877 aurelien 328
	private Boolean etreValide() {
329
		Boolean valide = false;
330
		if (formulaireValideOk && projetValideOk) {
331
			valide = true;
332
		}
333
		return valide;
334
	}
335
 
336
	private void initialiserValidation() {
337
		formulaireValideOk = false;
338
		projetValideOk = false;
339
	}
340
 
341
	private void repandreRafraichissement() {
342
		if (vueExterneARafraichirApresValidation != null) {
878 aurelien 343
			String type = "projet_modifie";
877 aurelien 344
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
878 aurelien 345
				type = "projet_ajoute";
877 aurelien 346
			}
347
			Information info = new Information(type);
348
			info.setDonnee(0, projet);
349
			vueExterneARafraichirApresValidation.rafraichir(info);
350
		}
351
	}
352
 
353
	public boolean soumettreFormulaire() {
354
		formulaireValideOk = verifierFormulaire();
355
		if (formulaireValideOk) {
356
			Projet projetCollecte = collecterProjet();
357
			if (projetCollecte != null) {
358
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
359
					mediateur.ajouterProjet(this, projetCollecte);
360
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
361
					mediateur.modifierProjet(this, projetCollecte);
362
				}
363
			}
364
		}
365
		return formulaireValideOk;
366
	}
367
 
934 jpm 368
	public boolean verifierFormulaire() {
877 aurelien 369
		boolean valide = true;
370
		ArrayList<String> messages = new ArrayList<String>();
371
 
372
		String titre = nomChp.getValue();
373
		if (titre == null || titre.equals("")) {
1115 jpm 374
			messages.add(i18nC.projetMessageNom());
877 aurelien 375
		}
376
 
886 aurelien 377
		String abr = abreviationChp.getValue();
1115 jpm 378
		if (abr == null || abr.equals(i18nC.projetMessageAbreviation())) {
379
			messages.add(i18nC.projetMessageAbreviation());
886 aurelien 380
		}
381
 
382
		String desc = descriptionChp.getValue();
1115 jpm 383
		if (desc == null || desc.equals(i18nC.projetMessageDescription())) {
384
			messages.add(i18nC.projetDescription());
886 aurelien 385
		}
386
 
387
		String resume = resumeChp.getValue();
1115 jpm 388
		if (resume == null || resume.equals(i18nC.projetMessageResume())) {
389
			messages.add(i18nC.projetMessageResume());
886 aurelien 390
		}
391
 
877 aurelien 392
		String uri = urlChp.getValue();
886 aurelien 393
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
1115 jpm 394
			messages.add(i18nC.messageUrlNonValide());
877 aurelien 395
		}
396
 
1118 jpm 397
		if (markPublicChp.getValue()) {
398
			String heure = indexationHeureChp.getValue();
399
			if (!UtilString.isEmpty(heure) && !heure.matches(Pattern.heureMinute)) {
1115 jpm 400
				messages.add(i18nC.projetMessageHeureMinute());
887 aurelien 401
			}
886 aurelien 402
		}
403
 
877 aurelien 404
		if (messages.size() != 0) {
405
			String[] tableauDeMessages = {};
406
			tableauDeMessages = messages.toArray(tableauDeMessages);
1115 jpm 407
			MessageBox.alert(i18nC.erreurSaisieTitre(), UtilArray.implode(tableauDeMessages, "<br />"), null);
877 aurelien 408
			valide = false;
409
		}
410
		return valide;
411
	}
412
 
413
	private void peuplerFormulaire() {
878 aurelien 414
		nomChp.setValue(projet.getNom());
415
		abreviationChp.setValue(projet.getAbreviation());
416
		descriptionChp.setValue(projet.getDescription());
417
		resumeChp.setValue(projet.getResume());
418
		urlChp.setValue(projet.getUrl());
419
 
420
		motsClesChp.setValue(projet.getMotsCles());
421
		citationChp.setValue(projet.getCitation());
422
		licenceChp.setValue(projet.getLicence());
1468 jpm 423
		if (projet.getLangueId().matches("[0-9]+")) {
424
			langueChp.getCombo().setValue(langueChp.getStore().findModel("cmlv_id_valeur", projet.getLangueId()));
1329 cyprien 425
		} else {
1468 jpm 426
			langueChp.getCombo().setRawValue(projet.getLangueId());
1329 cyprien 427
		}
924 jpm 428
		if (projet.getMarkPublic().equals("1")) {
887 aurelien 429
			markPublicChp.setValue(true);
1118 jpm 430
			String[] heureTab = projet.getIndexationHeure().split(":");
431
			if (heureTab.length > 1) {
432
				String heure = heureTab[0]+":"+heureTab[1];
433
				if (heure.matches(Pattern.heureMinute)) {
434
					indexationHeureChp.setValue(heure);
435
				}
436
			}
437
			indexationFrequenceChp.peupler(projet.getIndexationFreq());
438
			indexationDureeChp.peupler(projet.getIndexationDuree());
887 aurelien 439
		} else {
440
			markPublicChp.setValue(false);
441
		}
878 aurelien 442
 
443
		doLayout(true);
877 aurelien 444
	}
445
 
446
	private Projet collecterProjet() {
887 aurelien 447
		Projet projetCollecte = (Projet) projet.cloner(new Projet());
877 aurelien 448
 
928 jpm 449
		projetCollecte.setNom(nomChp.getValue());
450
		projetCollecte.setAbreviation(abreviationChp.getValue());
451
		projetCollecte.setDescription(descriptionChp.getValue());
452
		projetCollecte.setResume(resumeChp.getValue());
453
		projetCollecte.setUrl(urlChp.getValue());
877 aurelien 454
 
928 jpm 455
		projetCollecte.setMotsCles(motsClesChp.getValue());
456
		projetCollecte.setCitation(citationChp.getValue());
457
		projetCollecte.setLicence(licenceChp.getValue());
1329 cyprien 458
		if (langueChp.getValeur() != null) {
459
			Valeur valeur = new Valeur(langueChp.getValeur());
460
			projetCollecte.setLangue(valeur.getId());
461
		} else {
462
			projetCollecte.setLangue("");
463
		}
928 jpm 464
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
465
		projetCollecte.setMarkPublic(markPublic);
887 aurelien 466
 
928 jpm 467
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
1115 jpm 468
		projetCollecte.setIndexationFreq(indexationFrequenceChp.getValeur());
469
		projetCollecte.setIndexationDuree(indexationDureeChp.getValeur());
928 jpm 470
 
471
		Projet projetARetourner = null;
887 aurelien 472
		if (!projetCollecte.comparer(projet)) {
473
			projetARetourner = projet = projetCollecte;
474
		}
877 aurelien 475
		return projetARetourner;
476
	}
477
 
934 jpm 478
	public void reinitialiserFormulaire() {
877 aurelien 479
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
480
			mediateur.afficherFormProjet(projet.getId());
481
		} else {
482
			mediateur.afficherFormProjet(null);
483
		}
484
	}
908 aurelien 485
 
877 aurelien 486
}