Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
127 gduche 1
package org.tela_botanica.client.vues;
2
 
283 gduche 3
import java.util.ArrayList;
352 gduche 4
import java.util.Collection;
376 gduche 5
import java.util.Date;
276 gduche 6
import java.util.HashMap;
283 gduche 7
import java.util.Iterator;
352 gduche 8
import java.util.LinkedList;
283 gduche 9
import java.util.List;
276 gduche 10
 
11
import org.tela_botanica.client.ComposantClass;
12
import org.tela_botanica.client.Mediateur;
13
import org.tela_botanica.client.RegistreId;
519 gduche 14
import org.tela_botanica.client.images.Images;
127 gduche 15
import org.tela_botanica.client.interfaces.Rafraichissable;
283 gduche 16
import org.tela_botanica.client.modeles.Configuration;
293 gduche 17
 
352 gduche 18
import org.tela_botanica.client.modeles.Information;
286 gduche 19
import org.tela_botanica.client.modeles.Personne;
352 gduche 20
import org.tela_botanica.client.modeles.PersonneListe;
456 gduche 21
import org.tela_botanica.client.modeles.Projet;
22
import org.tela_botanica.client.modeles.ProjetListe;
280 gduche 23
import org.tela_botanica.client.modeles.Valeur;
283 gduche 24
import org.tela_botanica.client.modeles.ValeurListe;
127 gduche 25
 
488 gduche 26
import com.extjs.gxt.ui.client.event.Events;
276 gduche 27
import com.extjs.gxt.ui.client.Registry;
28
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
519 gduche 29
import com.extjs.gxt.ui.client.Style.IconAlign;
283 gduche 30
import com.extjs.gxt.ui.client.Style.Scroll;
386 gduche 31
 
376 gduche 32
import com.extjs.gxt.ui.client.binding.FormBinding;
386 gduche 33
 
488 gduche 34
import com.extjs.gxt.ui.client.event.ButtonEvent;
276 gduche 35
import com.extjs.gxt.ui.client.event.ComponentEvent;
488 gduche 36
import com.extjs.gxt.ui.client.event.IconButtonEvent;
276 gduche 37
import com.extjs.gxt.ui.client.event.KeyListener;
446 gduche 38
import com.extjs.gxt.ui.client.event.Listener;
280 gduche 39
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
40
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
276 gduche 41
import com.extjs.gxt.ui.client.event.SelectionListener;
280 gduche 42
import com.extjs.gxt.ui.client.store.ListStore;
127 gduche 43
import com.extjs.gxt.ui.client.widget.LayoutContainer;
319 gduche 44
import com.extjs.gxt.ui.client.widget.MessageBox;
338 gduche 45
 
386 gduche 46
import com.extjs.gxt.ui.client.widget.Info;
276 gduche 47
import com.extjs.gxt.ui.client.widget.TabItem;
48
import com.extjs.gxt.ui.client.widget.TabPanel;
293 gduche 49
import com.extjs.gxt.ui.client.widget.Text;
283 gduche 50
 
356 gduche 51
import com.extjs.gxt.ui.client.widget.button.Button;
52
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
319 gduche 53
import com.extjs.gxt.ui.client.widget.button.IconButton;
280 gduche 54
import com.extjs.gxt.ui.client.widget.form.ComboBox;
55
import com.extjs.gxt.ui.client.widget.form.DateField;
276 gduche 56
import com.extjs.gxt.ui.client.widget.form.FieldSet;
352 gduche 57
import com.extjs.gxt.ui.client.widget.form.FormPanel;
293 gduche 58
import com.extjs.gxt.ui.client.widget.form.HiddenField;
276 gduche 59
import com.extjs.gxt.ui.client.widget.form.LabelField;
446 gduche 60
import com.extjs.gxt.ui.client.widget.form.Radio;
61
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
286 gduche 62
import com.extjs.gxt.ui.client.widget.form.TextArea;
276 gduche 63
import com.extjs.gxt.ui.client.widget.form.TextField;
456 gduche 64
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
276 gduche 65
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
66
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
67
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
319 gduche 68
import com.extjs.gxt.ui.client.widget.layout.FormData;
276 gduche 69
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
356 gduche 70
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
276 gduche 71
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
386 gduche 72
import com.google.gwt.core.client.GWT;
339 gduche 73
import com.google.gwt.i18n.client.DateTimeFormat;
276 gduche 74
import com.google.gwt.user.client.ui.Widget;
127 gduche 75
 
