Subversion Repositories eFlore/Applications.coel

Rev

Rev 280 | 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;
276 gduche 4
import java.util.HashMap;
283 gduche 5
import java.util.Iterator;
6
import java.util.List;
276 gduche 7
 
8
import org.tela_botanica.client.ComposantClass;
9
import org.tela_botanica.client.Mediateur;
10
import org.tela_botanica.client.RegistreId;
127 gduche 11
import org.tela_botanica.client.interfaces.Rafraichissable;
283 gduche 12
import org.tela_botanica.client.modeles.Configuration;
280 gduche 13
import org.tela_botanica.client.modeles.InterneValeur;
14
import org.tela_botanica.client.modeles.Valeur;
283 gduche 15
import org.tela_botanica.client.modeles.ValeurListe;
127 gduche 16
 
276 gduche 17
 
18
import com.extjs.gxt.ui.client.Registry;
19
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
283 gduche 20
import com.extjs.gxt.ui.client.Style.Scroll;
21
import com.extjs.gxt.ui.client.event.BaseEvent;
276 gduche 22
import com.extjs.gxt.ui.client.event.ComponentEvent;
23
import com.extjs.gxt.ui.client.event.KeyListener;
280 gduche 24
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
25
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
276 gduche 26
import com.extjs.gxt.ui.client.event.SelectionListener;
280 gduche 27
import com.extjs.gxt.ui.client.store.ListStore;
283 gduche 28
import com.extjs.gxt.ui.client.store.StoreListener;
29
 
276 gduche 30
import com.extjs.gxt.ui.client.widget.ContentPanel;
283 gduche 31
 
127 gduche 32
import com.extjs.gxt.ui.client.widget.LayoutContainer;
276 gduche 33
import com.extjs.gxt.ui.client.widget.TabItem;
34
import com.extjs.gxt.ui.client.widget.TabPanel;
283 gduche 35
 
280 gduche 36
import com.extjs.gxt.ui.client.widget.form.ComboBox;
37
import com.extjs.gxt.ui.client.widget.form.DateField;
276 gduche 38
import com.extjs.gxt.ui.client.widget.form.FieldSet;
39
import com.extjs.gxt.ui.client.widget.form.LabelField;
40
import com.extjs.gxt.ui.client.widget.form.TextField;
41
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
42
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
43
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
44
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
46
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
47
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
48
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
283 gduche 49
import com.google.gwt.user.client.Window;
276 gduche 50
import com.google.gwt.user.client.ui.Widget;
127 gduche 51
 
52
 
276 gduche 53
 
