Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
69 jpm 1
package org.tela_botanica.client.vues;
2
 
91 jpm 3
import java.util.ArrayList;
69 jpm 4
import java.util.Collections;
5
import java.util.Comparator;
91 jpm 6
import java.util.Iterator;
69 jpm 7
import java.util.List;
8
 
91 jpm 9
import org.tela_botanica.client.Mediateur;
10
import org.tela_botanica.client.Modele;
11
import org.tela_botanica.client.RegistreId;
69 jpm 12
import org.tela_botanica.client.interfaces.Rafraichissable;
91 jpm 13
import org.tela_botanica.client.modeles.Configuration;
100 jpm 14
import org.tela_botanica.client.modeles.InterneValeur;
15
import org.tela_botanica.client.modeles.InterneValeurListe;
91 jpm 16
import org.tela_botanica.client.modeles.Structure;
17
import org.tela_botanica.client.modeles.StructureListe;
18
import org.tela_botanica.client.modeles.Valeur;
19
import org.tela_botanica.client.modeles.ValeurListe;
69 jpm 20
 
91 jpm 21
import com.extjs.gxt.ui.client.Registry;
69 jpm 22
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
23
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
24
import com.extjs.gxt.ui.client.data.BasePagingLoader;
25
import com.extjs.gxt.ui.client.data.JsonReader;
26
import com.extjs.gxt.ui.client.data.ListLoadResult;
27
import com.extjs.gxt.ui.client.data.ModelData;
28
import com.extjs.gxt.ui.client.data.ModelType;
29
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
30
import com.extjs.gxt.ui.client.data.PagingLoadResult;
31
import com.extjs.gxt.ui.client.data.PagingLoader;
32
import com.extjs.gxt.ui.client.data.ScriptTagProxy;
100 jpm 33
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
34
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
69 jpm 35
import com.extjs.gxt.ui.client.store.ListStore;
36
import com.extjs.gxt.ui.client.widget.LayoutContainer;
100 jpm 37
import com.extjs.gxt.ui.client.widget.TabItem;
38
import com.extjs.gxt.ui.client.widget.TabPanel;
69 jpm 39
import com.extjs.gxt.ui.client.widget.button.Button;
40
import com.extjs.gxt.ui.client.widget.form.ComboBox;
100 jpm 41
import com.extjs.gxt.ui.client.widget.form.DateField;
42
import com.extjs.gxt.ui.client.widget.form.FieldSet;
69 jpm 43
import com.extjs.gxt.ui.client.widget.form.FormPanel;
44
import com.extjs.gxt.ui.client.widget.form.Radio;
45
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
46
import com.extjs.gxt.ui.client.widget.form.TextField;
47
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
100 jpm 48
import com.extjs.gxt.ui.client.widget.form.DateField.DateFieldMessages;
69 jpm 49
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
50
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
51
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
52
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
53
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
100 jpm 54
import com.extjs.gxt.ui.client.widget.layout.FormData;
69 jpm 55
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
91 jpm 56
import com.google.gwt.core.client.GWT;
100 jpm 57
import com.google.gwt.i18n.client.DateTimeFormat;
69 jpm 58
 