446 gduche 76
public class PersonneForm extends FormPanel implements Rafraichissable {
127 gduche 77
 
276 gduche 78
	/*--------------------------------------------------------------------------------------
79
	 * 		VARIABLES
80
	 * -------------------------------------------------------------------------------------
81
	 */
82
 
83
	private TabItem tiIdentite, tiAdresses, tiInfosNat;
283 gduche 84
	private Mediateur mediateur = Registry.get(RegistreId.MEDIATEUR);
85
	private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
376 gduche 86
	private Personne personneSelectionnee, personneSauvegarde = null;
456 gduche 87
	private String mode = "";
276 gduche 88
 
456 gduche 89
	public static final String MODE_AJOUTER = "AJOUT";
90
	public static final String MODE_MODIFIER = "MODIF";
91
 
92
 
376 gduche 93
	private FormBinding binding = null;
94
 
276 gduche 95
	/*--------------------------------------------------------------------------------------
96
	 * 		CONSTRUCTEUR
97
	 * -------------------------------------------------------------------------------------
98
	 */
446 gduche 99
 
276 gduche 100
	/**
101
	 * Constructeur du panneau
102
	 *
103
	 * Initialise le panneau et ajoute une barre d'outils à deux boutons (réinitialiser le
104
	 * formulaire et annuler la saisie).
105
	 *
106
	 * */
456 gduche 107
	public PersonneForm(String mode) {
108
		this.mode = mode;
386 gduche 109
		initialiserComposants();
352 gduche 110
	}
111
 
386 gduche 112
	public void initialiserComposants()	{
352 gduche 113
 
376 gduche 114
		personneSelectionnee = new Personne();
115
		personneSauvegarde = new Personne();
116
 
283 gduche 117
		initialiserPanneau();
276 gduche 118
 
356 gduche 119
		ButtonBar barreOutilsBas = new ButtonBar();
488 gduche 120
		//barreOutilsBas.setButtonAlign(HorizontalAlignment.CENTER);
121
		barreOutilsBas.setAlignment(HorizontalAlignment.CENTER);
276 gduche 122
 
352 gduche 123
		ajouterBoutonEnregistrer(barreOutilsBas);
124
		ajouterBoutonEnregistrerEtRevenir(barreOutilsBas);
125
		ajouterBoutonAnnuler(barreOutilsBas);
276 gduche 126
 
352 gduche 127
		setBottomComponent(barreOutilsBas);
276 gduche 128
 
352 gduche 129
		ToolBar barreOutilsHaut = new ToolBar();
130
		ajouterBoutonReinitialiser(barreOutilsHaut);
131
		setTopComponent(barreOutilsHaut);
338 gduche 132
 
276 gduche 133
		initialiserOnglets();
134
 
135
		creerComposantsIdentite();
293 gduche 136
		creerComposantsAdresse();
280 gduche 137
 
352 gduche 138
		layout();
338 gduche 139
 
376 gduche 140
		binderPersonne(personneSelectionnee);
276 gduche 141
	}
142
 
143
	/*---------------------------------------------------------------------------------------
144
	 * 		SOUS-METHODES
145
	 * --------------------------------------------------------------------------------------
146
	 */
147
	/**
148
	 * Inialise le panneau donné
149
	 *
150
	 * @param contentPanel le panneau à initialiser
151
	 * */
283 gduche 152
	public void initialiserPanneau()	{
276 gduche 153
 
283 gduche 154
		setCollapsible(false);
461 gduche 155
		if (this.mode.equals(MODE_AJOUTER))	{
156
			setHeading(mediateur.i18nC.personneModeAjout());
519 gduche 157
			setIcon(Images.ICONES.ajouter());
461 gduche 158
		} else 	{
159
			setHeading(mediateur.i18nC.personneModeModifier());
519 gduche 160
			setIcon(Images.ICONES.formModifier());
461 gduche 161
		}
283 gduche 162
		setButtonAlign(HorizontalAlignment.CENTER);
386 gduche 163
		setLayout(new FitLayout());
376 gduche 164
		setBodyBorder(false);
165
		setBorders(false);
166
		setPadding(0);
167
		setWidth("100%");
446 gduche 168
 
276 gduche 169
	}
170
 
171
	/**
172
	 * Crée les onglets identité, adresse et informations naturaliste
173
	 *
174
	 * */
175
	public void initialiserOnglets()	{
176
		//TabPanel
177
		TabPanel formulaireOnglets = new TabPanel();
178
 
179
		//Tab 1 : identite
461 gduche 180
		tiIdentite = new TabItem(mediateur.i18nC.personneIdentite());
276 gduche 181
		tiIdentite.setLayout(new FormLayout());
283 gduche 182
		tiIdentite.setScrollMode(Scroll.AUTO);
446 gduche 183
 
276 gduche 184
		formulaireOnglets.add(tiIdentite);
293 gduche 185
		hmIdentite.put("tiIdentite", tiIdentite);
276 gduche 186
 
187
		//Tab 2 : Adresse
461 gduche 188
		tiAdresses = new TabItem(mediateur.i18nC.adresse());
304 gduche 189
		tiAdresses.setLayout(new FormLayout());
283 gduche 190
		tiAdresses.setScrollMode(Scroll.AUTO);
446 gduche 191
 
276 gduche 192
		formulaireOnglets.add(tiAdresses);
193
 
194
		//Tab 3 : Infos Naturalistes
461 gduche 195
		tiInfosNat = new TabItem(mediateur.i18nC.personneInfoNat());
276 gduche 196
		tiInfosNat.setLayout(new FormLayout());
283 gduche 197
		tiInfosNat.setScrollMode(Scroll.AUTO);
446 gduche 198
 
276 gduche 199
		formulaireOnglets.add(tiInfosNat);
200
		add(formulaireOnglets);
201
	}
202
 
203
	/**
204
	 * Crée les widgets pour l'onglet identité
205
	 *
206
	 * */
207
 
293 gduche 208
	//hmIdentite[...] référence par une chaine de caractère tous les composants de l'onglet Identite
276 gduche 209
	private HashMap<String, Widget>hmIdentite = new HashMap<String, Widget>();
293 gduche 210
	private HashMap<String, Widget>hmAdresse = new HashMap<String, Widget>();
211
	private HashMap<String, Widget>hmInfosNat = new HashMap<String, Widget>();
319 gduche 212
	private FormData fd100 = new FormData("1");
276 gduche 213
 
214
	public void creerComposantsIdentite()	{
215
 
456 gduche 216
 
376 gduche 217
			// Gestion de l'affichage en colonnes : 3 Layout container : principal, gauche & droite
276 gduche 218
			LayoutContainer left = new LayoutContainer();
219
			left.setLayout(new FormLayout());
220
			LayoutContainer right = new LayoutContainer();
221
			right.setLayout(new FormLayout());
222
 
223
			LayoutContainer main = new LayoutContainer();
519 gduche 224
 
225
			main.add(left, new ColumnData(.45));
226
			main.add(right, new ColumnData(.45));
227
 
276 gduche 228
			main.setLayout(new ColumnLayout());
519 gduche 229
			main.setHeight("100%");
230
			main.setScrollMode(Scroll.AUTO);
276 gduche 231
 
232
			// Création des champs
233
			FormLayout formLayout = new FormLayout();
234
			formLayout.setLabelAlign(LabelAlign.LEFT);
235
 
456 gduche 236
				FieldSet fsProjet = new FieldSet();
461 gduche 237
				fsProjet.setHeading(mediateur.i18nC.menuProjet());
456 gduche 238
				fsProjet.setLayout(new FormLayout());
239
 
240
					ListStore<Projet> storeProjets = new ListStore<Projet>();
241
					ComboBox cbProjets = new ComboBox<Projet>();
461 gduche 242
					cbProjets.setFieldLabel(mediateur.i18nC.personneProjet()+ " :");
243
					cbProjets.setEmptyText(mediateur.i18nC.txtListeProjetDefaut());
456 gduche 244
					cbProjets.setLabelSeparator("");
245
					cbProjets.setDisplayField("nom");
246
					cbProjets.setEditable(false);
247
					cbProjets.setTriggerAction(TriggerAction.ALL);
248
					cbProjets.setStore(storeProjets);
249
					cbProjets.setAllowBlank(false);
250
					fsProjet.add(cbProjets);
251
 
252
					hmIdentite.put("cbProjets", cbProjets);
253
 
254
					mediateur.selectionnerProjets(this);
255
 
256
				left.add(fsProjet);
257
 
258
 
376 gduche 259
				FieldSet fsNoms = new FieldSet();
260
				fsNoms.setHeading("Noms");
261
				fsNoms.setLayout(formLayout);
456 gduche 262
 
376 gduche 263
					// Nom complet : Affiché que si valeurs saisies
264
					LabelField nomComplet = new LabelField();
461 gduche 265
					nomComplet.setFieldLabel(mediateur.i18nC.personneNomComplet() +" :");
376 gduche 266
					nomComplet.hide();
267
 
268
					fsNoms.add(nomComplet);
269
					hmIdentite.put("nomComplet", nomComplet);
276 gduche 270
 
376 gduche 271
					//Préfixe
272
					ListStore<Valeur> storePrefixe = new ListStore<Valeur>();
273
					ComboBox<Valeur> cbPrefixe = new ComboBox<Valeur>();
274
					cbPrefixe.setStore(storePrefixe);
275
					cbPrefixe.setDisplayField("nom");
276
					cbPrefixe.setEmptyText("Choisissez le préfixe:");
277
					cbPrefixe.setFieldLabel("Prefix");
278
 
279
					fsNoms.add(cbPrefixe);
280
					hmIdentite.put("cbPrefixe", cbPrefixe);
281
 
282
					mediateur.obtenirListeValeurEtRafraichir(this, "prefixe");
352 gduche 283
 
376 gduche 284
					//Prénom
285
					TextField<String> tfPrenom = new TextField<String>();
286
					tfPrenom.setFieldLabel("Prénom");
287
					tfPrenom.setName("prenom");
352 gduche 288
 
376 gduche 289
					fsNoms.add(tfPrenom);
290
					hmIdentite.put("tfPrenom", tfPrenom);
352 gduche 291
 
376 gduche 292
					//Nom
293
					TextField<String> tfNom = new TextField<String>();
294
					tfNom.setFieldLabel("Nom");
456 gduche 295
					tfNom.setAllowBlank(false);
376 gduche 296
					tfNom.setName("nom");
297
 
298
					fsNoms.add(tfNom);
299
					hmIdentite.put("tfNom", tfNom);
300
 
301
					//Suffixe
302
					ListStore<Valeur> storeSuffixe = new ListStore<Valeur>();
303
					ComboBox<Valeur> cbSuffixe = new ComboBox<Valeur>();
304
					cbSuffixe.setStore(storeSuffixe);
305
					cbSuffixe.setFieldLabel("Suffixe");
306
					cbSuffixe.setDisplayField("nom");
307
					cbSuffixe.setEmptyText("Choisissez un suffixe:");
308
 
309
					fsNoms.add(cbSuffixe);
310
					hmIdentite.put("cbSuffixe", cbSuffixe);
311
 
312
					mediateur.obtenirListeValeurEtRafraichir(this, "suffixes");
352 gduche 313
 
376 gduche 314
					TextField<String> tfNomAutre = new TextField();
315
					tfNomAutre.setFieldLabel("Autres noms");
386 gduche 316
					tfNomAutre.setName("truk_nom_autre");
376 gduche 317
 
318
					fsNoms.add(tfNomAutre);
319
					hmIdentite.put("tfNomAutre", tfNomAutre);
320
 
321
					TextField<String> tfAbreviation = new TextField<String>();
322
					tfAbreviation.setFieldLabel("Abréviation");
323
					tfAbreviation.setName("abreviation");
324
 
325
					fsNoms.add(tfAbreviation);
326
					hmIdentite.put("tfAbreviation", tfAbreviation);
446 gduche 327
 
376 gduche 328
					//Abréviation autres
329
					TextField<String> tfAbreviationAutre = new TextField<String>();
330
					tfAbreviationAutre.setFieldLabel("Autres Abrév.");
331
					tfAbreviationAutre.setName("truk_abreviation_autre");
332
 
333
					fsNoms.add(tfAbreviationAutre);
334
					hmIdentite.put("tfAbreviationAutre", tfAbreviationAutre);
335
 
336
				left.add(fsNoms);
276 gduche 337
 
376 gduche 338
				formLayout = new FormLayout();
339
				formLayout.setLabelAlign(LabelAlign.LEFT);
276 gduche 340
 
376 gduche 341
				FieldSet fsNaissance = new FieldSet();
342
				fsNaissance.setHeading("Naissance");
343
				fsNaissance.setLayout(formLayout);
352 gduche 344
 
376 gduche 345
					DateField dfDateNaissance = new DateField();
346
					dfDateNaissance.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
347
					dfDateNaissance.setFieldLabel("Date");
348
					dfDateNaissance.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
349
 
350
					fsNaissance.add(dfDateNaissance);
351
					hmIdentite.put("dfDateNaissance", dfDateNaissance);
352
 
353
					// Lieu naissance
354
					TextField<String> tfLieuNaissance = new TextField();
355
					tfLieuNaissance.setFieldLabel("Lieu");
356
					tfLieuNaissance.setName("naissance_lieu");
357
 
358
					fsNaissance.add(tfLieuNaissance);
359
					hmIdentite.put("tfLieuNaissance", tfLieuNaissance);
360
 
361
				left.add(fsNaissance);
276 gduche 362
 
376 gduche 363
				formLayout = new FormLayout();
364
				formLayout.setLabelAlign(LabelAlign.LEFT);
276 gduche 365
 
376 gduche 366
				FieldSet fsDeces = new FieldSet();
367
				fsDeces.setHeading("Décès");
368
				fsDeces.setLayout(formLayout);
446 gduche 369
 
370
					Radio rbEstDecedee = new Radio();
371
					rbEstDecedee.setBoxLabel("oui");
372
 
373
					rbEstDecedee.addListener(Events.Change, new Listener<ComponentEvent>() {
374
 
375
						public void handleEvent(ComponentEvent be) {
488 gduche 376
							if(((Radio) be.getComponent()).getValue().equals(true))	{
446 gduche 377
								((DateField) hmIdentite.get("dfDateDeces")).setVisible(true);
378
								((TextField) hmIdentite.get("tfLieuDeces")).setVisible(true);
379
							} else	{
380
								((DateField) hmIdentite.get("dfDateDeces")).setVisible(false);
381
								((TextField) hmIdentite.get("tfLieuDeces")).setVisible(false);
382
							}
456 gduche 383
						}
446 gduche 384
					});
385
 
456 gduche 386
					hmIdentite.put("rbEstDecedee", rbEstDecedee);
446 gduche 387
 
388
					Radio rbNestPasDecedee = new Radio();
389
					rbNestPasDecedee.setBoxLabel("non");
390
					rbNestPasDecedee.setValue(true);
391
 
392
					RadioGroup rbgDeces = new RadioGroup();
393
					rbgDeces.setFieldLabel("Est décédée");
394
					rbgDeces.add(rbEstDecedee);
395
					rbgDeces.add(rbNestPasDecedee);
396
 
397
					fsDeces.add(rbgDeces);
398
 
376 gduche 399
					DateField dfDateDeces = new DateField();
400
					dfDateDeces.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
401
					dfDateDeces.setFormatValue(true);
402
					dfDateDeces.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
403
					dfDateDeces.setFieldLabel("Date");
446 gduche 404
					dfDateDeces.setVisible(false);
276 gduche 405
 
376 gduche 406
					fsDeces.add(dfDateDeces);
407
					hmIdentite.put("dfDateDeces", dfDateDeces);
446 gduche 408
 
376 gduche 409
					TextField<String> tfLieuDeces = new TextField();
410
					tfLieuDeces.setFieldLabel("Lieu");
411
					tfLieuDeces.setName("deces_lieu");
446 gduche 412
					tfLieuDeces.setVisible(false);
376 gduche 413
 
414
					fsDeces.add(tfLieuDeces);
415
					hmIdentite.put("tfLieuDeces", tfLieuDeces);
416
 
417
				left.add(fsDeces);
276 gduche 418
 
376 gduche 419
			tiIdentite.add(main);
283 gduche 420
 
376 gduche 421
				FieldSet fsContactTel = new FieldSet();
422
				fsContactTel.setHeading("Contact - Téléphones");
423
				fsContactTel.setLayout(new RowLayout());
424
 
425
				right.add(fsContactTel);
426
				hmIdentite.put("fsContactTel", fsContactTel);
427
 
428
					LayoutContainer lcTelephone = new LayoutContainer();
429
					lcTelephone.setLayout(new ColumnLayout());
430
 
431
						TextField tfTelephone = new TextField();
432
						tfTelephone.setFieldLabel("tel");
433
						lcTelephone.add(tfTelephone, new ColumnData(0.40));
434
 
435
						hmIdentite.put("tfTelephone", tfTelephone);
436
 
437
						ListStore<Valeur> storeTel = new ListStore<Valeur>();
438
						ComboBox<Valeur> cbTelephone = new ComboBox<Valeur>();
439
						cbTelephone.setDisplayField("nom");
440
						cbTelephone.setEmptyText("Choisissez:");
441
						cbTelephone.setStore(storeTel);
442
 
443
						lcTelephone.add(cbTelephone, new ColumnData(0.40));
444
						hmIdentite.put("cbTelephone", cbTelephone);
283 gduche 445
 
376 gduche 446
						mediateur.obtenirListeValeurEtRafraichir(this, "tel");
276 gduche 447
 
540 gduche 448
						Button bAjouter = new Button();
449
						bAjouter.setIcon(Images.ICONES.ajouter());
450
						// TODO : taille du bouton trop grande
376 gduche 451
						bAjouter.addSelectionListener(
540 gduche 452
								new SelectionListener<ButtonEvent>() {
453
									public void componentSelected(ButtonEvent ce) {
446 gduche 454
 
376 gduche 455
										String strTelephone = ((TextField<String>) hmIdentite.get("tfTelephone")).getValue();
456
										if ((strTelephone==null)||(strTelephone.trim().equals("")))	{
457
											MessageBox.alert("Erreur de saisie", "Vous devez saisir un numéro de téléphone", null);
458
										} else if (hmIdentite.get("tel-" + strTelephone) != null){
459
											MessageBox.alert("Erreur de saisie", "Le numéro saisi est déjà présent dans la liste", null);
460
										} else {
461
												String strValeurTypeTel = "";
462
												String idTel = "";
463
												Valeur valeurTypeTel = ((ComboBox<Valeur>) hmIdentite.get("cbTelephone")).getValue();
464
 
465
												if (valeurTypeTel != null)	{
466
													strValeurTypeTel = valeurTypeTel.getNom();
467
													idTel = valeurTypeTel.get("abreviation");
468
												}	else {
469
													strValeurTypeTel = ((ComboBox<Valeur>) hmIdentite.get("cbTelephone")).getRawValue();
470
													idTel = strValeurTypeTel;
471
												}
446 gduche 472
 
376 gduche 473
												if (strValeurTypeTel.trim().equals(""))	{
474
													MessageBox.alert("Erreur de saisie", "Vous devez saisir un type de téléphone", null);
475
												}	else {
476
													ajouterTelephone(strTelephone, strValeurTypeTel, idTel);
477
												}
478
											}
479
										}
480
									}
481
								);
276 gduche 482
 
376 gduche 483
						lcTelephone.add(bAjouter, new ColumnData(0.15));
484
 
485
						HiddenField<String> hfTelephone = new HiddenField<String>();
486
						add(hfTelephone);
487
						hmIdentite.put("hfTelephone", hfTelephone);
488
 
489
					fsContactTel.add(lcTelephone);
276 gduche 490
 
376 gduche 491
					FieldSet fsContact = new FieldSet();
492
					fsContact.setHeading("Contact - Autres");
493
					fsContact.setId("fsContact");
494
					fsContact.setLayout(new RowLayout());
276 gduche 495
 
376 gduche 496
					right.add(fsContact);
497
					hmIdentite.put("fsContact", fsContact);
276 gduche 498
 
376 gduche 499
					LabelField lfCourriel = new LabelField();
500
					lfCourriel.setText("<b>Courriels:</b>");
276 gduche 501
 
376 gduche 502
					fsContact.add(lfCourriel);
276 gduche 503
 
376 gduche 504
					LayoutContainer lcCourriel = new LayoutContainer();
505
					lcCourriel.setLayout(new ColumnLayout());
276 gduche 506
 
376 gduche 507
						TextField tfCourriel = new TextField();
508
						lcCourriel.add(tfCourriel, new ColumnData(0.80));
509
 
510
						HiddenField hfHiddenCourriel = new HiddenField();
511
						hfHiddenCourriel.setId("tfHiddenCourriel");
512
						hfHiddenCourriel.setValue("");
446 gduche 513
 
376 gduche 514
						add(hfHiddenCourriel);
515
						hmIdentite.put("hfHiddenCourriel", hfHiddenCourriel);
516
						hmIdentite.put("tfCourriel", tfCourriel);
276 gduche 517
 
540 gduche 518
						Button bAjouterCourriel = new Button();
519
						bAjouterCourriel.setIcon(Images.ICONES.ajouter());
376 gduche 520
						bAjouterCourriel.addSelectionListener(
540 gduche 521
								new SelectionListener<ButtonEvent>() {
376 gduche 522
 
540 gduche 523
									public void componentSelected(ButtonEvent ce) {
376 gduche 524
 
525
										String strEmail = ((TextField<String>) hmIdentite.get("tfCourriel")).getValue();
526
										if ((strEmail==null)||(strEmail.trim().equals("")))	{
527
											MessageBox.alert("Erreur de saisie", "Vous devez saisir une adresse", null);
528
										} else if (hmIdentite.get("email-" + strEmail) != null){
529
											MessageBox.alert("Erreur de saisie", "L'adresse saisie est déjà dans la liste", null);
530
										} else {
531
 
532
											if (!strEmail.matches("(\\w+)@(\\w+\\.)(\\w+)(\\.\\w+)*"))	{
533
												MessageBox.alert("Erreur de saisie", "L'adresse n'est pas au bon format (ex: me@domain.com)", null);
534
											} else if (strEmail.length()>255){
535
												MessageBox.alert("Erreur de saisie", "L'adresse ne peut dépasser 255 caractères", null);
536
											} else {
537
												ajouterCourriel(strEmail);
538
											}
539
 
540
										}
541
 
542
 
543
									}
544
								});
276 gduche 545
 
376 gduche 546
						lcCourriel.add(bAjouterCourriel, new ColumnData(0.15));
547
 
548
					fsContact.add(lcCourriel);
276 gduche 549
 
376 gduche 550
					LayoutContainer lcCourrielContainer = new LayoutContainer(new RowLayout());
551
 
552
					fsContact.add(lcCourrielContainer);
553
					hmIdentite.put("lcCourrielContainer", lcCourrielContainer);
280 gduche 554
 
376 gduche 555
 
556
					LabelField lfUrl = new LabelField();
557
					lfUrl.setText("<b>Sites Web:</b>");
558
 
559
					fsContact.add(lfUrl);
280 gduche 560
 
376 gduche 561
					LayoutContainer lcUrl = new LayoutContainer(new ColumnLayout());
562
					hmIdentite.put("lcUrl", lcUrl);
286 gduche 563
 
386 gduche 564
					HiddenField<String> hfUrl = new HiddenField<String>();
565
					hmIdentite.put("hfUrl", hfUrl);
566
					add(hfUrl);
567
 
376 gduche 568
						TextField tfUrl = new TextField();
569
						tfUrl.setValue("http://");
286 gduche 570
 
376 gduche 571
						lcUrl.add(tfUrl, new ColumnData(0.8));
572
						hmIdentite.put("tfUrl", tfUrl);
286 gduche 573
 
540 gduche 574
						Button ibAjouterUrl = new Button();
575
						ibAjouterUrl.setIcon(Images.ICONES.ajouter());
576
						ibAjouterUrl.addSelectionListener(new SelectionListener<ButtonEvent>() {
376 gduche 577
 
540 gduche 578
							public void componentSelected(ButtonEvent ce) {
293 gduche 579
 
376 gduche 580
								TextField<String> tfUrl = (TextField) hmIdentite.get("tfUrl");
581
								String strUrl = tfUrl.getValue();
293 gduche 582
 
376 gduche 583
								if ((strUrl == null)||(strUrl.trim().equals("http://"))||(strUrl.trim().equals("")))	{
584
									MessageBox.alert("Erreur de saisie", "Vous devez saisir un URL", null);
585
								} else if(hmIdentite.get("url-" + strUrl) != null)	{
586
									MessageBox.alert("Erreur de saisie", "L'url est déjà présente dans la liste.", null);
587
								}	else	{
540 gduche 588
									tfUrl.setValue("http://");
439 gduche 589
										//if (!strUrl.matches("[a-z]{3,}://[a-z0-9-]+.[.a-z0-9-]+(?::[0-9]*)?"))	{
590
										if (!strUrl.startsWith("http://"))	{
376 gduche 591
											MessageBox.alert("Erreur de saisie", "L'adresse n'est pas au bon format (ex: http://www.domain.com)", null);
592
										} else if (strUrl.length()>255){
593
											MessageBox.alert("Erreur de saisie", "L'adresse ne peut dépasser 255 caractères", null);
594
										} else {
595
											ajouterUrl(strUrl);
596
										}
597
 
293 gduche 598
								}
599
 
600
							}
376 gduche 601
						});
286 gduche 602
 
376 gduche 603
						lcUrl.add(ibAjouterUrl, new ColumnData(0.15));
604
					fsContact.add(lcUrl);
286 gduche 605
 
376 gduche 606
					LayoutContainer lcUrlContainer = new LayoutContainer(new RowLayout());
607
 
608
					fsContact.add(lcUrlContainer);
609
					hmIdentite.put("lcUrlContainer", lcUrlContainer);
610
 
611
					FieldSet fsAutresInfos = new FieldSet();
612
					fsAutresInfos.setHeading("Autres informations");
286 gduche 613
 
376 gduche 614
					formLayout = new FormLayout();
615
					formLayout.setLabelAlign(LabelAlign.LEFT);
616
					fsAutresInfos.setLayout(formLayout);
286 gduche 617
 
376 gduche 618
 
386 gduche 619
			formLayout = new FormLayout();
620
			formLayout.setLabelAlign(LabelAlign.TOP);
621
			LayoutContainer lcAutreInformations1 = new LayoutContainer(formLayout);
622
 
623
			//Civilité
624
			ListStore<Valeur> storeSexe = new ListStore<Valeur>();
625
			ComboBox<Valeur> cbSexe = new ComboBox<Valeur>();
626
			cbSexe.setStore(storeSexe);
627
			cbSexe.setFieldLabel("Sexe");
628
			cbSexe.setDisplayField("nom");
629
			cbSexe.setEmptyText("Choisissez le sexe:");
630
 
631
			lcAutreInformations1.add(cbSexe, fd100);
632
			hmIdentite.put("cbSexe", cbSexe);
633
 
634
			mediateur.obtenirListeValeurEtRafraichir(this, "sexe");
356 gduche 635
 
293 gduche 636
			//Description
637
			TextArea taDescription = new TextArea();
638
			taDescription.setEmptyText("Saisissez une description");
639
			taDescription.setFieldLabel("Description");
319 gduche 640
			taDescription.setWidth("100%");
376 gduche 641
			taDescription.setName("description");
293 gduche 642
 
386 gduche 643
			lcAutreInformations1.add(taDescription, fd100);
293 gduche 644
			hmIdentite.put("taDescription", taDescription);
645
 
386 gduche 646
			fsAutresInfos.add(lcAutreInformations1);
376 gduche 647
 
293 gduche 648
			// Logo
386 gduche 649
			LayoutContainer lcAutreInformations2 = new LayoutContainer();
650
			hmIdentite.put("lcAutreInformations2", lcAutreInformations2);
651
 
652
			LabelField lfUrlLogo = new LabelField();
653
			lfUrlLogo.setText("<b>Logo:</b>");
654
			lcAutreInformations2.add(lfUrlLogo);
655
 
656
			LayoutContainer lcUrlLogo = new LayoutContainer(new ColumnLayout());
657
			hmIdentite.put("lcUrlLogo", lcUrlLogo);
658
 
659
				TextField tfUrlLogo = new TextField();
660
				tfUrlLogo.setValue("http://");
661
 
662
				HiddenField<String> hfUrlLogo = new HiddenField<String>();
663
				hmIdentite.put("hfUrlLogo", hfUrlLogo);
664
 
665
				lcUrlLogo.add(tfUrlLogo, new ColumnData(0.8));
666
				hmIdentite.put("tfUrlLogo", tfUrlLogo);
667
 
540 gduche 668
				Button ibAjouterUrlLogo = new Button();
669
				ibAjouterUrlLogo.setIcon(Images.ICONES.ajouter());
670
				ibAjouterUrlLogo.addSelectionListener(new SelectionListener<ButtonEvent>() {
386 gduche 671
 
540 gduche 672
					public void componentSelected(ButtonEvent ce) {
386 gduche 673
 
674
						TextField<String> tfUrlLogo = (TextField) hmIdentite.get("tfUrlLogo");
675
						String strUrl = tfUrlLogo.getValue();
676
 
677
						if ((strUrl == null)||(strUrl.trim().equals("http://"))||(strUrl.trim().equals("")))	{
678
							MessageBox.alert("Erreur de saisie", "Vous devez saisir un URL", null);
679
						} else if(hmIdentite.get("url-" + strUrl) != null)	{
680
							MessageBox.alert("Erreur de saisie", "L'url est déjà présente dans la liste.", null);
681
						}	else	{
540 gduche 682
							tfUrlLogo.setValue("http://");
439 gduche 683
							//if (!strUrl.matches("[a-z]{3,}://[a-z0-9-]+.[.a-z0-9-]+(?::[0-9]*)?"))	{
684
							if (!strUrl.startsWith("http://"))	{
386 gduche 685
									MessageBox.alert("Erreur de saisie", "L'adresse n'est pas au bon format (ex: http://www.domain.com)", null);
686
								} else if (strUrl.length()>255){
687
									MessageBox.alert("Erreur de saisie", "L'adresse ne peut dépasser 255 caractères", null);
688
								} else {
689
									ajouterUrlLogo(strUrl);
690
								}
691
 
692
						}
693
 
694
					}
695
				});
696
 
697
				lcUrlLogo.add(ibAjouterUrlLogo, new ColumnData(0.15));
698
				lcAutreInformations2.add(lcUrlLogo);
699
 
700
			fsAutresInfos.add(lcAutreInformations2);
701
 
293 gduche 702
			TextArea taLogo = new TextArea();
703
			taLogo.setFieldLabel("Logos");
319 gduche 704
			taLogo.setWidth("100%");
293 gduche 705
			taLogo.setEmptyText("Saisissez les adresses des logos séparées par un saut de ligne");
386 gduche 706
			//fsAutresInfos.add(taLogo, fd100);
293 gduche 707
 
708
			hmIdentite.put("taLogo", taLogo);
709
 
376 gduche 710
			right.add(fsAutresInfos);
293 gduche 711
 
276 gduche 712
			// Ajout des évènements saisi
713
			KeyListener klNoms = new KeyListener()	{
714
				public void componentKeyUp(ComponentEvent ev)	{
283 gduche 715
					rafraichir(null);
280 gduche 716
				}
276 gduche 717
			};
718
 
488 gduche 719
			SelectionChangedListener<Valeur> selectionChange = new SelectionChangedListener<Valeur>() {
283 gduche 720
				public void selectionChanged(SelectionChangedEvent se) {
721
						rafraichir(null);
722
					}
723
			};
724
 
319 gduche 725
			cbPrefixe.addSelectionChangedListener(selectionChange);
726
			cbPrefixe.addKeyListener(klNoms);
276 gduche 727
			tfPrenom.addKeyListener(klNoms);
728
			tfNom.addKeyListener(klNoms);
283 gduche 729
			cbSuffixe.addSelectionChangedListener(selectionChange);
276 gduche 730
 
731
	}
732
 
293 gduche 733
	public void creerComposantsAdresse()	{
734
 
735
		// Gauche
736
		LayoutContainer left = new LayoutContainer();
737
		left.setLayout(new FormLayout());
738
 
739
		// Droite
740
		LayoutContainer right = new LayoutContainer();
741
		right.setLayout(new FormLayout());
742
 
743
		// Principal
744
		LayoutContainer main = new LayoutContainer();
745
		main.setLayout(new ColumnLayout());
746
 
747
		// Ajout au principal
748
		main.add(left, new ColumnData(.49));
749
		main.add(right, new ColumnData(.49));
750
 
751
		TextField<String> tfAdresse1 = new TextField();
752
		tfAdresse1.setFieldLabel("Adresse");
376 gduche 753
		tfAdresse1.setName("adresse_01");
319 gduche 754
		left.add(tfAdresse1, fd100);
293 gduche 755
		hmAdresse.put("tfAdresse1", tfAdresse1);
756
 
757
		TextField<String> tfAdresse2 = new TextField();
758
		tfAdresse2.setFieldLabel("Complément d'adresse");
376 gduche 759
		tfAdresse2.setName("adresse_02");
319 gduche 760
		left.add(tfAdresse2, fd100);
293 gduche 761
		hmAdresse.put("tfAdresse2", tfAdresse2);
762
 
763
		ComboBox<Valeur> cbPays = new ComboBox<Valeur>();
764
		cbPays.setFieldLabel("Pays");
765
		cbPays.setDisplayField("nom");
766
		cbPays.setEmptyText("Sélectionnez le pays:");
767
 
768
		ListStore<Valeur> storePays = new ListStore<Valeur>();
769
		cbPays.setStore(storePays);
770
 
319 gduche 771
		right.add(cbPays, fd100);
293 gduche 772
		hmAdresse.put("cbPays", cbPays);
773
 
774
		SelectionChangedListener<Valeur> selectionChange = new SelectionChangedListener<Valeur>() {
775
			public void selectionChanged(SelectionChangedEvent se) {
776
					// Rafraichir avec le pays sélectionné
777
					obtenirListeRegionParPays(((Valeur) se.getSelectedItem()).getAbreviation().toString());
778
 
779
				}
780
		};
781
 
782
		cbPays.addSelectionChangedListener(selectionChange);
783
 
784
 
785
		ComboBox<Valeur> cbRegion = new ComboBox<Valeur>();
786
		cbRegion.setFieldLabel("Region");
787
		cbRegion.setDisplayField("nom");
788
		cbRegion.setEmptyText("Sélectionnez la région:");
789
		cbRegion.setVisible(false);
790
 
791
		ListStore<Valeur> storeRegion = new ListStore<Valeur>();
792
		cbRegion.setStore(storeRegion);
793
 
352 gduche 794
 
319 gduche 795
		right.add(cbRegion, fd100);
293 gduche 796
		hmAdresse.put("cbRegion", cbRegion);
797
 
798
		TextField<String> tfBoitePostale = new TextField<String>();
799
		tfBoitePostale.setFieldLabel("Boite postale");
376 gduche 800
		tfBoitePostale.setName("bp");
801
 
319 gduche 802
		left.add(tfBoitePostale, fd100);
293 gduche 803
		hmAdresse.put("tfBoitePostale", tfBoitePostale);
804
 
805
		TextField<Integer> tfCodePostal = new TextField<Integer>();
806
		tfCodePostal.setFieldLabel("Code postal");
376 gduche 807
		tfCodePostal.setName("code_postal");
808
 
319 gduche 809
		right.add(tfCodePostal, fd100);
293 gduche 810
		hmAdresse.put("tfCodePostal", tfCodePostal);
811
 
812
		TextField tfVille = new TextField();
813
		tfVille.setFieldLabel("Ville");
376 gduche 814
		tfVille.setName("ville");
293 gduche 815
 
319 gduche 816
		right.add(tfVille, fd100);
293 gduche 817
		hmAdresse.put("tfVille", tfVille);
818
 
819
		// MAJ ComboBox
820
		mediateur.obtenirListeValeurEtRafraichir(this, "pays");
821
 
304 gduche 822
		FieldSet fsAdresse = new FieldSet();
823
		fsAdresse.setHeading("Adresse personnelle");
824
		fsAdresse.add(main);
293 gduche 825
 
304 gduche 826
		tiAdresses.add(fsAdresse);
352 gduche 827
		((ComboBox) hmIdentite.get("cbPrefixe")).setRawValue("ljkhlkj");
293 gduche 828
	}
338 gduche 829
 
276 gduche 830
	/**
831
	 * Ajouter le bouton réinitialiser à la barre d'outils donnée
832
	 *
833
	 * @param barreOutils la barre d'outils à modifier
834
	 * */
376 gduche 835
	public void ajouterBoutonReinitialiser(ToolBar barreOutils)	{
276 gduche 836
 
837
		//Le bouton réintialiser recharge la page sans sauvegarder les informations
488 gduche 838
		Button reinitialiser = new Button("Réinitialiser le formulaire");
519 gduche 839
		reinitialiser.setIcon(Images.ICONES.rafraichir());
488 gduche 840
		reinitialiser.addSelectionListener(new SelectionListener<ButtonEvent>() {
841
			public void componentSelected(ButtonEvent ce) {
376 gduche 842
				//((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicAjouterPersonne();
843
				reinitialiser();
276 gduche 844
			}
845
		});
846
		barreOutils.add(reinitialiser);
847
	}
848
 
849
	/**
338 gduche 850
	 * Ajouter le bouton Sauvegarder et revenir à la liste à la barre d'outils donnée
851
	 *
852
	 * @param barreOutils la barre d'outils à modifier
853
	 * */
456 gduche 854
	private void ajouterBoutonEnregistrerEtRevenir(ButtonBar barreOutils)	{
338 gduche 855
 
856
		//Le bouton réintialiser recharge la page sans sauvegarder les informations
356 gduche 857
		Button enregistrer = new Button("Enregistrer et revenir à la liste");
519 gduche 858
		enregistrer.setIcon(Images.ICONES.scriptGo());
859
		enregistrer.setIconAlign(IconAlign.LEFT);
488 gduche 860
		enregistrer.addSelectionListener(new SelectionListener<ButtonEvent>() {
861
			public void componentSelected(ButtonEvent ce) {
540 gduche 862
				enregistrer();
338 gduche 863
			}
864
		});
456 gduche 865
		enregistrer.setEnabled(false);
866
 
867
		hmIdentite.put("btnEnregistrerRevenir", enregistrer);
338 gduche 868
		barreOutils.add(enregistrer);
456 gduche 869
 
338 gduche 870
	}
871
 
872
	/**
276 gduche 873
	 * Ajouter le bouton Sauvegarder à la barre d'outils donnée
874
	 *
875
	 * @param barreOutils la barre d'outils à modifier
876
	 * */
456 gduche 877
	private void ajouterBoutonEnregistrer(ButtonBar barreOutils)	{
276 gduche 878
 
879
		//Le bouton réintialiser recharge la page sans sauvegarder les informations
356 gduche 880
		Button enregistrer = new Button("Enregistrer");
519 gduche 881
		enregistrer.setIcon(Images.ICONES.scriptSave());
882
		enregistrer.setIconAlign(IconAlign.LEFT);
352 gduche 883
		enregistrer.setId("main-button");
488 gduche 884
		enregistrer.addSelectionListener(new SelectionListener<ButtonEvent>() {
885
			public void componentSelected(ButtonEvent ce) {
376 gduche 886
				enregistrer();
276 gduche 887
			}
888
		});
456 gduche 889
		enregistrer.setEnabled(false);
890
 
891
		hmIdentite.put("btnEnregistrer", enregistrer);
286 gduche 892
		barreOutils.add(enregistrer);
276 gduche 893
	}
894
 
895
	/**
896
	 * Ajouter le bouton annuler à la barre d'outils donnée
897
	 *
898
	 * @param barreOutils la barre d'outils à modifier
899
	 * */
356 gduche 900
	public static void ajouterBoutonAnnuler(ButtonBar barreOutils)	{
276 gduche 901
 
902
		// Le bouton annuler ne sauvegarde pas les informations et renvoie vers la page précédente
356 gduche 903
		Button annuler = new Button("Revenir à la liste");
488 gduche 904
		annuler.addSelectionListener(new SelectionListener<ButtonEvent>() {
905
			public void componentSelected(ButtonEvent ce) {
276 gduche 906
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicMenu("Personnes");
907
			}
908
		});
909
		annuler.setIconStyle(ComposantClass.ICONE_SUPPRIMER);
910
		barreOutils.add(annuler);
911
	}
912
 
293 gduche 913
	public void obtenirListeRegionParPays(String strPays)	{
914
		mediateur.obtenirListeRegionsEtRafraichir(this, "region", strPays);
915
	}
276 gduche 916
 
917
 
293 gduche 918
 
276 gduche 919
	/*---------------------------------------------------------------------------------------
920
	 * 		RAFRAICHISSEMENT DU PANNEAU
921
	 * --------------------------------------------------------------------------------------
922
	 */
283 gduche 923
	public void rafraichir(Object nouvellesDonnees) {
386 gduche 924
 
925
 
926
 
456 gduche 927
		if (nouvellesDonnees instanceof ValeurListe) {
283 gduche 928
 
929
 
930
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
931
 
932
			// Créer une liste de valeurs
933
			List<Valeur> liste = new ArrayList<Valeur>();
934
			for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
935
				liste.add(listeValeurs.get(it.next()));
936
			}
937
 
938
			if (listeValeurs.getId().equals(config.getListeId("prefixe")))	{
939
 
319 gduche 940
				remplirCombobox("cbPrefixe", liste, "hmIdentite");
293 gduche 941
 
942
			} else if (listeValeurs.getId().equals(config.getListeId("suffixes"))) {
943
 
944
				remplirCombobox("cbSuffixe", liste, "hmIdentite");
945
 
946
			} else if (listeValeurs.getId().equals(config.getListeId("sexe"))) {
947
 
948
				remplirCombobox("cbSexe", liste, "hmIdentite");
283 gduche 949
 
293 gduche 950
			} else if (listeValeurs.getId().equals(config.getListeId("tel"))) {
951
 
952
				remplirCombobox("cbTelephone", liste, "hmIdentite");
319 gduche 953
 
954
				//Préselection du tél
955
				ComboBox<Valeur> cbTelephone = (ComboBox<Valeur>) hmIdentite.get("cbTelephone");
956
				cbTelephone.setValue(liste.get(1));
293 gduche 957
 
958
			} else if (listeValeurs.getId().equals(config.getListeId("pays")))	{
283 gduche 959
 
293 gduche 960
				remplirCombobox("cbPays", liste, "hmAdresse");
283 gduche 961
 
293 gduche 962
			} else if (listeValeurs.getId().equals(config.getListeId("region")))	{
283 gduche 963
 
293 gduche 964
				remplirCombobox("cbRegion", liste, "hmAdresse");
283 gduche 965
 
293 gduche 966
				((ComboBox) hmAdresse.get("cbRegion")).setVisible(true);
283 gduche 967
			}
293 gduche 968
 
969
 
456 gduche 970
		} else if (nouvellesDonnees instanceof ProjetListe) {
971
 
972
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
973
 
974
			List<Projet> liste = new ArrayList<Projet>();
975
			for (Iterator<String> it = projets.keySet().iterator(); it.hasNext();) {
976
				liste.add(projets.get(it.next()));
977
			}
978
			ComboBox cbProjets = (ComboBox) hmIdentite.get("cbProjets");
979
			ListStore<Projet> storeProjets= cbProjets.getStore();
980
			storeProjets.removeAll();
981
			storeProjets.add(liste);
982
			cbProjets.setStore(storeProjets);
983
 
352 gduche 984
		} else if (nouvellesDonnees instanceof Information)	{
286 gduche 985
 
352 gduche 986
			Information info = (Information) nouvellesDonnees;
386 gduche 987
			if (info.getType().equals("ajout_personne"))	{
352 gduche 988
 
386 gduche 989
				GWT.log("Ajout de la personne " + personneSelectionnee.getId(), null);
461 gduche 990
				Info.display("Enregistrement", "La personne a été ajoutée (id: " + personneSelectionnee.getId() + ")");
376 gduche 991
 
461 gduche 992
				personneSelectionnee.set("id_personne", info.toString());
519 gduche 993
				this.mode = MODE_MODIFIER;
461 gduche 994
				this.setHeading(mediateur.i18nC.personneModeModifier());
519 gduche 995
				setIcon(Images.ICONES.formModifier());
376 gduche 996
 
433 gduche 997
			} else if (info.getType().equals("modification_personne"))	{
998
 
999
				Info.display("Enregistrement", "Les modifications apportées à la personne " + personneSelectionnee.getId() + " ont été correctement enregistrées.");
1000
 
386 gduche 1001
			} else if (info.getDonnee(0) instanceof PersonneListe)	{
1002
 
1003
 
1004
					Collection colPersonneListe = ((PersonneListe) info.getDonnee(0)).values();
1005
					Iterator itPersonneListe = colPersonneListe.iterator();
1006
					Personne personne = (Personne) itPersonneListe.next();
376 gduche 1007
 
386 gduche 1008
					personneSauvegarde = new Personne();
1009
					personneSauvegarde = (Personne) personne.cloner(personneSauvegarde);
376 gduche 1010
 
386 gduche 1011
					binderPersonne(personne);
1012
					//Mise à jour de la personne
1013
					//Personne personne = (Personne) nouvellesDonnees;
1014
 
456 gduche 1015
					ComboBox cbProjets = (ComboBox) hmIdentite.get("cbProjets");
1016
					cbProjets.setValue(cbProjets.getStore().findModel("id_projet", personne.get("ce_projet")));
386 gduche 1017
 
1018
					//Prefixe
1019
					String prefixe = personne.get("ce_truk_prefix");
1020
					ComboBox<Valeur> cbPrefixe = (ComboBox<Valeur>) hmIdentite.get("cbPrefixe");
1021
 
1022
 
1023
					String prefixeCourant = personne.get("ce_truk_prefix");
1024
					if (cbPrefixe.getStore().findModel("id_valeur", prefixeCourant) != null)	{
1025
						cbPrefixe.setValue(cbPrefixe.getStore().findModel("id_valeur", prefixeCourant));
1026
					}	else	{
1027
						cbPrefixe.setRawValue(prefixeCourant);
376 gduche 1028
					}
1029
 
1030
 
386 gduche 1031
					((TextField) hmIdentite.get("tfPrenom")).setValue(personne.get("prenom"));
1032
					((TextField) hmIdentite.get("tfNom")).setValue(personne.get("nom"));
1033
 
1034
					//Suffixe
1035
					String suffixe = personne.get("ce_truk_suffixe");
1036
					ComboBox<Valeur> cbSuffixe = (ComboBox<Valeur>) hmIdentite.get("cbSuffixe");
1037
 
1038
					String suffixeCourant = personne.get("ce_truk_suffix");
1039
					if (cbSuffixe.getStore().findModel("id_valeur", suffixeCourant) != null)	{
1040
						cbSuffixe.setValue(cbSuffixe.getStore().findModel("id_valeur", suffixeCourant));
1041
					}	else	{
1042
						cbSuffixe.setRawValue(suffixeCourant);
1043
					}
1044
 
1045
					((TextField) hmIdentite.get("tfNomAutre")).setValue(personne.get("truk_nom_autre"));
1046
					((TextField) hmIdentite.get("tfAbreviation")).setValue(personne.get("abreviation"));
1047
					((TextField) hmIdentite.get("tfAbreviationAutre")).setValue(personne.get("truk_abreviation_autre"));
1048
 
1049
 
1050
					(((DateField) hmIdentite.get("dfDateNaissance"))).setValue(personne.getDate("naissance_date"));
1051
					((TextField) hmIdentite.get("tfLieuNaissance")).setValue(personne.get("naissance_lieu"));
1052
 
1053
					(((DateField) hmIdentite.get("dfDateDeces"))).setValue(personne.getDate("deces_date"));
1054
					((TextField) hmIdentite.get("tfLieuDeces")).setValue(personne.get("deces_lieu"));
1055
 
473 gduche 1056
 
386 gduche 1057
					// Telephone
1058
					HashMap<String, String> hmTelephone = (HashMap<String, String>) personne.getChaineDenormaliseAsMapOrList("truk_telephone");
1059
					if (hmTelephone!=null)	{
1060
 
1061
						ListStore storeTelephone = ((ComboBox) hmIdentite.get("cbTelephone")).getStore();
1062
						List lstModelsTelephone = storeTelephone.getModels();
1063
						Iterator<Valeur> itStore = lstModelsTelephone.iterator();
1064
						HashMap<String, String> hmTel = new HashMap();
1065
						while (itStore.hasNext())	{
1066
							Valeur v = itStore.next();
1067
							hmTel.put(v.getAbreviation(), v.getNom());
376 gduche 1068
						}
1069
 
386 gduche 1070
						Collection<String> colTelephone = hmTelephone.keySet();
1071
						Iterator<String> itTelephone = colTelephone.iterator();
1072
 
1073
						while (itTelephone.hasNext())	{
473 gduche 1074
							String strTelephone = itTelephone.next();
1075
							String strTypeTelephone = hmTelephone.get(strTelephone);
386 gduche 1076
							String idTel = hmTel.get(strTypeTelephone);
1077
							if (idTel == null)	{
1078
								idTel = strTypeTelephone;
1079
							}
1080
 
1081
							ajouterTelephone(strTelephone, idTel, strTypeTelephone);
1082
						}
376 gduche 1083
					}
352 gduche 1084
 
386 gduche 1085
					//Courriel
1086
					LinkedList<String> lCourriels = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_courriel");
440 gduche 1087
					if (lCourriels != null) {
1088
						Iterator<String> itCourriels = lCourriels.iterator();
386 gduche 1089
 
440 gduche 1090
						while (itCourriels.hasNext())	{
1091
							String strEmail = itCourriels.next();
1092
							ajouterCourriel(strEmail);
1093
						}
386 gduche 1094
					}
1095
 
1096
					// Sites
1097
					LinkedList<String> lUrl = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_url");
433 gduche 1098
					if (lUrl!=null) {
1099
						Iterator<String> itUrl = lUrl.iterator();
1100
						while (itUrl.hasNext())	{
1101
							String strUrl = itUrl.next();
1102
							ajouterUrl(strUrl);
1103
						}
386 gduche 1104
					}
1105
 
1106
					// Sexe
1107
					String strSexe = personne.get("ce_sexe");
1108
					ComboBox<Valeur> cbSexe = (ComboBox<Valeur>) hmIdentite.get("cbSexe");
1109
 
1110
 
1111
					//FIXME : le lien avec la bdd ne peut pas se faire
1112
					if (cbSexe.getStore().findModel("abreviation", strSexe) != null)	{
1113
						cbSexe.setValue(cbSexe.getStore().findModel("abreviation", strSexe));
352 gduche 1114
					}	else	{
386 gduche 1115
						cbSexe.setRawValue(strSexe);
352 gduche 1116
					}
386 gduche 1117
 
1118
					((TextArea) hmIdentite.get("taDescription")).setRawValue((String) personne.get("description"));
1119
 
1120
					// Logos
1121
					TextArea taLogo = (TextArea) hmIdentite.get("taLogo");
1122
					LinkedList<String> lLogo = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_logo");
433 gduche 1123
					if (lLogo!=null)	{
1124
						Iterator<String> itLogo = lLogo.iterator();
1125
						String strValeurLogo = "";
1126
						while (itLogo.hasNext())	{
473 gduche 1127
							strValeurLogo += itLogo.next();
1128
							if (!strValeurLogo.trim().equals(""))	{
1129
								ajouterUrlLogo(strValeurLogo);
1130
							}
433 gduche 1131
						}
386 gduche 1132
					}
1133
 
1134
					/*--------------------------------------------------
1135
					                      Adresse
1136
					 ---------------------------------------------------*/
1137
 
1138
					// Adresse
1139
					((TextField<String>) hmAdresse.get("tfAdresse1")).setValue((String) personne.get("adresse_01"));
1140
 
1141
					// Complément
1142
					((TextField<String>) hmAdresse.get("tfAdresse2")).setValue((String) personne.get("adresse_02"));
1143
 
1144
					//Boite postale
1145
					((TextField<String>) hmAdresse.get("tfBoitePostale")).setValue((String) personne.get("bp"));
1146
 
1147
					//Pays
1148
					String strPays = personne.get("pays");
1149
					ComboBox<Valeur> cbPays = (ComboBox<Valeur>) hmAdresse.get("cbPays");
1150
 
1151
 
1152
					if (cbPays.getStore().findModel("nom", strPays) != null)	{
1153
						cbPays.setValue(cbPays.getStore().findModel("nom", strPays));
1154
					}	else	{
1155
						cbPays.setRawValue(strPays);
1156
					}
1157
 
1158
 
1159
					//Région
1160
					String strRegion = personne.get("region");
1161
					if ((strRegion!=null)&&(!strRegion.equals("")))	{
1162
						ComboBox<Valeur> cbRegion = (ComboBox<Valeur>) hmAdresse.get("cbRegion");
1163
						cbRegion.setVisible(true);
1164
 
1165
						if (cbRegion.getStore().findModel("nom", strRegion) != null)	{
1166
							cbRegion.setValue(cbRegion.getStore().findModel("nom", strRegion));
1167
						}	else	{
1168
							cbRegion.setRawValue(strRegion);
1169
						}
1170
					}
1171
 
1172
					//Cp
1173
					((TextField) hmAdresse.get("tfCodePostal")).setValue(personne.get("code_postal"));
1174
 
1175
					//Ville
1176
					((TextField) hmAdresse.get("tfVille")).setValue(personne.get("ville"));
1177
 
1178
 
456 gduche 1179
					((Button) hmIdentite.get("btnEnregistrerRevenir")).setEnabled(true);
1180
					((Button) hmIdentite.get("btnEnregistrer")).setEnabled(true);
1181
 
461 gduche 1182
					nouvellesDonnees = null;
386 gduche 1183
				} else {
1184
					Info.display("messages", info.getMessages().toString());
352 gduche 1185
				}
293 gduche 1186
		}
283 gduche 1187
 
1188
		if (nouvellesDonnees == null)
1189
		{
319 gduche 1190
			ComboBox cb= (ComboBox) hmIdentite.get("cbPrefixe");
293 gduche 1191
 
1192
			//Met à jour le nom Complet du formulaire
283 gduche 1193
			String valeurRetour = "";
1194
 
1195
			// Prefixe
1196
			String prefixe = "";
319 gduche 1197
			Valeur valPrefixe = (Valeur) ((ComboBox) hmIdentite.get("cbPrefixe")).getValue();
283 gduche 1198
 
1199
			if (valPrefixe != null)	{
1200
				prefixe = valPrefixe.getNom();
293 gduche 1201
			} else 	{
319 gduche 1202
				prefixe =  (String) ((ComboBox) hmIdentite.get("cbPrefixe")).getRawValue();
293 gduche 1203
			}
283 gduche 1204
 
293 gduche 1205
 
283 gduche 1206
			// Prénom
1207
			String prenom = (String) ((TextField) hmIdentite.get("tfPrenom")).getValue();
1208
 
1209
			// Nom
1210
			String nom = (String) ((TextField) hmIdentite.get("tfNom")).getValue();
1211
 
1212
			// Suffixe
1213
			String suffixe = "";
1214
			Valeur valSuffixe = (Valeur) ((ComboBox) hmIdentite.get("cbSuffixe")).getValue();
1215
 
1216
			if (valSuffixe != null)	{
1217
				suffixe = valSuffixe.getNom();
293 gduche 1218
			} else 	{
1219
				suffixe =  (String) ((ComboBox) hmIdentite.get("cbSuffixe")).getRawValue();
283 gduche 1220
			}
1221
 
1222
			// Mettre à jour la valeur
1223
			valeurRetour = prefixe + " " + prenom + " " + nom + " " + suffixe;
1224
			valeurRetour = valeurRetour.replaceAll("null", "");
1225
 
1226
			((LabelField) hmIdentite.get("nomComplet")).setValue(valeurRetour);
1227
 
1228
			if (!valeurRetour.trim().equals(""))	{
1229
				((LabelField) hmIdentite.get("nomComplet")).show();
1230
			} else {
1231
				((LabelField) hmIdentite.get("nomComplet")).hide();
1232
			}
1233
		}
338 gduche 1234
 
1235
		mediateur.masquerPopinChargement();
456 gduche 1236
 
461 gduche 1237
		if (this.mode.equals(MODE_AJOUTER))	{
456 gduche 1238
			((Button) hmIdentite.get("btnEnregistrerRevenir")).setEnabled(true);
1239
			((Button) hmIdentite.get("btnEnregistrer")).setEnabled(true);
1240
		}
127 gduche 1241
	}
