Subversion Repositories eFlore/Applications.coel

Rev

Rev 858 | Rev 862 | 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.util.Padding;
20
import com.extjs.gxt.ui.client.widget.ContentPanel;
21
import com.extjs.gxt.ui.client.widget.LayoutContainer;
22
import com.extjs.gxt.ui.client.widget.Text;
687 jp_milcent 23
import com.extjs.gxt.ui.client.widget.form.ComboBox;
24
import com.extjs.gxt.ui.client.widget.form.Field;
25
import com.extjs.gxt.ui.client.widget.form.FieldSet;
26
import com.extjs.gxt.ui.client.widget.form.HiddenField;
859 jpm 27
import com.extjs.gxt.ui.client.widget.form.LabelField;
28
import com.extjs.gxt.ui.client.widget.form.NumberField;
687 jp_milcent 29
import com.extjs.gxt.ui.client.widget.form.TextArea;
30
import com.extjs.gxt.ui.client.widget.form.Validator;
31
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
859 jpm 32
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
33
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
34
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
35
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
687 jp_milcent 36
import com.extjs.gxt.ui.client.widget.layout.FormData;
859 jpm 37
import com.extjs.gxt.ui.client.widget.layout.HBoxLayout;
38
import com.extjs.gxt.ui.client.widget.layout.HBoxLayoutData;
39
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
40
import com.extjs.gxt.ui.client.widget.layout.HBoxLayout.HBoxLayoutAlign;
687 jp_milcent 41
import com.google.gwt.core.client.GWT;
859 jpm 42
import com.google.gwt.i18n.client.NumberFormat;
687 jp_milcent 43
 
44
public class CollectionFormGeneral extends FormulaireOnglet implements Rafraichissable {
45
 
46
	private HiddenField<String> idCollectionChp;
47
 
859 jpm 48
	private ComboBox<Projet> projetsCombo = null;
49
	private ComboBox<Structure> structuresCombo = null;
50
	private ComboBox<Collection> collectionsCombo = null;
858 jpm 51
 
859 jpm 52
	private FieldSet descriptionFieldSet = null;
53
	private ComboBox<Valeur> typeDepotCombo = null;
687 jp_milcent 54
 
859 jpm 55
	private TextArea lieuCouvertureChp = null;
56
 
57
	private ChampComboBoxListeValeurs specimenTypeCombo = null;
58
	private ChampComboBoxListeValeurs precisionTypeNbreCombo = null;
59
	private NumberField nbreTypeChp = null;
60
 
61
	private ChampComboBoxListeValeurs classementSpecimenTypeCombo;
858 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);
858 jpm 176
 
687 jp_milcent 177
		ChampMultiValeurs nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
178
		administratifFieldSet.add(nomsAlternatifsChp);
179
 
180
		ChampMultiValeurs codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
181
		administratifFieldSet.add(codesAlternatifsChp);
182
 
183
		this.add(administratifFieldSet);
184
	}
185
 
186
	private void creerFieldsetDescription() {
187
		// Fieldset DESCRIPTION
188
		descriptionFieldSet = new FieldSet();
189
		descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
190
		descriptionFieldSet.setCollapsible(true);
858 jpm 191
		descriptionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 192
 
193
		TextArea descriptionChp = new TextArea();
194
		descriptionChp.setFieldLabel(i18nC.description());
195
		descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
196
 
197
		TextArea descriptionSpecialisteChp = new TextArea();
198
		descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
199
		descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
200
 
201
		TextArea historiqueChp = new TextArea();
202
		historiqueChp.setFieldLabel(i18nC.historique());
203
		descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
204
 
205
		ChampMultiValeurs urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
206
		descriptionFieldSet.add(urlsChp);
207
 
208
		this.add(descriptionFieldSet);
209
	}
210
 
858 jpm 211
	private void creerFieldsetCouverture() {
212
		FieldSet couvertureFieldSet = new FieldSet();
213
		couvertureFieldSet.setHeading("Couvertures");
214
		couvertureFieldSet.setCollapsible(true);
215
		couvertureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
216
 
217
		lieuCouvertureChp = new TextArea();
218
		lieuCouvertureChp.setFieldLabel(i18nC.lieuCouvertureCollection());
219
		couvertureFieldSet.add(lieuCouvertureChp, new FormData(550, 0));
220
 
221
		this.add(couvertureFieldSet);
222
	}
223
 
859 jpm 224
	private void creerFieldsetType() {
225
		FieldSet typeFieldSet = new FieldSet();
226
		typeFieldSet.setHeading("Spécimens «types»");
227
		typeFieldSet.setCollapsible(true);
228
		typeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
229
 
230
		specimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.specimenTypeCollection(), "onpi", tabIndex++);
231
		typeFieldSet.add(specimenTypeCombo);
232
 
233
		ConteneurMultiChamps nbreTypeConteneur = new ConteneurMultiChamps(i18nC.nbreSpecimenTypeCollection());
234
 
235
		nbreTypeChp = new NumberField();
236
		nbreTypeChp.setFormat(NumberFormat.getFormat("#"));
237
		nbreTypeConteneur.ajouterChamp(nbreTypeChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
238
 
239
		precisionTypeNbreCombo = new ChampComboBoxListeValeurs(null, "ea");
240
		precisionTypeNbreCombo.setTrie("id_valeur");
241
		precisionTypeNbreCombo.setEmptyText(i18nC.precisionNbreSpecimenTypeCollectionChpVide());
242
		nbreTypeConteneur.ajouterChamp(precisionTypeNbreCombo);
243
 
244
		typeFieldSet.add(nbreTypeConteneur);
245
 
246
		classementSpecimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.classementSpecimenTypeCollection(), "typeClassement", tabIndex++);
247
		typeFieldSet.add(classementSpecimenTypeCombo);
248
 
249
		Text infoType = new Text(i18nC.specimenTypeCollectionInfo());
250
		typeFieldSet.add(infoType);
251
 
252
		this.add(typeFieldSet);
253
	}
254
 
687 jp_milcent 255
	public void rafraichir(Object nouvellesDonnees) {
858 jpm 256
		 if (nouvellesDonnees instanceof ProjetListe) {
687 jp_milcent 257
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
831 jpm 258
			Formulaire.rafraichirComboBox(projets, projetsCombo);
687 jp_milcent 259
		} else if (nouvellesDonnees instanceof StructureListe) {
260
			StructureListe structures = (StructureListe) nouvellesDonnees;
831 jpm 261
			Formulaire.rafraichirComboBox(structures, structuresCombo);
687 jp_milcent 262
		} else if (nouvellesDonnees instanceof CollectionListe) {
263
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
831 jpm 264
			Formulaire.rafraichirComboBox(collections, collectionsCombo);
858 jpm 265
		} else if (nouvellesDonnees instanceof ValeurListe) {
266
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
267
			rafraichirValeurListe(listeValeurs);
687 jp_milcent 268
		} else {
269
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
270
		}
271
	}
272
 
273
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
858 jpm 274
		if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
831 jpm 275
			Formulaire.rafraichirComboBox(listeValeurs, typeDepotCombo);
687 jp_milcent 276
		} else {
277
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
278
		}
279
	}
280
 
703 jp_milcent 281
 
687 jp_milcent 282
 
283
}