Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
687 jp_milcent 1
package org.tela_botanica.client.vues;
2
 
3
import org.tela_botanica.client.Mediateur;
859 jpm 4
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
687 jp_milcent 5
import org.tela_botanica.client.composants.ChampMultiValeurs;
859 jpm 6
import org.tela_botanica.client.composants.ConteneurMultiChamps;
687 jp_milcent 7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.Collection;
9
import org.tela_botanica.client.modeles.CollectionListe;
10
import org.tela_botanica.client.modeles.Projet;
11
import org.tela_botanica.client.modeles.ProjetListe;
12
import org.tela_botanica.client.modeles.Structure;
13
import org.tela_botanica.client.modeles.StructureListe;
14
import org.tela_botanica.client.modeles.Valeur;
15
import org.tela_botanica.client.modeles.ValeurListe;
858 jpm 16
 
687 jp_milcent 17
import com.extjs.gxt.ui.client.store.ListStore;
859 jpm 18
import com.extjs.gxt.ui.client.util.Margins;
19
import com.extjs.gxt.ui.client.widget.Text;
687 jp_milcent 20
import com.extjs.gxt.ui.client.widget.form.ComboBox;
21
import com.extjs.gxt.ui.client.widget.form.Field;
22
import com.extjs.gxt.ui.client.widget.form.FieldSet;
23
import com.extjs.gxt.ui.client.widget.form.HiddenField;
859 jpm 24
import com.extjs.gxt.ui.client.widget.form.NumberField;
687 jp_milcent 25
import com.extjs.gxt.ui.client.widget.form.TextArea;
862 jpm 26
import com.extjs.gxt.ui.client.widget.form.TextField;
687 jp_milcent 27
import com.extjs.gxt.ui.client.widget.form.Validator;
28
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
29
import com.extjs.gxt.ui.client.widget.layout.FormData;
859 jpm 30
import com.extjs.gxt.ui.client.widget.layout.HBoxLayoutData;
687 jp_milcent 31
import com.google.gwt.core.client.GWT;
859 jpm 32
import com.google.gwt.i18n.client.NumberFormat;
687 jp_milcent 33
 
