Subversion Repositories eFlore/Applications.coel

Rev

Rev 687 | Rev 775 | 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;
4
import org.tela_botanica.client.composants.ChampMultiValeurs;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.modeles.Collection;
7
import org.tela_botanica.client.modeles.CollectionListe;
8
import org.tela_botanica.client.modeles.Projet;
9
import org.tela_botanica.client.modeles.ProjetListe;
10
import org.tela_botanica.client.modeles.Structure;
11
import org.tela_botanica.client.modeles.StructureListe;
12
import org.tela_botanica.client.modeles.Valeur;
13
import org.tela_botanica.client.modeles.ValeurListe;
14
import com.extjs.gxt.ui.client.store.ListStore;
15
import com.extjs.gxt.ui.client.widget.form.ComboBox;
16
import com.extjs.gxt.ui.client.widget.form.Field;
17
import com.extjs.gxt.ui.client.widget.form.FieldSet;
18
import com.extjs.gxt.ui.client.widget.form.HiddenField;
19
import com.extjs.gxt.ui.client.widget.form.NumberField;
20
import com.extjs.gxt.ui.client.widget.form.TextArea;
21
import com.extjs.gxt.ui.client.widget.form.TextField;
22
import com.extjs.gxt.ui.client.widget.form.Validator;
23
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
24
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
25
import com.extjs.gxt.ui.client.widget.layout.FormData;
26
import com.google.gwt.core.client.GWT;
27
import com.google.gwt.i18n.client.NumberFormat;
28
 