59
public class FormStructureVue extends LayoutContainer implements Rafraichissable {
60
 
91 jpm 61
	private Modele coelModele = null ;
62
	private ListStore<Valeur> magazinLstpr = null;
63
	private ComboBox<Valeur> comboLstpr = null;
64
	private ListStore<Valeur> magazinLstpu = null;
65
	private ComboBox<Valeur> comboLstpu = null;
100 jpm 66
	private ComboBox<InterneValeur> comboAcronyme = null;
67
	private TextField<String> ihChp = null;
68
	private TextField<String> mnhnChp = null;
69
	private ComboBox<InterneValeur> comboTypeStructure = null;
91 jpm 70
 
69 jpm 71
	public FormStructureVue() {
100 jpm 72
		//+-----------------------------------------------------------------------------------------------------------+
73
		// Initialisation de variables
69 jpm 74
		setLayout(new FitLayout());
91 jpm 75
		coelModele = Registry.get(RegistreId.MODELE);
76
 
100 jpm 77
		// Création de la disposition : FIELDSET
78
		FormLayout layoutFieldset = new FormLayout();
79
		layoutFieldset.setLabelWidth(200);
80
		layoutFieldset.setPadding(4);
81
 
82
		//+-----------------------------------------------------------------------------------------------------------+
69 jpm 83
		// Création du panneau Formulaire
84
		FormPanel panel = new FormPanel();
100 jpm 85
		panel.setFrame(true);
69 jpm 86
		panel.setIconStyle("icone-form-ajouter");
87
		panel.setCollapsible(false);
88
		panel.setHeading("Ajout d'une institution");
89
		panel.setButtonAlign(HorizontalAlignment.CENTER);
100 jpm 90
		panel.setLayout(new FlowLayout());
91
 
92
		// Création des onglets
93
		TabPanel onglets = new TabPanel();
94
		//tabs.setDeferredRender(false);
69 jpm 95
 
100 jpm 96
		//+-----------------------------------------------------------------------------------------------------------+
97
		// Onlget formulaire IDENTIFICATION
98
		TabItem identificationOnglet = new TabItem();
99
		identificationOnglet.setText("Identification");
100
		identificationOnglet.setLayout(new FormLayout());
69 jpm 101
 
100 jpm 102
		// Fieldset IDENTITÉ
103
		FieldSet fieldSetIdentite = new FieldSet();
104
		fieldSetIdentite.setHeading("Identité");
105
		fieldSetIdentite.setCollapsible(true);
106
		fieldSetIdentite.setLayout(layoutFieldset);
107
 
69 jpm 108
		TextField<String> nomStructureChp = new TextField<String>();
109
		nomStructureChp.setFieldLabel("Nom de la structure");
110
		nomStructureChp.setAllowBlank(false);
100 jpm 111
		nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");
112
		fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));
69 jpm 113
 
100 jpm 114
		// Création du sous-formulaire : Acronyme
115
		LayoutContainer ligne = new LayoutContainer();
116
		ligne.setLayout(new ColumnLayout());
117
		LayoutContainer gauche = new LayoutContainer();
118
		FormLayout layoutGauche = new FormLayout();
119
		layoutGauche.setLabelAlign(LabelAlign.LEFT);
120
		layoutGauche.setLabelWidth(200);
121
		layoutGauche.setPadding(0);
122
		gauche.setLayout(layoutGauche);
123
		LayoutContainer droite = new LayoutContainer();
124
		FormLayout layoutDroite = new FormLayout();
125
		layoutDroite.setLabelWidth(0);
126
		layoutDroite.setPadding(0);
127
		droite.setLayout(layoutDroite);
69 jpm 128
 
100 jpm 129
		ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();
130
		acronymes.add(InterneValeurListe.getTypeAcronyme());
69 jpm 131
 
100 jpm 132
		comboAcronyme = new ComboBox<InterneValeur>();
133
		comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");
134
		comboAcronyme.setFieldLabel("Acronymes");
135
		comboAcronyme.setDisplayField("nom");
136
		comboAcronyme.setStore(acronymes);
137
		comboAcronyme.setEditable(false);
138
		comboAcronyme.setTypeAhead(true);
139
		comboAcronyme.setTriggerAction(TriggerAction.ALL);
140
		comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
141
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
142
				String acronymeAbr = se.getSelectedItem().getAbr();
143
				if (acronymeAbr.equals("IH")) {
144
					mnhnChp.hide();
145
					ihChp.show();
146
				} else if (acronymeAbr.equals("MNHN")) {
147
					ihChp.hide();
148
					mnhnChp.show();
149
				} else if (acronymeAbr.equals("")) {
150
					ihChp.hide();
151
					mnhnChp.hide();
152
					comboAcronyme.clearSelections();
153
				}
154
			}
155
        });
156
		gauche.add(comboAcronyme);
157
 
158
		ihChp = new TextField<String>();
159
		//ihChp.setEmptyText("Index Herbariorum");
160
		ihChp.setLabelSeparator("");
161
		ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");
162
		ihChp.hide();
163
		droite.add(ihChp);
164
 
165
		mnhnChp = new TextField<String>();
166
		//mnhnChp.setEmptyText("MNHN");
167
		mnhnChp.setLabelSeparator("");
168
		mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");
169
		mnhnChp.hide();
170
		droite.add(mnhnChp);
171
 
172
		ligne.add(gauche, new ColumnData(0.5));
173
		ligne.add(droite, new ColumnData(0.5));
