Subversion Repositories eFlore/Applications.coel

Rev

Rev 703 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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