1242
 
352 gduche 1243
	private HashMap<String, Valeur> hmCbSelectionnee = new HashMap();
293 gduche 1244
	public void remplirCombobox(String idComboBox, List liste, String hashMapId)	{
352 gduche 1245
 
293 gduche 1246
		HashMap hm = null;
1247
		if (hashMapId.equals("hmIdentite"))	{
1248
			hm = hmIdentite;
1249
		} else if (hashMapId.equals("hmAdresse")){
1250
			hm = hmAdresse;
1251
		} else {
1252
			hm = hmInfosNat;
1253
		}
1254
 
1255
		ListStore<Valeur> store = ((ComboBox) hm.get(idComboBox)).getStore();
376 gduche 1256
 
293 gduche 1257
		store.removeAll();
1258
		store.add(liste);
1259
		((ComboBox) hm.get(idComboBox)).setStore(store);
376 gduche 1260
 
293 gduche 1261
	}
130 gduche 1262
 
352 gduche 1263
 
376 gduche 1264
	public void ajouterTelephone(String strTelephone, String strValeurTypeTel, String idTel) 	{
352 gduche 1265
 
1266
 
1267
				//Ajout d'un champ à la liste
376 gduche 1268
				String strIdTelephone =  idTel + "##" + strTelephone + ";;";
352 gduche 1269
 
1270
				FieldSet fsContactTel = (FieldSet) hmIdentite.get("fsContactTel");
1271
 
356 gduche 1272
				LayoutContainer lcTelephone = new LayoutContainer();
1273
				lcTelephone.setLayout(new ColumnLayout());
1274
 
352 gduche 1275
				Text tTypeTelephone = new Text();
1276
				tTypeTelephone.setText(strValeurTypeTel+":");
1277
 
376 gduche 1278
				hmIdentite.put("type-" + strIdTelephone, tTypeTelephone);
356 gduche 1279
				lcTelephone.add(tTypeTelephone, new ColumnData(0.40));
352 gduche 1280
 
1281
				Text tTelephone = new Text();
1282
				tTelephone.setText(strTelephone);
376 gduche 1283
				hmIdentite.put("tel-" + strIdTelephone, tTelephone);
356 gduche 1284
				lcTelephone.add(tTelephone, new ColumnData(0.40));
352 gduche 1285
 
540 gduche 1286
				Button bSupprimer = new Button();
1287
				bSupprimer.setIcon(Images.ICONES.supprimer());
376 gduche 1288
				bSupprimer.setId(strIdTelephone);
352 gduche 1289
 
540 gduche 1290
				bSupprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
1291
						public void componentSelected(ButtonEvent ce) {
352 gduche 1292
 
488 gduche 1293
							String strIdTelephone = ce.getComponent().getId();
376 gduche 1294
							LayoutContainer lcContactTel = (LayoutContainer) hmIdentite.get("lc-"+strIdTelephone);
352 gduche 1295
 
376 gduche 1296
							lcContactTel.remove(hmIdentite.get("type-" + strIdTelephone));
1297
							hmIdentite.remove("type-" + strIdTelephone);
352 gduche 1298
 
376 gduche 1299
							lcContactTel.remove(hmIdentite.get("tel-" + strIdTelephone));
1300
							hmIdentite.remove("tel-" + strIdTelephone);
352 gduche 1301
 
488 gduche 1302
							lcContactTel.remove(ce.getComponent());
352 gduche 1303
 
356 gduche 1304
							FieldSet fsContactTel = (FieldSet) hmIdentite.get("fsContactTel");
1305
							fsContactTel.remove(lcContactTel);
1306
 
376 gduche 1307
							HiddenField<String> hfTelephone = (HiddenField) hmIdentite.get("hfTelephone");
1308
							String strValeurTelephone = hfTelephone.getValue();
1309
							strValeurTelephone = strValeurTelephone.replace(strIdTelephone, "");
1310
							hfTelephone.setValue(strValeurTelephone);
1311
 
352 gduche 1312
							layout();
1313
 
1314
						}
1315
				});