29
public class CollectionFormGeneral extends FormulaireOnglet implements Rafraichissable {
30
 
31
	private HiddenField<String> idCollectionChp;
32
 
33
	private FieldSet descriptionFieldSet;
34
	private ListStore<Valeur> typesCollectionStore;
35
	private ListStore<Valeur> typeCollectionBotaStore;
36
	private ListStore<Valeur> typeDepotStore;
37
	private ComboBox<Valeur> typeDepotCombo;
38
	private ComboBox<Valeur> typesCollectionBotaCombo;
39
	private ComboBox<Valeur> typesCollectionCombo;
40
 
41
	private ListStore<Projet> projetsStore;
42
	private ComboBox<Projet> projetsCombo;
43
 
44
	private ComboBox<Structure> structuresCombo;
45
 
46
	private ListStore<Structure> structuresStore;
47
 
48
	private ComboBox<Collection> collectionsCombo;
49
 
50
	private ListStore<Collection> collectionsStore;
51
 
52
	public CollectionFormGeneral(Formulaire formulaireCourrant) {
53
		initialiserOnglet(formulaireCourrant);
54
		setId("general");
55
		setText(Mediateur.i18nC.collectionGeneral());
56
 
57
		creerChampsCache();
58
		creerFieldsetLiaison();
59
		creerFieldsetAdministratif();
60
		creerFieldsetDescription();
61
	}
62
 
63
	private void creerChampsCache() {
64
		// Champs cachés
65
		idCollectionChp = new HiddenField<String>();
66
		this.add(idCollectionChp);
67
	}
68
 
69
	private void creerFieldsetLiaison() {
70
		// Fieldset LIAISON
71
		FieldSet liaisonFieldSet = new FieldSet();
72
		liaisonFieldSet.setHeading(i18nC.liaisonTitreCollection());
73
		liaisonFieldSet.setCollapsible(true);
74
		liaisonFieldSet.setLayout(Formulaire.creerFormLayout(150, LabelAlign.LEFT));
75
 
76
		projetsStore = new ListStore<Projet>();
77
		projetsCombo = new ComboBox<Projet>();
78
		projetsCombo.setTabIndex(tabIndex++);
79
		projetsCombo.setFieldLabel(i18nC.projetChamp());
80
		projetsCombo.setDisplayField("nom");
81
		projetsCombo.setForceSelection(true);
82
		projetsCombo.setValidator(new Validator() {
83
			@Override
84
			public String validate(Field<?> field, String value) {
85
				String retour = null;
86
				if (field.getRawValue().equals("")) {
87
					field.setValue(null);
88
				} else if (projetsStore.findModel("nom", field.getRawValue()) == null) {
89
					String contenuBrut = field.getRawValue();
90
					field.setValue(null);
91
					field.setRawValue(contenuBrut);
92
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
93
				}
94
				return retour;
95
			}
96
		});
97
		projetsCombo.setTriggerAction(TriggerAction.ALL);
98
		projetsCombo.setStore(projetsStore);
99
		liaisonFieldSet.add(projetsCombo, new FormData(450, 0));
100
		mediateur.selectionnerProjets(this);
101
 
102
		structuresStore = new ListStore<Structure>();
103
		structuresCombo = new ComboBox<Structure>();
104
		structuresCombo.setTabIndex(tabIndex++);
105
		structuresCombo.setFieldLabel(i18nC.lienStructureCollection());
106
		structuresCombo.setDisplayField("nom");
107
		structuresCombo.setForceSelection(true);
108
		structuresCombo.setValidator(new Validator() {
109
			@Override
110
			public String validate(Field<?> field, String value) {
111
				String retour = null;
112
				if (field.getRawValue().equals("")) {
113
					field.setValue(null);
114
				} else if (structuresStore.findModel("nom", field.getRawValue()) == null) {
115
					String contenuBrut = field.getRawValue();
116
					field.setValue(null);
117
					field.setRawValue(contenuBrut);
118
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
119
				}
120
				return retour;
121
			}
122
		});
123
		structuresCombo.setTriggerAction(TriggerAction.ALL);
124
		structuresCombo.setStore(structuresStore);
125
		liaisonFieldSet.add(structuresCombo, new FormData(450, 0));
126
		mediateur.selectionnerStructure(this, null);
127
 
128
		collectionsStore = new ListStore<Collection>();
129
		collectionsCombo = new ComboBox<Collection>();
130
		collectionsCombo.setTabIndex(tabIndex++);
131
		collectionsCombo.setFieldLabel(i18nC.lienMereCollection());
132
		collectionsCombo.setDisplayField("nom");
133
		collectionsCombo.setForceSelection(true);
134
		collectionsCombo.setValidator(new Validator() {
135
			@Override
136
			public String validate(Field<?> field, String value) {
137
				String retour = null;
138
				if (field.getRawValue().equals("")) {
139
					field.setValue(null);
140
				} else if (collectionsStore.findModel("nom", field.getRawValue()) == null) {
141
					String contenuBrut = field.getRawValue();
142
					field.setValue(null);
143
					field.setRawValue(contenuBrut);
144
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
145
				}
146
				GWT.log("Validation : "+field.getRawValue()+"-"+field.getValue(), null);
147
				return retour;
148
			}
149
		});
150
		collectionsCombo.setTriggerAction(TriggerAction.ALL);
151
		collectionsCombo.setStore(collectionsStore);
152
		liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));
153
		mediateur.selectionnerCollection(this, null);
154
 
155
		this.add(liaisonFieldSet);
156
	}
157
 
158
	private void creerFieldsetAdministratif() {
159
		// Fieldset ADMINISTRATIF
160
		FieldSet administratifFieldSet = new FieldSet();
161
		administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());
162
		administratifFieldSet.setCollapsible(true);
163
		administratifFieldSet.setLayout(Formulaire.creerFormLayout(150, LabelAlign.LEFT));
164
 
165
		typesCollectionStore = new ListStore<Valeur>();
166
		typesCollectionCombo = new ComboBox<Valeur>();
167
		typesCollectionCombo.setTabIndex(tabIndex++);
168
		typesCollectionCombo.setFieldLabel(i18nC.typeCollectionNcd());
169
		typesCollectionCombo.setDisplayField("nom");