174
		fieldSetIdentite.add(ligne);
175
 
176
		// Création du sous-formulaire : Type de Structure
177
		LayoutContainer ligneTs = new LayoutContainer();
178
		ligneTs.setLayout(new ColumnLayout());
179
 
180
		LayoutContainer gaucheTs = new LayoutContainer();
181
		layoutGauche = new FormLayout();
182
		layoutGauche.setLabelAlign(LabelAlign.LEFT);
183
		layoutGauche.setLabelWidth(200);
184
		layoutGauche.setPadding(0);
185
		gaucheTs.setLayout(layoutGauche);
186
 
187
		LayoutContainer droiteTs = new LayoutContainer();
188
		layoutDroite = new FormLayout();
189
		layoutDroite.setLabelWidth(0);
190
		layoutDroite.setPadding(0);
191
		droiteTs.setLayout(layoutDroite);
192
 
193
		ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();
194
		typesStructure.add(InterneValeurListe.getTypeStructure());
195
 
196
		this.comboTypeStructure = new ComboBox<InterneValeur>();
197
		comboTypeStructure.setEmptyText("Sélectioner un type de structure...");
198
		comboTypeStructure.setFieldLabel("Statut des structures");
199
		comboTypeStructure.setDisplayField("nom");
200
		comboTypeStructure.setStore(typesStructure);
201
		comboTypeStructure.setEditable(false);
202
		comboTypeStructure.setTypeAhead(true);
203
		comboTypeStructure.setTriggerAction(TriggerAction.ALL);
204
		comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
205
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
206
				String typeAbr = se.getSelectedItem().getAbr();
207
				if (typeAbr.equals("stpu")) {
208
					comboLstpr.hide();
209
					comboLstpu.show();
210
				} else if (typeAbr.equals("stpr")) {
211
					comboLstpu.hide();
212
					comboLstpr.show();
213
				} else if (typeAbr.equals("")) {
214
					comboLstpr.hide();
215
					comboLstpu.hide();
216
					comboTypeStructure.clearSelections();
217
				}
218
			}
219
        });
220
		gaucheTs.add(comboTypeStructure);
221
 
91 jpm 222
		coelModele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpu"));
223
		magazinLstpu = new ListStore<Valeur>();
224
		magazinLstpu.add(new ArrayList<Valeur>());
225
		comboLstpu = new ComboBox<Valeur>();
100 jpm 226
		//comboLstpu.setFieldLabel("Statut des structures publiques");
227
		comboLstpu.setLabelSeparator("");
91 jpm 228
		comboLstpu.setDisplayField("nom");
100 jpm 229
		comboLstpu.setEditable(false);
91 jpm 230
		comboLstpu.setTriggerAction(TriggerAction.ALL);
231
		comboLstpu.setStore(magazinLstpu);
100 jpm 232
		comboLstpu.hide();
233
		droiteTs.add(comboLstpu);
69 jpm 234
 
91 jpm 235
		coelModele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpr"));
236
		magazinLstpr = new ListStore<Valeur>();
237
		magazinLstpr.add(new ArrayList<Valeur>());
238
		comboLstpr = new ComboBox<Valeur>();
100 jpm 239
		//comboLstpr.setFieldLabel("Statut des structures privées");
240
		comboLstpr.setLabelSeparator("");
91 jpm 241
		comboLstpr.setDisplayField("nom");
100 jpm 242
		comboLstpr.setEditable(false);
91 jpm 243
		comboLstpr.setTriggerAction(TriggerAction.ALL);
244
		comboLstpr.setStore(magazinLstpr);
100 jpm 245
		comboLstpr.hide();
246
		droiteTs.add(comboLstpr);
69 jpm 247
 
100 jpm 248
		ligneTs.add(gaucheTs, new ColumnData(0.5));
249
		ligneTs.add(droiteTs, new ColumnData(0.5));
250
		fieldSetIdentite.add(ligneTs);
251
 
252
		DateField dateFondationChp = new DateField();
253
		dateFondationChp.setFieldLabel("Date de fondation");
254
		dateFondationChp.getPropertyEditor().getFormat();
255
		dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
256
		dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
257
		fieldSetIdentite.add(dateFondationChp);
258
 
259
		identificationOnglet.add(fieldSetIdentite);
260
 
261
		// Fieldset ADRESSE