1316
 
356 gduche 1317
				lcTelephone.add(bSupprimer, new ColumnData(0.15));
352 gduche 1318
 
376 gduche 1319
				hmIdentite.put("lc-"+strIdTelephone, lcTelephone);
356 gduche 1320
				fsContactTel.add(lcTelephone);
1321
 
376 gduche 1322
				HiddenField<String> hfTelephone = (HiddenField) hmIdentite.get("hfTelephone");
1323
				String strValeurTelephone = hfTelephone.getValue();
1324
				if (strValeurTelephone==null)	{
1325
					strValeurTelephone = "";
1326
				}
1327
				strValeurTelephone += strIdTelephone;
1328
				hfTelephone.setValue(strValeurTelephone);
352 gduche 1329
 
1330
				layout();
1331
 
1332
 
1333
 
1334
 
1335
	}
1336
 
376 gduche 1337
	public void ajouterCourriel(String strEmail)	{
1338
 
1339
			TextField<String> tfCourriel = (TextField<String>) hmIdentite.get("tfCourriel");
1340
			tfCourriel.setValue("");
1341
 
1342
			//Ajouter adresse email
1343
			LayoutContainer lcCourrielContainer = (LayoutContainer) hmIdentite.get("lcCourrielContainer");
1344
 
1345
			LayoutContainer lcCourriel = new LayoutContainer();
1346
			lcCourriel.setLayout(new ColumnLayout());
1347
 
1348
			LabelField lfCourriel = new LabelField();
1349
			lfCourriel.setText(strEmail);
1350
 
1351
			lcCourriel.add(lfCourriel, new ColumnData(0.8));
1352
			hmIdentite.put("lc-" + strEmail, lcCourriel);
1353
 
1354
			//Bouton supprimer
540 gduche 1355
			Button btnSupprimerCourriel = new Button();
1356
			btnSupprimerCourriel.setIcon(Images.ICONES.supprimer());
376 gduche 1357
			btnSupprimerCourriel.setId(strEmail);
540 gduche 1358
			btnSupprimerCourriel.addSelectionListener(new SelectionListener<ButtonEvent>() {
376 gduche 1359
 
540 gduche 1360
				public void componentSelected(ButtonEvent ce) {
376 gduche 1361
					//Suppression de l'adresse email
488 gduche 1362
					String strEmail = ce.getComponent().getId();
376 gduche 1363
					LayoutContainer lcCourrielContainer = (LayoutContainer) hmIdentite.get("lcCourrielContainer");
1364
					LayoutContainer lcCourriel = (LayoutContainer) hmIdentite.get("lc-" + strEmail);
1365
					lcCourrielContainer.remove(lcCourriel);
1366
 
1367
					hmIdentite.remove("lc-" + strEmail);
1368
					hmIdentite.remove("email-" + strEmail);
1369
 
1370
						HiddenField<String> hfHiddenCourriel = (HiddenField) hmIdentite.get("hfHiddenCourriel");
1371
					String strValeurCourriel = hfHiddenCourriel.getValue();
1372
					strValeurCourriel = strValeurCourriel.replace(strEmail + ";;", "");
1373
					hfHiddenCourriel.setValue(strValeurCourriel);
1374
 
1375
				}
1376
 
1377
			});
1378
 
1379
			lcCourriel.add(btnSupprimerCourriel);
1380
 
1381
 
1382
 
1383
			lcCourrielContainer.add(lcCourriel);
1384
			hmIdentite.put("email-" + strEmail, lfCourriel);
1385
 
1386
			HiddenField<String> hfHiddenCourriel = (HiddenField) hmIdentite.get("hfHiddenCourriel");
1387
			String strHiddenCourrielValue = hfHiddenCourriel.getValue();
1388
			if (strHiddenCourrielValue == null) {
1389
				strHiddenCourrielValue = "";
1390
			}
1391
			hfHiddenCourriel.setRawValue(strHiddenCourrielValue + strEmail + ";;");
1392
 
1393
 
1394
			layout();
1395
 
1396
	}