170
		typesCollectionCombo.setForceSelection(true);
171
		typesCollectionCombo.setValidator(new Validator() {
172
			@Override
173
			public String validate(Field<?> field, String value) {
174
				String retour = null;
175
				if (field.getRawValue().equals("")) {
176
					field.setValue(null);
177
				} else if (typesCollectionStore.findModel("nom", field.getRawValue()) == null) {
178
					String contenuBrut = field.getRawValue();
179
					field.setValue(null);
180
					field.setRawValue(contenuBrut);
181
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
182
				}
183
				return retour;
184
			}
185
		});
186
		typesCollectionCombo.setTriggerAction(TriggerAction.ALL);
187
		typesCollectionCombo.setStore(typesCollectionStore);
188
		administratifFieldSet.add(typesCollectionCombo, new FormData(250, 0));
189
		mediateur.obtenirListeValeurEtRafraichir(this, "typeCollectionNcd");
190
 
191
		typeCollectionBotaStore = new ListStore<Valeur>();
192
		typesCollectionBotaCombo = new ComboBox<Valeur>();
193
		typesCollectionBotaCombo.setTabIndex(tabIndex++);
194
		typesCollectionBotaCombo.setFieldLabel(i18nC.typeCollectionBotanique());
195
		typesCollectionBotaCombo.setDisplayField("nom");
196
		typesCollectionBotaCombo.setForceSelection(true);
197
		typesCollectionBotaCombo.setValidator(new Validator() {
198
			@Override
199
			public String validate(Field<?> field, String value) {
200
				String retour = null;
201
				if (field.getRawValue().equals("")) {
202
					field.setValue(null);
203
				} else if (typeCollectionBotaStore.findModel("nom", field.getRawValue()) == null) {
204
					String contenuBrut = field.getRawValue();
205
					field.setValue(null);
206
					field.setRawValue(contenuBrut);
207
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
208
				}
209
				return retour;
210
			}
211
		});
212
		typesCollectionBotaCombo.setTriggerAction(TriggerAction.ALL);
213
		typesCollectionBotaCombo.setStore(typeCollectionBotaStore);
214
		administratifFieldSet.add(typesCollectionBotaCombo, new FormData(250, 0));
215
		mediateur.obtenirListeValeurEtRafraichir(this, "typeCollectionBota");
216
 
217
		typeDepotStore = new ListStore<Valeur>();
218
		typeDepotCombo = new ComboBox<Valeur>();
219
		typeDepotCombo.setTabIndex(tabIndex++);
220
		typeDepotCombo.setFieldLabel(i18nC.typeDepot());
221
		typeDepotCombo.setDisplayField("nom");
222
		typeDepotCombo.setForceSelection(true);
223
		typeDepotCombo.setValidator(new Validator() {
224
			@Override
225
			public String validate(Field<?> field, String value) {
226
				String retour = null;
227
				if (field.getRawValue().equals("")) {
228
					field.setValue(null);
229
				} else if (typeDepotStore.findModel("nom", field.getRawValue()) == null) {
230
					String contenuBrut = field.getRawValue();
231
					field.setValue(null);
232
					field.setRawValue(contenuBrut);
233
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
234
				}
235
				return retour;
236
			}
237
		});
238
		typeDepotCombo.setTriggerAction(TriggerAction.ALL);
239
		typeDepotCombo.setStore(typeCollectionBotaStore);
240
		administratifFieldSet.add(typeDepotCombo, new FormData(250, 0));
241
		mediateur.obtenirListeValeurEtRafraichir(this, "typeDepot");
242
 
243
		TextField<String> coteChp = new TextField<String>();
244
		coteChp.setTabIndex(tabIndex++);
245
		coteChp.setFieldLabel(i18nC.cote());
246
		administratifFieldSet.add(coteChp, new FormData(450, 0));
247
 
248
		NumberField nbreEchantillonChp = new NumberField();