34
public class CollectionFormGeneral extends FormulaireOnglet implements Rafraichissable {
35
 
36
	private HiddenField<String> idCollectionChp;
37
 
859 jpm 38
	private ComboBox<Projet> projetsCombo = null;
39
	private ComboBox<Structure> structuresCombo = null;
40
	private ComboBox<Collection> collectionsCombo = null;
858 jpm 41
 
862 jpm 42
	private ChampComboBoxListeValeurs groupementPrincipeCombo;
43
	private ChampMultiValeurs lieuCouvertureChp = null;
687 jp_milcent 44
 
859 jpm 45
	private ChampComboBoxListeValeurs specimenTypeCombo = null;
46
	private ChampComboBoxListeValeurs precisionTypeNbreCombo = null;
47
	private NumberField nbreTypeChp = null;
48
	private ChampComboBoxListeValeurs classementSpecimenTypeCombo;
858 jpm 49
 
862 jpm 50
	private ComboBox<Valeur> typeDepotCombo = null;
865 jpm 51
	private TextField<String> coteChp = null;
52
	private ChampMultiValeurs idAlternatifsChp = null;
53
	private ChampMultiValeurs nomsAlternatifsChp = null;
54
	private ChampMultiValeurs codesAlternatifsChp = null;
862 jpm 55
 
865 jpm 56
	private TextArea descriptionSpecialisteChp = null;
57
	private TextArea descriptionChp = null;
58
	private TextArea historiqueChp = null;
59
	private ChampMultiValeurs urlsChp = null;
862 jpm 60
 
865 jpm 61
	private ChampComboBoxListeValeurs butRealisationCombo = null;
862 jpm 62
 
687 jp_milcent 63
	public CollectionFormGeneral(Formulaire formulaireCourrant) {
64
		initialiserOnglet(formulaireCourrant);
65
		setId("general");
66
		setText(Mediateur.i18nC.collectionGeneral());
67
 
68
		creerChampsCache();
69
		creerFieldsetLiaison();
70
		creerFieldsetAdministratif();
71
		creerFieldsetDescription();
858 jpm 72
		creerFieldsetCouverture();
859 jpm 73
		creerFieldsetType();
687 jp_milcent 74
	}
75
 
76
	private void creerChampsCache() {
77
		// Champs cachés
78
		idCollectionChp = new HiddenField<String>();
79
		this.add(idCollectionChp);
80
	}
81
 
82
	private void creerFieldsetLiaison() {
83
		FieldSet liaisonFieldSet = new FieldSet();
84
		liaisonFieldSet.setHeading(i18nC.liaisonTitreCollection());
85
		liaisonFieldSet.setCollapsible(true);
858 jpm 86
		liaisonFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 87
 
88
		projetsCombo = new ComboBox<Projet>();
89
		projetsCombo.setTabIndex(tabIndex++);
90
		projetsCombo.setFieldLabel(i18nC.projetChamp());
91
		projetsCombo.setDisplayField("nom");
92
		projetsCombo.setForceSelection(true);
93
		projetsCombo.setValidator(new Validator() {
94
			@Override
95
			public String validate(Field<?> field, String value) {
96
				String retour = null;
97
				if (field.getRawValue().equals("")) {
98
					field.setValue(null);
859 jpm 99
				} else if (projetsCombo.getStore().findModel("nom", field.getRawValue()) == null) {
687 jp_milcent 100
					String contenuBrut = field.getRawValue();
101
					field.setValue(null);
102
					field.setRawValue(contenuBrut);
103
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
104
				}
105
				return retour;
106
			}
107
		});
108
		projetsCombo.setTriggerAction(TriggerAction.ALL);
859 jpm 109
		projetsCombo.setStore(new ListStore<Projet>());
687 jp_milcent 110
		liaisonFieldSet.add(projetsCombo, new FormData(450, 0));
111
		mediateur.selectionnerProjets(this);
112
 
113
		structuresCombo = new ComboBox<Structure>();
114
		structuresCombo.setTabIndex(tabIndex++);
115
		structuresCombo.setFieldLabel(i18nC.lienStructureCollection());
116
		structuresCombo.setDisplayField("nom");
117
		structuresCombo.setForceSelection(true);
118
		structuresCombo.setValidator(new Validator() {
119
			@Override
120
			public String validate(Field<?> field, String value) {
121
				String retour = null;
122
				if (field.getRawValue().equals("")) {
123
					field.setValue(null);
859 jpm 124
				} else if (structuresCombo.getStore().findModel("nom", field.getRawValue()) == null) {
687 jp_milcent 125
					String contenuBrut = field.getRawValue();
126
					field.setValue(null);
127
					field.setRawValue(contenuBrut);
128
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
129
				}
130
				return retour;
131
			}
132
		});
133
		structuresCombo.setTriggerAction(TriggerAction.ALL);
859 jpm 134
		structuresCombo.setStore(new ListStore<Structure>());
687 jp_milcent 135
		liaisonFieldSet.add(structuresCombo, new FormData(450, 0));
775 jpm 136
		mediateur.selectionnerStructureParProjet(this, null);
687 jp_milcent 137
 
138
		collectionsCombo = new ComboBox<Collection>();
139
		collectionsCombo.setTabIndex(tabIndex++);
140
		collectionsCombo.setFieldLabel(i18nC.lienMereCollection());
141
		collectionsCombo.setDisplayField("nom");
142
		collectionsCombo.setForceSelection(true);
143
		collectionsCombo.setValidator(new Validator() {
144
			@Override
145
			public String validate(Field<?> field, String value) {
146
				String retour = null;
147
				if (field.getRawValue().equals("")) {
148
					field.setValue(null);
859 jpm 149
				} else if (collectionsCombo.getStore().findModel("nom", field.getRawValue()) == null) {
687 jp_milcent 150
					String contenuBrut = field.getRawValue();
151
					field.setValue(null);
152
					field.setRawValue(contenuBrut);
153
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
154
				}
155
				GWT.log("Validation : "+field.getRawValue()+"-"+field.getValue(), null);
156
				return retour;
157
			}
158
		});
159
		collectionsCombo.setTriggerAction(TriggerAction.ALL);
859 jpm 160
		collectionsCombo.setStore(new ListStore<Collection>());
687 jp_milcent 161
		liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));
775 jpm 162
		mediateur.selectionnerCollectionParProjet(this, null);
687 jp_milcent 163
 
164
		this.add(liaisonFieldSet);
165
	}
166
 
167
	private void creerFieldsetAdministratif() {
168
		// Fieldset ADMINISTRATIF
169
		FieldSet administratifFieldSet = new FieldSet();
170
		administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());
171
		administratifFieldSet.setCollapsible(true);
858 jpm 172
		administratifFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 173
 
859 jpm 174
		typeDepotCombo = new ChampComboBoxListeValeurs(i18nC.typeDepot(), "typeDepot", tabIndex++);
175
		administratifFieldSet.add(typeDepotCombo);
862 jpm 176
 
865 jpm 177
		coteChp = new TextField<String>();
178
		coteChp.setTabIndex(tabIndex++);
179
		coteChp.setFieldLabel(i18nC.cote());
180
		administratifFieldSet.add(coteChp, new FormData(450, 0));
862 jpm 181
 
182
		idAlternatifsChp = new ChampMultiValeurs(i18nC.idAlternatifCollection());
183
		administratifFieldSet.add(idAlternatifsChp);
184
 
185
		nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
687 jp_milcent 186
		administratifFieldSet.add(nomsAlternatifsChp);
187
 
862 jpm 188
		codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
687 jp_milcent 189
		administratifFieldSet.add(codesAlternatifsChp);
190
 
191
		this.add(administratifFieldSet);
192
	}
193
 