1397
 
1398
	public void ajouterUrl(String strUrl)	{
1399
 
1400
		LayoutContainer lcUrlContainer  = (LayoutContainer) hmIdentite.get("lcUrlContainer");
1401
 
1402
		LayoutContainer lcUrl = new LayoutContainer();
1403
		lcUrl.setLayout(new ColumnLayout());
1404
		hmIdentite.put("lc-" + strUrl, lcUrl);
1405
 
1406
 
1407
		Text tUrl = new Text(strUrl);
1408
		hmIdentite.put("url-"+strUrl, tUrl);
1409
 
1410
		lcUrl.add(tUrl, new ColumnData(0.8));
1411
 
540 gduche 1412
		Button ibSupprimerUrl = new Button();
1413
		ibSupprimerUrl.setIcon(Images.ICONES.supprimer());
376 gduche 1414
		ibSupprimerUrl.setId(strUrl);
540 gduche 1415
		ibSupprimerUrl.addSelectionListener(new SelectionListener<ButtonEvent>() {
130 gduche 1416
 
540 gduche 1417
			public void componentSelected(ButtonEvent ce) {
376 gduche 1418
 
1419
				//Suppression url
488 gduche 1420
				String strUrl = ce.getComponent().getId();
376 gduche 1421
				LayoutContainer lcUrl = (LayoutContainer) hmIdentite.get("lc-" + strUrl);
1422
				LayoutContainer lcUrlContainer  = (LayoutContainer) hmIdentite.get("lcUrlContainer");
1423
 
1424
				lcUrlContainer.remove(lcUrl);
1425
 
386 gduche 1426
 
1427
				HiddenField<String> hfUrl = (HiddenField<String>) hmIdentite.get("hfUrl");
1428
				String strValeurUrl = hfUrl.getValue();
1429
				strValeurUrl = strValeurUrl.replace(strUrl, "");
1430
				hfUrl.setValue(strValeurUrl);
1431
 
376 gduche 1432
			}
1433
		});
1434
 
1435
		lcUrl.add(ibSupprimerUrl, new ColumnData(0.15));
1436
		lcUrlContainer.add(lcUrl);
1437
 
386 gduche 1438
		HiddenField<String> hfUrl = (HiddenField<String>) hmIdentite.get("hfUrl");
1439
		String strValeurUrl = hfUrl.getValue();
1440
		if (strValeurUrl == null)	{
1441
			strValeurUrl = "";
1442
		}
1443
 
1444
		strValeurUrl += strUrl + ";;";
1445
		hfUrl.setValue(strValeurUrl);
1446
 
376 gduche 1447
		layout();
1448
 
1449
 
1450
 
1451
	}
