Subversion Repositories eFlore/Applications.coel

Rev

Rev 859 | Rev 865 | 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;
51
	private TextField<String> guidChp;
52
	private ChampMultiValeurs idAlternatifsChp;
53
	private ChampMultiValeurs nomsAlternatifsChp;
54
	private ChampMultiValeurs codesAlternatifsChp;
55
 
56
	private TextArea descriptionSpecialisteChp;
57
	private TextArea descriptionChp;
58
	private TextArea historiqueChp;
59
	private ChampMultiValeurs urlsChp;
60
 
61
	private ChampComboBoxListeValeurs butRealisationCombo;
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
 
177
		guidChp = new TextField<String>();
178
		guidChp.setFieldLabel(i18nC.guidCollection());
179
		administratifFieldSet.add(guidChp);
180
 
181
		idAlternatifsChp = new ChampMultiValeurs(i18nC.idAlternatifCollection());
182
		administratifFieldSet.add(idAlternatifsChp);
183
 
184
		nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
687 jp_milcent 185
		administratifFieldSet.add(nomsAlternatifsChp);
186
 
862 jpm 187
		codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
687 jp_milcent 188
		administratifFieldSet.add(codesAlternatifsChp);
189
 
190
		this.add(administratifFieldSet);
191
	}
192
 
193
	private void creerFieldsetDescription() {
194
		// Fieldset DESCRIPTION
862 jpm 195
		FieldSet descriptionFieldSet = new FieldSet();
687 jp_milcent 196
		descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
197
		descriptionFieldSet.setCollapsible(true);
858 jpm 198
		descriptionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 199
 
862 jpm 200
		descriptionChp = new TextArea();
687 jp_milcent 201
		descriptionChp.setFieldLabel(i18nC.description());
202
		descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
203
 
862 jpm 204
		descriptionSpecialisteChp = new TextArea();
687 jp_milcent 205
		descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
206
		descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
207
 
862 jpm 208
		historiqueChp = new TextArea();
687 jp_milcent 209
		historiqueChp.setFieldLabel(i18nC.historique());
210
		descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
211
 
862 jpm 212
		urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
687 jp_milcent 213
		descriptionFieldSet.add(urlsChp);
214
 
215
		this.add(descriptionFieldSet);
216
	}
217
 
858 jpm 218
	private void creerFieldsetCouverture() {
219
		FieldSet couvertureFieldSet = new FieldSet();
220
		couvertureFieldSet.setHeading("Couvertures");
221
		couvertureFieldSet.setCollapsible(true);
222
		couvertureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
223
 
862 jpm 224
		groupementPrincipeCombo = new ChampComboBoxListeValeurs(i18nC.groupementPrincipeCollection(), "groupementPrincipe", tabIndex++);
225
		groupementPrincipeCombo.setToolTip(i18nC.groupementPrincipeCollectionInfo());
226
		couvertureFieldSet.add(groupementPrincipeCombo);
858 jpm 227
 
862 jpm 228
		butRealisationCombo = new ChampComboBoxListeValeurs(i18nC.butCollection(), "realisationBut", tabIndex++);
229
		couvertureFieldSet.add(butRealisationCombo);
230
 
231
		lieuCouvertureChp = new ChampMultiValeurs(i18nC.lieuCouvertureCollection());
232
		couvertureFieldSet.add(lieuCouvertureChp);
233
 
858 jpm 234
		this.add(couvertureFieldSet);
235
	}
236
 
859 jpm 237
	private void creerFieldsetType() {
238
		FieldSet typeFieldSet = new FieldSet();
239
		typeFieldSet.setHeading("Spécimens «types»");
240
		typeFieldSet.setCollapsible(true);
241
		typeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
242
 
243
		specimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.specimenTypeCollection(), "onpi", tabIndex++);
244
		typeFieldSet.add(specimenTypeCombo);
245
 
246
		ConteneurMultiChamps nbreTypeConteneur = new ConteneurMultiChamps(i18nC.nbreSpecimenTypeCollection());
247
 
248
		nbreTypeChp = new NumberField();
249
		nbreTypeChp.setFormat(NumberFormat.getFormat("#"));
250
		nbreTypeConteneur.ajouterChamp(nbreTypeChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
251
 
252
		precisionTypeNbreCombo = new ChampComboBoxListeValeurs(null, "ea");
253
		precisionTypeNbreCombo.setTrie("id_valeur");
254
		precisionTypeNbreCombo.setEmptyText(i18nC.precisionNbreSpecimenTypeCollectionChpVide());
255
		nbreTypeConteneur.ajouterChamp(precisionTypeNbreCombo);
256
 
257
		typeFieldSet.add(nbreTypeConteneur);
258
 
259
		classementSpecimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.classementSpecimenTypeCollection(), "typeClassement", tabIndex++);
260
		typeFieldSet.add(classementSpecimenTypeCombo);
261
 
262
		Text infoType = new Text(i18nC.specimenTypeCollectionInfo());
263
		typeFieldSet.add(infoType);
264
 
265
		this.add(typeFieldSet);
266
	}
267
 
687 jp_milcent 268
	public void rafraichir(Object nouvellesDonnees) {
862 jpm 269
		if (nouvellesDonnees instanceof ProjetListe) {
687 jp_milcent 270
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
831 jpm 271
			Formulaire.rafraichirComboBox(projets, projetsCombo);
687 jp_milcent 272
		} else if (nouvellesDonnees instanceof StructureListe) {
273
			StructureListe structures = (StructureListe) nouvellesDonnees;
831 jpm 274
			Formulaire.rafraichirComboBox(structures, structuresCombo);
687 jp_milcent 275
		} else if (nouvellesDonnees instanceof CollectionListe) {
276
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
831 jpm 277
			Formulaire.rafraichirComboBox(collections, collectionsCombo);
858 jpm 278
		} else if (nouvellesDonnees instanceof ValeurListe) {
279
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
280
			rafraichirValeurListe(listeValeurs);
687 jp_milcent 281
		} else {
282
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
283
		}
284
	}
285
 
286
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
858 jpm 287
		if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
831 jpm 288
			Formulaire.rafraichirComboBox(listeValeurs, typeDepotCombo);
687 jp_milcent 289
		} else {
290
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
291
		}
292
	}
293
 
703 jp_milcent 294
 
687 jp_milcent 295
 
296
}