262
		LayoutContainer principalFdAdresse = new LayoutContainer();
263
		principalFdAdresse.setLayout(new ColumnLayout());
264
 
265
		LayoutContainer gaucheFdAdresse = new LayoutContainer();
266
		layoutGauche = new FormLayout();
267
		layoutGauche.setLabelAlign(LabelAlign.LEFT);
268
		layoutGauche.setLabelWidth(100);
269
		layoutGauche.setPadding(0);
270
		gaucheFdAdresse.setLayout(layoutGauche);
271
 
272
		LayoutContainer droiteFdAdresse = new LayoutContainer();
273
		layoutDroite = new FormLayout();
274
		layoutDroite.setLabelAlign(LabelAlign.LEFT);
275
		layoutDroite.setLabelWidth(100);
276
		layoutDroite.setPadding(0);
277
		droiteFdAdresse.setLayout(layoutDroite);
278
 
279
		FieldSet fieldSetAdresse = new FieldSet();
280
		fieldSetAdresse.setHeading("Adresse");
281
		fieldSetAdresse.setCollapsible(true);
282
 
283
		layoutFieldset = new FormLayout();
284
		layoutFieldset.setLabelWidth(100);
285
		layoutFieldset.setPadding(4);
286
		fieldSetAdresse.setLayout(layoutFieldset);
287
 
91 jpm 288
		TextField<String> adrChp = new TextField<String>();
289
		adrChp.setFieldLabel("Adresse");
100 jpm 290
		fieldSetAdresse.add(adrChp, new FormData(550, 0));
69 jpm 291
 
91 jpm 292
		TextField<String> cpChp = new TextField<String>();
293
		cpChp.setFieldLabel("Code postal");
100 jpm 294
		gaucheFdAdresse.add(cpChp);
69 jpm 295
 
91 jpm 296
		TextField<String> villeChp = new TextField<String>();
297
		villeChp.setFieldLabel("Ville");
100 jpm 298
		droiteFdAdresse.add(villeChp);
69 jpm 299
 
91 jpm 300
		TextField<String> regionChp = new TextField<String>();
301
		regionChp.setFieldLabel("Région");
100 jpm 302
		gaucheFdAdresse.add(regionChp);
91 jpm 303
 
304
		TextField<String> paysChp = new TextField<String>();
305
		paysChp.setFieldLabel("Pays");
100 jpm 306
		droiteFdAdresse.add(paysChp);
91 jpm 307
 
100 jpm 308
		principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));
309
		principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));
310
		fieldSetAdresse.add(principalFdAdresse);
311
		identificationOnglet.add(fieldSetAdresse);
312
 
313
		// Fieldset TÉLÉPHONE et EMAIL
314
 
315
		LayoutContainer principalFdTelMail = new LayoutContainer();
316
		principalFdTelMail.setLayout(new ColumnLayout());
317
 
318
		LayoutContainer gaucheFdTelMail = new LayoutContainer();
319
		layoutGauche = new FormLayout();
320
		layoutGauche.setLabelAlign(LabelAlign.LEFT);
321
		layoutGauche.setLabelWidth(100);
322
		layoutGauche.setPadding(0);
323
		gaucheFdTelMail.setLayout(layoutGauche);
324
 
325
		LayoutContainer droiteFdTelMail = new LayoutContainer();
326
		layoutDroite = new FormLayout();
327
		layoutDroite.setLabelAlign(LabelAlign.LEFT);
328
		layoutDroite.setLabelWidth(100);
329
		layoutDroite.setPadding(0);
330
		droiteFdTelMail.setLayout(layoutDroite);
331
 
332
		FieldSet fieldSetTelMail = new FieldSet();
333
		fieldSetTelMail.setHeading("Communication");
334
		fieldSetTelMail.setCollapsible(true);
335
 
336
		layoutFieldset = new FormLayout();
337
		layoutFieldset.setLabelWidth(200);
338
		layoutFieldset.setPadding(4);
339
		fieldSetTelMail.setLayout(layoutFieldset);
340
 
91 jpm 341
		TextField<String> telChp = new TextField<String>();
342
		telChp.setFieldLabel("Téléphone");
100 jpm 343
		gaucheFdTelMail.add(telChp);
91 jpm 344
 
345
		TextField<String> faxChp = new TextField<String>();