1452
 
386 gduche 1453
	public void ajouterUrlLogo(String strUrl)	{
1454
 
1455
		LayoutContainer lcUrlContainer  = (LayoutContainer) hmIdentite.get("lcAutreInformations2");
1456
 
1457
		LayoutContainer lcUrl = new LayoutContainer();
1458
		lcUrl.setLayout(new ColumnLayout());
1459
		hmIdentite.put("lc-" + strUrl, lcUrl);
1460
 
1461
 
1462
		Text tUrl = new Text(strUrl);
1463
		hmIdentite.put("url-"+strUrl, tUrl);
1464
 
1465
		lcUrl.add(tUrl, new ColumnData(0.8));
1466
 
540 gduche 1467
		Button ibSupprimerUrl = new Button();
1468
		ibSupprimerUrl.setIcon(Images.ICONES.supprimer());
386 gduche 1469
		ibSupprimerUrl.setId(strUrl);
540 gduche 1470
		ibSupprimerUrl.addSelectionListener(new SelectionListener<ButtonEvent>() {
386 gduche 1471
 
540 gduche 1472
			public void componentSelected(ButtonEvent ce) {
386 gduche 1473
 
1474
				//Suppression url
488 gduche 1475
				String strUrl = ce.getComponent().getId();
386 gduche 1476
				LayoutContainer lcUrl = (LayoutContainer) hmIdentite.get("lc-" + strUrl);
1477
				LayoutContainer lcUrlContainer  = (LayoutContainer) hmIdentite.get("lcAutreInformations2");
1478
 
1479
				lcUrlContainer.remove(lcUrl);
1480
 
1481
				HiddenField<String> hfUrlLogo = (HiddenField<String>) hmIdentite.get("hfUrlLogo");
1482
				String strValeurUrl = hfUrlLogo.getValue();
1483
				strValeurUrl = strUrl.replace(strUrl, "");
1484
 
1485
				hfUrlLogo.setValue(strValeurUrl);
1486
			}
1487
		});
1488
 
1489
		lcUrl.add(ibSupprimerUrl, new ColumnData(0.15));
1490
		lcUrlContainer.add(lcUrl);
1491
 
1492
		HiddenField<String> hfUrlLogo = (HiddenField<String>) hmIdentite.get("hfUrlLogo");
1493
		String strValeurUrl = hfUrlLogo.getValue();
1494
		if (strValeurUrl == null)	{
1495
			strValeurUrl = "";
1496
		}
1497
 
1498
		strValeurUrl += strUrl + ";;";
1499
 
1500
		hfUrlLogo.setValue(strValeurUrl);
1501
 
1502
		layout();
1503
	}