249
		nbreEchantillonChp.setFieldLabel(i18nC.nbreEchantillon());
250
		nbreEchantillonChp.setToolTip(i18nC.nbreEchantillonInfo());
251
		nbreEchantillonChp.setFormat(NumberFormat.getFormat("#"));
252
		nbreEchantillonChp.setToolTip(i18nC.champNumerique());
253
		administratifFieldSet.add(nbreEchantillonChp);
254
 
255
		TextField<String> nomChp = new TextField<String>();
256
		nomChp.setTabIndex(tabIndex++);
257
		nomChp.setFieldLabel(i18nC.nomCollection());
258
		nomChp.setAllowBlank(false);
259
		nomChp.getMessages().setBlankText(i18nC.champObligatoire());
260
		administratifFieldSet.add(nomChp, new FormData(450, 0));
261
 
262
		ChampMultiValeurs nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
263
		administratifFieldSet.add(nomsAlternatifsChp);
264
 
265
		ChampMultiValeurs codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
266
		administratifFieldSet.add(codesAlternatifsChp);
267
 
268
		this.add(administratifFieldSet);
269
	}
270
 
271
	private void creerFieldsetDescription() {
272
		// Fieldset DESCRIPTION
273
		descriptionFieldSet = new FieldSet();
274
		descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
275
		descriptionFieldSet.setCollapsible(true);
276
		descriptionFieldSet.setLayout(Formulaire.creerFormLayout(150, LabelAlign.LEFT));
277
 
278
		TextArea descriptionChp = new TextArea();
279
		descriptionChp.setFieldLabel(i18nC.description());
280
		descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
281
 
282
		TextArea descriptionSpecialisteChp = new TextArea();
283
		descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
284
		descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
285
 
286
		TextArea historiqueChp = new TextArea();
287
		historiqueChp.setFieldLabel(i18nC.historique());
288
		descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
289
 
290
		ChampMultiValeurs urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
291
		descriptionFieldSet.add(urlsChp);
292
 
293
		this.add(descriptionFieldSet);
294
	}
295
 
296
	public void rafraichir(Object nouvellesDonnees) {
297
		if (nouvellesDonnees instanceof ValeurListe) {
298
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
299
			rafraichirValeurListe(listeValeurs);
300
		} else if (nouvellesDonnees instanceof ProjetListe) {
301
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
703 jp_milcent 302
			Formulaire.rafraichirComboBox(projets, projetsStore, projetsCombo);
687 jp_milcent 303
		} else if (nouvellesDonnees instanceof StructureListe) {
304
			StructureListe structures = (StructureListe) nouvellesDonnees;
703 jp_milcent 305
			Formulaire.rafraichirComboBox(structures, structuresStore, structuresCombo);
687 jp_milcent 306
		} else if (nouvellesDonnees instanceof CollectionListe) {
307
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
703 jp_milcent 308
			Formulaire.rafraichirComboBox(collections, collectionsStore, collectionsCombo);
687 jp_milcent 309
		} else {
310
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
311
		}
312
	}
313
 
314
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
315
		if (listeValeurs.getId().equals(config.getListeId("typeCollectionNcd"))) {
703 jp_milcent 316
			Formulaire.rafraichirComboBox(listeValeurs, typesCollectionStore, typesCollectionCombo);
687 jp_milcent 317
		} else if (listeValeurs.getId().equals(config.getListeId("typeCollectionBota"))) {
703 jp_milcent 318
			Formulaire.rafraichirComboBox(listeValeurs, typeCollectionBotaStore, typesCollectionBotaCombo);
687 jp_milcent 319
		} else if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
703 jp_milcent 320
			Formulaire.rafraichirComboBox(listeValeurs, typeDepotStore, typeDepotCombo);
687 jp_milcent 321
		} else {
322
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
323
		}
324
	}
325
 
703 jp_milcent 326
 
687 jp_milcent 327
 
328
}