346
		faxChp.setFieldLabel("Fax");
100 jpm 347
		droiteFdTelMail.add(faxChp);
91 jpm 348
 
349
		TextField<String> emailChp = new TextField<String>();
350
		emailChp.setFieldLabel("Courriel");
351
		emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");
100 jpm 352
		gaucheFdTelMail.add(emailChp);
91 jpm 353
 
354
		TextField<String> urlChp = new TextField<String>();
355
		urlChp.setFieldLabel("Site web");
100 jpm 356
		droiteFdTelMail.add(urlChp);
91 jpm 357
 
100 jpm 358
		principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));
359
		principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));
360
		fieldSetTelMail.add(principalFdTelMail);
361
		identificationOnglet.add(fieldSetTelMail);
362
 
363
		onglets.add(identificationOnglet);
364
 
365
		//+-----------------------------------------------------------------------------------------------------------+
366
		// Onlget formulaire PERSONNEL
367
		TabItem personnelOnglet = new TabItem();
368
		personnelOnglet.setText("Personnel");
369
		personnelOnglet.setLayout(new FormLayout());
370
 
91 jpm 371
 
100 jpm 372
		onglets.add(personnelOnglet);
373
 
374
		//+-----------------------------------------------------------------------------------------------------------+
375
		// Onlget formulaire CONSERVATION
376
		TabItem conservationOnglet = new TabItem();
377
		conservationOnglet.setText("Conservation");
378
		conservationOnglet.setLayout(new FormLayout());
379
 
380
 
381
		onglets.add(conservationOnglet);
382
 
383
		//+-----------------------------------------------------------------------------------------------------------+
384
		// Onlget formulaire VALORISATION
385
		TabItem valorisationOnglet = new TabItem();
386
		valorisationOnglet.setText("Valorisation");
387
		valorisationOnglet.setLayout(new FormLayout());
388
 
389
 
390
		onglets.add(valorisationOnglet);
391
 
392
		//+-----------------------------------------------------------------------------------------------------------+
393
		// Gestion du FORMULAIRE GÉNÉRAL
394
		// Ajout du type
395
		LayoutContainer typeConteneur = new LayoutContainer();
396
		layoutDroite = new FormLayout();
397
		layoutDroite.setLabelWidth(50);
398
		layoutDroite.setPadding(5);
399
		typeConteneur.setLayout(layoutDroite);
400
 
69 jpm 401
		RadioGroup group = new RadioGroup();
402
		group.setFieldLabel("Type");
403
		Radio structureRadio = new Radio();
404
		structureRadio.setBoxLabel("Structure");
405
		structureRadio.setValue(true);
406
		group.add(structureRadio);
407
		Radio particulierRadio = new Radio();
408
		particulierRadio.setBoxLabel("Particulier");
409
		group.add(particulierRadio);
100 jpm 410
		typeConteneur.add(group);
411
		panel.add(typeConteneur);
69 jpm 412
 
100 jpm 413
		// Ajout des onglets
414
		panel.add(onglets);
69 jpm 415
 
416
		// Ajout des boutons au panneau formulaire
417
		Button annulerBtn = new Button("Annuler");
418
		panel.addButton(annulerBtn);
419
		Button validerBtn = new Button("Valider");
420
		panel.addButton(validerBtn);
421
 
422
		// Ajout du panneau Formulaire à la disposition générale
423
		add(panel);
424
	}
425
 
426
	public void rafraichir(Object nouvelleDonnees) {
91 jpm 427
		if (nouvelleDonnees instanceof ValeurListe) {
428
			ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees;
429
 
430
			List<Valeur> liste = new ArrayList<Valeur>();
431
			for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
432
				liste.add(listeValeurs.get(it.next()));
433
			}
434
			// Test pour savoir si la liste contient des éléments
435
			if (liste.size() > 0) {
436
				Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
437
				if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
438
					GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
439
					magazinLstpr.removeAll();
440
					magazinLstpr.add(liste);
441
					comboLstpr.setStore(magazinLstpr);
442
				}
443
				if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
444
					GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
445
					magazinLstpu.removeAll();
446
					magazinLstpu.add(liste);
447
					comboLstpu.setStore(magazinLstpu);
448
				}
449
			} else {
450
				GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
451
			}
452
		}
69 jpm 453
	}
100 jpm 454
 
69 jpm 455
}