1504
 
376 gduche 1505
	public void reinitialiser()	{
1506
 
461 gduche 1507
		mediateur.afficherPopinChargement();
376 gduche 1508
 
1509
		binderPersonne(personneSauvegarde);
1510
		layout();
1511
 
1512
		mediateur.masquerPopinChargement();
1513
	}
1514
 
1515
 
1516
 
1517
	public void binderPersonne(Personne personne)	{
1518
 
1519
		binding = new FormBinding(this);
1520
 
1521
		personneSelectionnee = personne;
1522
		binding.autoBind();
1523
		binding.bind(personneSelectionnee);
1524
 
1525
		layout();
1526
	}
130 gduche 1527
 
376 gduche 1528
	/**
1529
	 * Enregistre les information de la personne en cours
1530
	 *
1531
	 */
1532
	public void enregistrer()	{
1533
 
1534
		LinkedList lstMessageErreur = new LinkedList<String>();
1535
 
456 gduche 1536
		ComboBox<Projet> cbProjets = (ComboBox<Projet>) hmIdentite.get("cbProjets");
1537
		Projet projet = cbProjets.getValue();
1538
		if (projet == null)	{
1539
			lstMessageErreur.add("Le projet n'a pas été renseigné");
1540
		}
461 gduche 1541
 
1542
		String strTfNom = ((TextField<String>) hmIdentite.get("tfNom")).getValue();
1543
		if ((strTfNom == null)||(strTfNom.trim().equals("")))	{
1544
			lstMessageErreur.add("Le nom n'a pas été saisi");
1545
		}
456 gduche 1546
 
1547
 
376 gduche 1548
		//Préparer les données
1549
		ComboBox combo = (ComboBox) hmIdentite.get("cbSexe");
1550
		Valeur valeur;
1551
		String strValeur = "";
1552
 
1553
		if (combo.getValue()!=null)	{
1554
			valeur = (Valeur) combo.getValue();
1555
			strValeur = valeur.getId();
1556
		}
1557
 
1558
		if (!strValeur.trim().equals(""))	{
1559
			personneSelectionnee.set("sexe", strValeur);
461 gduche 1560
		}
376 gduche 1561
 
1562
		strValeur = obtenirValeurCombo("cbPrefixe");
1563
		personneSelectionnee.set("ce_truk_prefix", strValeur);
1564
 
1565
		strValeur = obtenirValeurCombo("cbSuffixe");
1566
		personneSelectionnee.set("ce_truk_suffix", strValeur);
1567
 
1568
		personneSelectionnee.set("truk_courriel", ((HiddenField<String>) hmIdentite.get("hfHiddenCourriel")).getValue());
1569
 
386 gduche 1570
 
1571
		//Pour le nom complet, on enregistre dans la bdd la valeur du prefixe/suffixe et non l'id
1572
		String strPrefixe = "";
1573
		combo = (ComboBox) hmIdentite.get("cbPrefixe");
1574
		valeur = (Valeur) combo.getValue();
1575
		if (valeur != null)	{
1576
			strPrefixe = valeur.getNom();
1577
		} else {
1578
			strPrefixe = combo.getRawValue();
1579
		}
1580
 
1581
		String strSuffixe = "";
1582
		combo = (ComboBox) hmIdentite.get("cbSuffixe");
1583
		valeur = (Valeur) combo.getValue();
1584
		if (valeur != null)	{
456 gduche 1585
			strSuffixe = valeur.getNom() + " ";
386 gduche 1586
		} else {
456 gduche 1587
			strSuffixe = combo.getRawValue() +" ";
386 gduche 1588
		}
376 gduche 1589
 
456 gduche 1590
		personneSelectionnee.setFmtNomComplet(strPrefixe, strSuffixe);
376 gduche 1591
 
1592
 
456 gduche 1593
		DateField dfDateNaissance = (DateField) hmIdentite.get("dfDateNaissance");
1594
		Date naissanceDate = dfDateNaissance.getValue();
1595
		personneSelectionnee.setNaissanceDate(naissanceDate);
376 gduche 1596
 
456 gduche 1597
		Radio rbEstDecedee = (Radio) hmIdentite.get("rbEstDecedee");
1598
		if (rbEstDecedee.getValue().equals(true))	{
1599
 
1600
			DateField dfDecesDate = (DateField) hmIdentite.get("dfDateDeces");
1601
			Date decesDate = dfDecesDate.getValue();
1602
			if (decesDate == null)	{
1603
				decesDate = new Date();
1604
			}
1605
			personneSelectionnee.setDecesDate(decesDate);
1606
			personneSelectionnee.set("deces_lieu", ((TextField<String>) hmIdentite.get("tfLieuDeces")).getValue());
1607
		}
1608
 
1609
		personneSelectionnee.setDecesDate(new Date());
1610
 
376 gduche 1611
		strValeur = obtenirValeurCombo("cbPays");
1612
		personneSelectionnee.set("pays", strValeur);
1613
 
1614
		strValeur = obtenirValeurCombo("cbRegion");
1615
		personneSelectionnee.set("region", strValeur);
1616
 
1617
		personneSelectionnee.set("truk_telephone", ((HiddenField<String>) hmIdentite.get("hfTelephone")).getValue());
1618
 
386 gduche 1619
		String logoUrls = ((HiddenField<String>) hmIdentite.get("hfUrlLogo")).getValue();
1620
		if (logoUrls == null)	{
1621
			logoUrls = "";
1622
		}
1623
		personneSelectionnee.set("truk_logo", logoUrls);
376 gduche 1624
 
386 gduche 1625
		personneSelectionnee.set("truk_url", ((HiddenField) hmIdentite.get("hfUrl")).getValue());
376 gduche 1626
 
461 gduche 1627
		if (lstMessageErreur.size() == 0)	{
386 gduche 1628
			mediateur.enregistrerPersonne(this, personneSelectionnee);
456 gduche 1629
		} else {
1630
			String strMessagesErreur = "<span><br />";
386 gduche 1631
			Iterator<String> itMessagesErreur = lstMessageErreur.iterator();
1632
			while (itMessagesErreur.hasNext())	{
456 gduche 1633
				strMessagesErreur += "<br /> - " + itMessagesErreur.next();
386 gduche 1634
			}
456 gduche 1635
			strMessagesErreur += "</span>";
386 gduche 1636
 
1637
 			MessageBox.alert("Erreurs", "Les erreurs suivantes ont été commises : \n" + strMessagesErreur, null);
456 gduche 1638
		}
376 gduche 1639
	}
1640
 
1641
	private String obtenirValeurCombo(String strComboName)	{
1642
 
1643
		String strValeur = "";
1644
		Valeur valeur;
1645
 
1646
		ComboBox combo = (ComboBox) hmIdentite.get(strComboName);
1647
		if (combo == null)	{
1648
			combo = (ComboBox) hmAdresse.get(strComboName);
1649
		}
1650
		if (combo.getValue()!=null)	{
1651
			valeur = (Valeur) combo.getValue();
1652
			strValeur = valeur.getId();
1653
		} else {
1654
			strValeur = combo.getRawValue();
1655
		}
1656
 
1657
		return strValeur;
1658
	}
127 gduche 1659
}