54
public class FormPersonneVue extends ContentPanel implements Rafraichissable {
55
 
56
 
57
	/*--------------------------------------------------------------------------------------
58
	 * 		VARIABLES
59
	 * -------------------------------------------------------------------------------------
60
	 */
61
 
62
	private TabItem tiIdentite, tiAdresses, tiInfosNat;
283 gduche 63
	private Mediateur mediateur = Registry.get(RegistreId.MEDIATEUR);
64
	private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
276 gduche 65
 
66
	/*--------------------------------------------------------------------------------------
67
	 * 		CONSTRUCTEUR
68
	 * -------------------------------------------------------------------------------------
69
	 */
70
	/**
71
	 * Constructeur du panneau
72
	 *
73
	 * Initialise le panneau et ajoute une barre d'outils à deux boutons (réinitialiser le
74
	 * formulaire et annuler la saisie).
75
	 *
76
	 * */
77
	public FormPersonneVue() {
78
 
283 gduche 79
		initialiserPanneau();
276 gduche 80
 
81
		ToolBar barreOutils = new ToolBar();
82
 
83
		ajouterBoutonEnregistrer(barreOutils);
84
		ajouterBoutonReinitialiser(barreOutils);
85
		ajouterBoutonAnnuler(barreOutils);
86
 
87
		setTopComponent(barreOutils);
88
 
89
		initialiserOnglets();
90
 
91
		creerComposantsIdentite();
280 gduche 92
 
276 gduche 93
	}
94
 
95
 
96
	/*---------------------------------------------------------------------------------------
97
	 * 		SOUS-METHODES
98
	 * --------------------------------------------------------------------------------------
99
	 */
100
	/**
101
	 * Inialise le panneau donné
102
	 *
103
	 * @param contentPanel le panneau à initialiser
104
	 * */
283 gduche 105
	public void initialiserPanneau()	{
276 gduche 106
 
283 gduche 107
		setLayout(new FitLayout());
108
		setIconStyle("icone-form-ajouter");
109
		setCollapsible(false);
110
		setHeading("Ajouter une personne");
111
		setButtonAlign(HorizontalAlignment.CENTER);
112
		setLayout(new FormLayout());
276 gduche 113
	}
114
 
115
	/**
116
	 * Crée les onglets identité, adresse et informations naturaliste
117
	 *
118
	 * */
119
	public void initialiserOnglets()	{
120
		//TabPanel
121
		TabPanel formulaireOnglets = new TabPanel();
122
 
123
		//Tab 1 : identite
124
		tiIdentite = new TabItem("Identité");
125
		tiIdentite.setLayout(new FormLayout());
283 gduche 126
		tiIdentite.setScrollMode(Scroll.AUTO);
276 gduche 127
		formulaireOnglets.add(tiIdentite);
128
 
129
 
283 gduche 130
 
276 gduche 131
		//Tab 2 : Adresse
132
		tiAdresses = new TabItem("Adresse");
133
		tiAdresses.setLayout(new FlowLayout());
283 gduche 134
		tiAdresses.setScrollMode(Scroll.AUTO);
276 gduche 135
		formulaireOnglets.add(tiAdresses);
136
 
137
		//Tab 3 : Infos Naturalistes
138
		tiInfosNat = new TabItem("Informations Naturalistes");
139
		tiInfosNat.setLayout(new FormLayout());
283 gduche 140
		tiInfosNat.setScrollMode(Scroll.AUTO);
276 gduche 141
		formulaireOnglets.add(tiInfosNat);
142
 
143
		add(formulaireOnglets);
144
	}
145
 
146
	/**
147
	 * Crée les widgets pour l'onglet identité
148
	 *
149
	 * */
150
 
151
	//hmIdentite référence par une chaine de caractère tous les composants de l'onglet Identite
152
	private HashMap<String, Widget>hmIdentite = new HashMap<String, Widget>();
153
 
154
	public void creerComposantsIdentite()	{
155
 
283 gduche 156
		// Gestion de l'affichage en colonnes
276 gduche 157
			// On crée 3 Layout container : un principal, un pour la colonne de gauche, un pour la colonne de droite
158
 
159
			// Gauche
160
			LayoutContainer left = new LayoutContainer();
161
			left.setLayout(new FormLayout());
162
 
163
			// Droite
164
			LayoutContainer right = new LayoutContainer();
165
			right.setLayout(new FormLayout());
166
 
167
			// Principal
168
			LayoutContainer main = new LayoutContainer();
169
			main.setLayout(new ColumnLayout());
170
 
171
			// Ajout au principal
172
			main.add(left, new ColumnData(.5));
173
			main.add(right, new ColumnData(.5));
174
 
175
 
176
			// Création des champs
177
 
178
			//FormLayout sera utilisé à plusieurs reprises
179
			FormLayout formLayout = new FormLayout();
180
 
181
			FieldSet fsNoms = new FieldSet();
182
			fsNoms.setHeading("Noms");
183
 
184
			formLayout.setLabelAlign(LabelAlign.LEFT);
185
			fsNoms.setLayout(formLayout);
186
 
187
			// Nom complet
188
			// Affiché que si valeurs saisies
189
			LabelField nomComplet = new LabelField();
190
			nomComplet.setFieldLabel("Nom complet:");
191
			nomComplet.hide();
192
			fsNoms.add(nomComplet);
193
 
194
			hmIdentite.put("nomComplet", nomComplet);
195
 
196
			//Préfixe
280 gduche 197
			ComboBox<Valeur> cbPrefix = new ComboBox<Valeur>();
198
			ListStore<Valeur> storePrefixe = new ListStore<Valeur>();
199
			cbPrefix.setStore(storePrefixe);
283 gduche 200
			cbPrefix.setDisplayField("nom");
201
			cbPrefix.setEmptyText("Choisissez le préfixe:");
280 gduche 202
			cbPrefix.setFieldLabel("Prefix");
203
			fsNoms.add(cbPrefix);
276 gduche 204
 
280 gduche 205
			hmIdentite.put("cbPrefix", cbPrefix);
276 gduche 206
 
283 gduche 207
			// Remplir la liste des préfixe
208
			mediateur.obtenirListeValeurEtRafraichir(this, "prefixe");
209
 
276 gduche 210
			//Prénom
211
			TextField<String> tfPrenom = new TextField<String>();
212
			tfPrenom.setFieldLabel("Prénom");
213
			fsNoms.add(tfPrenom);
214
 
215
			hmIdentite.put("tfPrenom", tfPrenom);
216
 
217
			//Nom
218
			TextField<String> tfNom = new TextField<String>();
219
			tfNom.setFieldLabel("Nom");
220
			fsNoms.add(tfNom);
221
 
222
			hmIdentite.put("tfNom", tfNom);
223
 
283 gduche 224
			//Suffixe
280 gduche 225
			ComboBox<Valeur> cbSuffixe = new ComboBox<Valeur>();
226
			ListStore<Valeur> storeSuffixe = new ListStore<Valeur>();
227
			cbSuffixe.setStore(storeSuffixe);
228
			cbSuffixe.setFieldLabel("Suffixe");
283 gduche 229
			cbSuffixe.setDisplayField("nom");
230
			cbSuffixe.setEmptyText("Choisissez un suffixe:");
280 gduche 231
			fsNoms.add(cbSuffixe);
276 gduche 232
 
280 gduche 233
			hmIdentite.put("cbSuffixe", cbSuffixe);
283 gduche 234
 
235
			// Remplir la liste des suffixes:
236
			mediateur.obtenirListeValeurEtRafraichir(this, "suffixes");
237
 
276 gduche 238
			// Nom : autre
239
			TextField<String> tfNomAutre = new TextField();
240
			tfNomAutre.setFieldLabel("Autres noms");
241
			fsNoms.add(tfNomAutre);
242
 
243
			hmIdentite.put("tfNomAutre", tfNomAutre);
244
 
245
			//Abréviation
246
			TextField<String> tfAbreviation = new TextField<String>();
247
			tfAbreviation.setFieldLabel("Abréviation");
248
			fsNoms.add(tfAbreviation);
249
 
250
			hmIdentite.put("tfAbreviation", tfAbreviation);
251
 
252
			//Abréviation autres
253
			TextField<String> tfAbreviationAutre = new TextField<String>();
254
			tfAbreviationAutre.setFieldLabel("Autres Abrév.");
255
			fsNoms.add(tfAbreviationAutre);
256
 
257
			hmIdentite.put("tfAbreviation", tfAbreviation);
258
 
259
 
260
			left.add(fsNoms);
261
 
262
			// Naissance & décès
263
			FieldSet fsVie = new FieldSet();
264
			fsVie.setHeading("Vie");
265
 
266
			formLayout = new FormLayout();
280 gduche 267
			formLayout.setLabelAlign(LabelAlign.TOP);
276 gduche 268
			fsVie.setLayout(formLayout);
269
 
270
			// Date naissance
280 gduche 271
			DateField dfDateNaissance = new DateField();
276 gduche 272
 
280 gduche 273
			dfDateNaissance.setFieldLabel("Date de naissance");
274
			fsVie.add(dfDateNaissance);
276 gduche 275
 
280 gduche 276
			hmIdentite.put("dfDateNaissance", dfDateNaissance);
276 gduche 277
 
280 gduche 278
			// Lieu naissance
279
			TextField<String> tfLieuNaissance = new TextField();
280
			tfLieuNaissance.setFieldLabel("Lieu de naissance");
281
			fsVie.add(tfLieuNaissance);
282
 
283
			hmIdentite.put("tfLieuNaissance", tfLieuNaissance);
284
 
285
			// Date décès
286
			DateField dfDateDeces = new DateField();
287
			dfDateDeces.setFieldLabel("Date de décès");
288
			fsVie.add(dfDateDeces);
289
 
290
			hmIdentite.put("dfDateDeces", dfDateDeces);
291
 
292
			// Lieu décès
293
			TextField<String> tfLieuDeces = new TextField();
294
			tfLieuDeces.setFieldLabel("Lieu de décès");
295
			fsVie.add(tfLieuDeces);
296
 
297
			hmIdentite.put("tfLieuDeces", tfLieuDeces);
298
 
299
			left.add(fsVie);
300
 
276 gduche 301
			tiIdentite.add(main);
302
 
303
 
304
			// Ajout des évènements saisi
305
			KeyListener klNoms = new KeyListener()	{
306
				public void componentKeyUp(ComponentEvent ev)	{
283 gduche 307
					rafraichir(null);
280 gduche 308
				}
276 gduche 309
			};
310
 
283 gduche 311
			SelectionChangedListener<InterneValeur> selectionChange = new SelectionChangedListener<InterneValeur>() {
312
				public void selectionChanged(SelectionChangedEvent se) {
313
						rafraichir(null);
314
					}
315
			};
316
 
317
			cbPrefix.addSelectionChangedListener(selectionChange);
280 gduche 318
			cbPrefix.addKeyListener(klNoms);
276 gduche 319
			tfPrenom.addKeyListener(klNoms);
320
			tfNom.addKeyListener(klNoms);
283 gduche 321
			cbSuffixe.addSelectionChangedListener(selectionChange);
276 gduche 322
 
323
	}
324
 
325
	/**
326
	 * Ajouter le bouton réinitialiser à la barre d'outils donnée
327
	 *
328
	 * @param barreOutils la barre d'outils à modifier
329
	 * */
330
	public static void ajouterBoutonReinitialiser(ToolBar barreOutils)	{
331
 
332
		//Le bouton réintialiser recharge la page sans sauvegarder les informations
333
		TextToolItem reinitialiser = new TextToolItem("Réinitialiser");
334
		reinitialiser.setIconStyle(ComposantClass.ICONE_RAFRAICHIR);
335
		reinitialiser.addSelectionListener(new SelectionListener<ComponentEvent>() {
336
			public void componentSelected(ComponentEvent ce) {
337
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicAjouterPersonne();
338
			}
339
		});
340
		barreOutils.add(reinitialiser);
341
	}
342
 
343
	/**
344
	 * Ajouter le bouton Sauvegarder à la barre d'outils donnée
345
	 *
346
	 * @param barreOutils la barre d'outils à modifier
347
	 * */
348
	public static void ajouterBoutonEnregistrer(ToolBar barreOutils)	{
349
 
350
		//Le bouton réintialiser recharge la page sans sauvegarder les informations
351
		TextToolItem reinitialiser = new TextToolItem("Enregistrer");
352
		reinitialiser.setIconStyle(ComposantClass.ICONE_PREFERENCE);
353
		reinitialiser.addSelectionListener(new SelectionListener<ComponentEvent>() {
354
			public void componentSelected(ComponentEvent ce) {
355
				// TODO : Enregistrer le formulaire
356
			}
357
		});
358
		barreOutils.add(reinitialiser);
359
	}
360
 
361
	/**
362
	 * Ajouter le bouton annuler à la barre d'outils donnée
363
	 *
364
	 * @param barreOutils la barre d'outils à modifier
365
	 * */
366
	public static void ajouterBoutonAnnuler(ToolBar barreOutils)	{
367
 
368
		// Le bouton annuler ne sauvegarde pas les informations et renvoie vers la page précédente
369
		TextToolItem annuler = new TextToolItem("Annuler");
370
		annuler.addSelectionListener(new SelectionListener<ComponentEvent>() {
371
			public void componentSelected(ComponentEvent ce) {
372
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicMenu("Personnes");
373
			}
374
		});
375
		annuler.setIconStyle(ComposantClass.ICONE_SUPPRIMER);
376
		barreOutils.add(annuler);
377
	}
378
 
379
 
380
 
381
	/*---------------------------------------------------------------------------------------
382
	 * 		RAFRAICHISSEMENT DU PANNEAU
383
	 * --------------------------------------------------------------------------------------
384
	 */
283 gduche 385
	public void rafraichir(Object nouvellesDonnees) {
386
		if (nouvellesDonnees instanceof ValeurListe){
387
 
388
 
389
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
390
 
391
 
392
 
393
			// Créer une liste de valeurs
394
			List<Valeur> liste = new ArrayList<Valeur>();
395
			for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
396
				liste.add(listeValeurs.get(it.next()));
397
			}
398
 
399
			if (listeValeurs.getId().equals(config.getListeId("prefixe")))	{
400
 
401
				//Remplir la liste Prefixe
402
 
403
 
404
				ListStore<Valeur> stPrefixe = ((ComboBox) hmIdentite.get("cbPrefix")).getStore();
405
				stPrefixe.removeAll();
406
				stPrefixe.add(liste);
407
				((ComboBox) hmIdentite.get("cbPrefix")).setStore(stPrefixe);
408
 
409
 
410
			} else if (listeValeurs.getId().equals(config.getListeId("suffixes"))) {
411
 
412
				//Remplir la liste Suffixe
413
				ListStore<Valeur> stSuffix = ((ComboBox) hmIdentite.get("cbSuffixe")).getStore();
414
				stSuffix.removeAll();
415
				stSuffix.add(liste);
416
				((ComboBox) hmIdentite.get("cbSuffixe")).setStore(stSuffix);
417
 
418
 
419
			}
420
		}
421
 
422
		if (nouvellesDonnees == null)
423
		{
424
			ComboBox cb= (ComboBox) hmIdentite.get("cbPrefix");
425
			/*
426
			 * Met à jour le nom Complet du formulaire
427
			 * */
428
			String valeurRetour = "";
429
 
430
			// Prefixe
431
			String prefixe = "";
432
			Valeur valPrefixe = (Valeur) ((ComboBox) hmIdentite.get("cbPrefix")).getValue();
433
 
434
			if (valPrefixe != null)	{
435
				prefixe = valPrefixe.getNom();
436
			}
437
 
438
			// Prénom
439
			String prenom = (String) ((TextField) hmIdentite.get("tfPrenom")).getValue();
440
 
441
			// Nom
442
			String nom = (String) ((TextField) hmIdentite.get("tfNom")).getValue();
443
 
444
			// Suffixe
445
			String suffixe = "";
446
			Valeur valSuffixe = (Valeur) ((ComboBox) hmIdentite.get("cbSuffixe")).getValue();
447
 
448
			if (valSuffixe != null)	{
449
				suffixe = valSuffixe.getNom();
450
			}
451
 
452
			// Mettre à jour la valeur
453
			valeurRetour = prefixe + " " + prenom + " " + nom + " " + suffixe;
454
			valeurRetour = valeurRetour.replaceAll("null", "");
455
 
456
			((LabelField) hmIdentite.get("nomComplet")).setValue(valeurRetour);
457
 
458
			if (!valeurRetour.trim().equals(""))	{
459
				((LabelField) hmIdentite.get("nomComplet")).show();
460
			} else {
461
				((LabelField) hmIdentite.get("nomComplet")).hide();
462
			}
463
		}
127 gduche 464
	}
465
 
130 gduche 466
 
467
 
468
 
127 gduche 469
}