194
	private void creerFieldsetDescription() {
195
		// Fieldset DESCRIPTION
862 jpm 196
		FieldSet descriptionFieldSet = new FieldSet();
687 jp_milcent 197
		descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
198
		descriptionFieldSet.setCollapsible(true);
858 jpm 199
		descriptionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 200
 
862 jpm 201
		descriptionChp = new TextArea();
687 jp_milcent 202
		descriptionChp.setFieldLabel(i18nC.description());
203
		descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
204
 
862 jpm 205
		descriptionSpecialisteChp = new TextArea();
687 jp_milcent 206
		descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
207
		descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
208
 
862 jpm 209
		historiqueChp = new TextArea();
687 jp_milcent 210
		historiqueChp.setFieldLabel(i18nC.historique());
211
		descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
212
 
862 jpm 213
		urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
687 jp_milcent 214
		descriptionFieldSet.add(urlsChp);
215
 
216
		this.add(descriptionFieldSet);
217
	}
218
 
858 jpm 219
	private void creerFieldsetCouverture() {
220
		FieldSet couvertureFieldSet = new FieldSet();
221
		couvertureFieldSet.setHeading("Couvertures");
222
		couvertureFieldSet.setCollapsible(true);
223
		couvertureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
224
 
862 jpm 225
		groupementPrincipeCombo = new ChampComboBoxListeValeurs(i18nC.groupementPrincipeCollection(), "groupementPrincipe", tabIndex++);
226
		groupementPrincipeCombo.setToolTip(i18nC.groupementPrincipeCollectionInfo());
227
		couvertureFieldSet.add(groupementPrincipeCombo);
858 jpm 228
 
862 jpm 229
		butRealisationCombo = new ChampComboBoxListeValeurs(i18nC.butCollection(), "realisationBut", tabIndex++);
230
		couvertureFieldSet.add(butRealisationCombo);
231
 
232
		lieuCouvertureChp = new ChampMultiValeurs(i18nC.lieuCouvertureCollection());
233
		couvertureFieldSet.add(lieuCouvertureChp);
234
 
858 jpm 235
		this.add(couvertureFieldSet);
236
	}
237
 
859 jpm 238
	private void creerFieldsetType() {
239
		FieldSet typeFieldSet = new FieldSet();
240
		typeFieldSet.setHeading("Spécimens «types»");
241
		typeFieldSet.setCollapsible(true);
242
		typeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
243
 
244
		specimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.specimenTypeCollection(), "onpi", tabIndex++);
245
		typeFieldSet.add(specimenTypeCombo);
246
 
247
		ConteneurMultiChamps nbreTypeConteneur = new ConteneurMultiChamps(i18nC.nbreSpecimenTypeCollection());
248
 
249
		nbreTypeChp = new NumberField();
250
		nbreTypeChp.setFormat(NumberFormat.getFormat("#"));
251
		nbreTypeConteneur.ajouterChamp(nbreTypeChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
252
 
253
		precisionTypeNbreCombo = new ChampComboBoxListeValeurs(null, "ea");
254
		precisionTypeNbreCombo.setTrie("id_valeur");
255
		precisionTypeNbreCombo.setEmptyText(i18nC.precisionNbreSpecimenTypeCollectionChpVide());
256
		nbreTypeConteneur.ajouterChamp(precisionTypeNbreCombo);
257
 
258
		typeFieldSet.add(nbreTypeConteneur);
259
 
260
		classementSpecimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.classementSpecimenTypeCollection(), "typeClassement", tabIndex++);
261
		typeFieldSet.add(classementSpecimenTypeCombo);
262
 
263
		Text infoType = new Text(i18nC.specimenTypeCollectionInfo());
264
		typeFieldSet.add(infoType);
265
 
266
		this.add(typeFieldSet);
267
	}
268
 
687 jp_milcent 269
	public void rafraichir(Object nouvellesDonnees) {
862 jpm 270
		if (nouvellesDonnees instanceof ProjetListe) {
687 jp_milcent 271
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
831 jpm 272
			Formulaire.rafraichirComboBox(projets, projetsCombo);
687 jp_milcent 273
		} else if (nouvellesDonnees instanceof StructureListe) {
274
			StructureListe structures = (StructureListe) nouvellesDonnees;
831 jpm 275
			Formulaire.rafraichirComboBox(structures, structuresCombo);
687 jp_milcent 276
		} else if (nouvellesDonnees instanceof CollectionListe) {
277
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
831 jpm 278
			Formulaire.rafraichirComboBox(collections, collectionsCombo);
858 jpm 279
		} else if (nouvellesDonnees instanceof ValeurListe) {
280
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
281
			rafraichirValeurListe(listeValeurs);
687 jp_milcent 282
		} else {
283
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
284
		}
285
	}
286
 
287
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
858 jpm 288
		if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
831 jpm 289
			Formulaire.rafraichirComboBox(listeValeurs, typeDepotCombo);
687 jp_milcent 290
		} else {
291
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
292
		}
293
	}
294
 
703 jp_milcent 295
 
687 jp_milcent 296
 
297
}