Subversion Repositories eFlore/Applications.coel

Rev

Rev 865 | Rev 875 | 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
 
867 jpm 36
	private Collection collection = null;
37
	private Collection collectionCollectee = null;
38
 
687 jp_milcent 39
	private HiddenField<String> idCollectionChp;
40
 
859 jpm 41
	private ComboBox<Projet> projetsCombo = null;
42
	private ComboBox<Structure> structuresCombo = null;
43
	private ComboBox<Collection> collectionsCombo = null;
858 jpm 44
 
862 jpm 45
	private ChampComboBoxListeValeurs groupementPrincipeCombo;
46
	private ChampMultiValeurs lieuCouvertureChp = null;
687 jp_milcent 47
 
859 jpm 48
	private ChampComboBoxListeValeurs specimenTypeCombo = null;
49
	private ChampComboBoxListeValeurs precisionTypeNbreCombo = null;
50
	private NumberField nbreTypeChp = null;
51
	private ChampComboBoxListeValeurs classementSpecimenTypeCombo;
858 jpm 52
 
867 jpm 53
	private ChampComboBoxListeValeurs typeDepotCombo = null;
865 jpm 54
	private TextField<String> coteChp = null;
55
	private ChampMultiValeurs idAlternatifsChp = null;
56
	private ChampMultiValeurs nomsAlternatifsChp = null;
57
	private ChampMultiValeurs codesAlternatifsChp = null;
862 jpm 58
 
865 jpm 59
	private TextArea descriptionSpecialisteChp = null;
60
	private TextArea descriptionChp = null;
61
	private TextArea historiqueChp = null;
62
	private ChampMultiValeurs urlsChp = null;
862 jpm 63
 
865 jpm 64
	private ChampComboBoxListeValeurs butRealisationCombo = null;
862 jpm 65
 
687 jp_milcent 66
	public CollectionFormGeneral(Formulaire formulaireCourrant) {
67
		initialiserOnglet(formulaireCourrant);
68
		setId("general");
69
		setText(Mediateur.i18nC.collectionGeneral());
70
 
867 jpm 71
		collection = ((CollectionForm) formulaire).collection;
72
		collectionCollectee = ((CollectionForm) formulaire).collectionCollectee;
73
 
687 jp_milcent 74
		creerChampsCache();
75
		creerFieldsetLiaison();
76
		creerFieldsetAdministratif();
77
		creerFieldsetDescription();
858 jpm 78
		creerFieldsetCouverture();
859 jpm 79
		creerFieldsetType();
687 jp_milcent 80
	}
81
 
82
	private void creerChampsCache() {
83
		// Champs cachés
84
		idCollectionChp = new HiddenField<String>();
85
		this.add(idCollectionChp);
86
	}
87
 
88
	private void creerFieldsetLiaison() {
89
		FieldSet liaisonFieldSet = new FieldSet();
90
		liaisonFieldSet.setHeading(i18nC.liaisonTitreCollection());
91
		liaisonFieldSet.setCollapsible(true);
858 jpm 92
		liaisonFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 93
 
94
		projetsCombo = new ComboBox<Projet>();
95
		projetsCombo.setTabIndex(tabIndex++);
96
		projetsCombo.setFieldLabel(i18nC.projetChamp());
97
		projetsCombo.setDisplayField("nom");
98
		projetsCombo.setForceSelection(true);
99
		projetsCombo.setValidator(new Validator() {
100
			@Override
101
			public String validate(Field<?> field, String value) {
102
				String retour = null;
103
				if (field.getRawValue().equals("")) {
104
					field.setValue(null);
859 jpm 105
				} else if (projetsCombo.getStore().findModel("nom", field.getRawValue()) == null) {
687 jp_milcent 106
					String contenuBrut = field.getRawValue();
107
					field.setValue(null);
108
					field.setRawValue(contenuBrut);
109
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
110
				}
111
				return retour;
112
			}
113
		});
114
		projetsCombo.setTriggerAction(TriggerAction.ALL);
859 jpm 115
		projetsCombo.setStore(new ListStore<Projet>());
687 jp_milcent 116
		liaisonFieldSet.add(projetsCombo, new FormData(450, 0));
117
		mediateur.selectionnerProjets(this);
118
 
119
		structuresCombo = new ComboBox<Structure>();
120
		structuresCombo.setTabIndex(tabIndex++);
121
		structuresCombo.setFieldLabel(i18nC.lienStructureCollection());
122
		structuresCombo.setDisplayField("nom");
123
		structuresCombo.setForceSelection(true);
124
		structuresCombo.setValidator(new Validator() {
125
			@Override
126
			public String validate(Field<?> field, String value) {
127
				String retour = null;
128
				if (field.getRawValue().equals("")) {
129
					field.setValue(null);
859 jpm 130
				} else if (structuresCombo.getStore().findModel("nom", field.getRawValue()) == null) {
687 jp_milcent 131
					String contenuBrut = field.getRawValue();
132
					field.setValue(null);
133
					field.setRawValue(contenuBrut);
134
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
135
				}
136
				return retour;
137
			}
138
		});
139
		structuresCombo.setTriggerAction(TriggerAction.ALL);
859 jpm 140
		structuresCombo.setStore(new ListStore<Structure>());
687 jp_milcent 141
		liaisonFieldSet.add(structuresCombo, new FormData(450, 0));
775 jpm 142
		mediateur.selectionnerStructureParProjet(this, null);
687 jp_milcent 143
 
144
		collectionsCombo = new ComboBox<Collection>();
145
		collectionsCombo.setTabIndex(tabIndex++);
146
		collectionsCombo.setFieldLabel(i18nC.lienMereCollection());
147
		collectionsCombo.setDisplayField("nom");
148
		collectionsCombo.setForceSelection(true);
149
		collectionsCombo.setValidator(new Validator() {
150
			@Override
151
			public String validate(Field<?> field, String value) {
152
				String retour = null;
153
				if (field.getRawValue().equals("")) {
154
					field.setValue(null);
859 jpm 155
				} else if (collectionsCombo.getStore().findModel("nom", field.getRawValue()) == null) {
687 jp_milcent 156
					String contenuBrut = field.getRawValue();
157
					field.setValue(null);
158
					field.setRawValue(contenuBrut);
159
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
160
				}
161
				GWT.log("Validation : "+field.getRawValue()+"-"+field.getValue(), null);
162
				return retour;
163
			}
164
		});
165
		collectionsCombo.setTriggerAction(TriggerAction.ALL);
859 jpm 166
		collectionsCombo.setStore(new ListStore<Collection>());
687 jp_milcent 167
		liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));
775 jpm 168
		mediateur.selectionnerCollectionParProjet(this, null);
687 jp_milcent 169
 
170
		this.add(liaisonFieldSet);
171
	}
172
 
173
	private void creerFieldsetAdministratif() {
174
		// Fieldset ADMINISTRATIF
175
		FieldSet administratifFieldSet = new FieldSet();
176
		administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());
177
		administratifFieldSet.setCollapsible(true);
858 jpm 178
		administratifFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 179
 
859 jpm 180
		typeDepotCombo = new ChampComboBoxListeValeurs(i18nC.typeDepot(), "typeDepot", tabIndex++);
181
		administratifFieldSet.add(typeDepotCombo);
862 jpm 182
 
865 jpm 183
		coteChp = new TextField<String>();
184
		coteChp.setTabIndex(tabIndex++);
185
		coteChp.setFieldLabel(i18nC.cote());
186
		administratifFieldSet.add(coteChp, new FormData(450, 0));
862 jpm 187
 
188
		idAlternatifsChp = new ChampMultiValeurs(i18nC.idAlternatifCollection());
189
		administratifFieldSet.add(idAlternatifsChp);
190
 
191
		nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
687 jp_milcent 192
		administratifFieldSet.add(nomsAlternatifsChp);
193
 
862 jpm 194
		codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
687 jp_milcent 195
		administratifFieldSet.add(codesAlternatifsChp);
196
 
197
		this.add(administratifFieldSet);
198
	}
199
 
200
	private void creerFieldsetDescription() {
201
		// Fieldset DESCRIPTION
862 jpm 202
		FieldSet descriptionFieldSet = new FieldSet();
687 jp_milcent 203
		descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
204
		descriptionFieldSet.setCollapsible(true);
858 jpm 205
		descriptionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 206
 
862 jpm 207
		descriptionChp = new TextArea();
687 jp_milcent 208
		descriptionChp.setFieldLabel(i18nC.description());
209
		descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
210
 
862 jpm 211
		descriptionSpecialisteChp = new TextArea();
687 jp_milcent 212
		descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
213
		descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
214
 
862 jpm 215
		historiqueChp = new TextArea();
687 jp_milcent 216
		historiqueChp.setFieldLabel(i18nC.historique());
217
		descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
218
 
862 jpm 219
		urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
687 jp_milcent 220
		descriptionFieldSet.add(urlsChp);
221
 
222
		this.add(descriptionFieldSet);
223
	}
224
 
858 jpm 225
	private void creerFieldsetCouverture() {
226
		FieldSet couvertureFieldSet = new FieldSet();
227
		couvertureFieldSet.setHeading("Couvertures");
228
		couvertureFieldSet.setCollapsible(true);
229
		couvertureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
230
 
862 jpm 231
		groupementPrincipeCombo = new ChampComboBoxListeValeurs(i18nC.groupementPrincipeCollection(), "groupementPrincipe", tabIndex++);
232
		groupementPrincipeCombo.setToolTip(i18nC.groupementPrincipeCollectionInfo());
233
		couvertureFieldSet.add(groupementPrincipeCombo);
858 jpm 234
 
862 jpm 235
		butRealisationCombo = new ChampComboBoxListeValeurs(i18nC.butCollection(), "realisationBut", tabIndex++);
236
		couvertureFieldSet.add(butRealisationCombo);
237
 
238
		lieuCouvertureChp = new ChampMultiValeurs(i18nC.lieuCouvertureCollection());
239
		couvertureFieldSet.add(lieuCouvertureChp);
240
 
858 jpm 241
		this.add(couvertureFieldSet);
242
	}
243
 
859 jpm 244
	private void creerFieldsetType() {
245
		FieldSet typeFieldSet = new FieldSet();
246
		typeFieldSet.setHeading("Spécimens «types»");
247
		typeFieldSet.setCollapsible(true);
248
		typeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
249
 
250
		specimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.specimenTypeCollection(), "onpi", tabIndex++);
251
		typeFieldSet.add(specimenTypeCombo);
252
 
253
		ConteneurMultiChamps nbreTypeConteneur = new ConteneurMultiChamps(i18nC.nbreSpecimenTypeCollection());
254
 
255
		nbreTypeChp = new NumberField();
256
		nbreTypeChp.setFormat(NumberFormat.getFormat("#"));
257
		nbreTypeConteneur.ajouterChamp(nbreTypeChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
258
 
259
		precisionTypeNbreCombo = new ChampComboBoxListeValeurs(null, "ea");
260
		precisionTypeNbreCombo.setTrie("id_valeur");
261
		precisionTypeNbreCombo.setEmptyText(i18nC.precisionNbreSpecimenTypeCollectionChpVide());
262
		nbreTypeConteneur.ajouterChamp(precisionTypeNbreCombo);
263
 
264
		typeFieldSet.add(nbreTypeConteneur);
265
 
266
		classementSpecimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.classementSpecimenTypeCollection(), "typeClassement", tabIndex++);
267
		typeFieldSet.add(classementSpecimenTypeCombo);
268
 
269
		Text infoType = new Text(i18nC.specimenTypeCollectionInfo());
270
		typeFieldSet.add(infoType);
271
 
272
		this.add(typeFieldSet);
273
	}
274
 
867 jpm 275
	public void peupler() {
276
		if (collection != null) {
277
			idCollectionChp.setValue(collection.getId());
278
 
279
			typeDepotCombo.peupler(collection.getTypeDepot());
280
			coteChp.setValue(collection.getCote());
281
			idAlternatifsChp.peupler(collection.getIdAlternatif());
282
			nomsAlternatifsChp.peupler(collection.getNomAlternatif());
283
			codesAlternatifsChp.peupler(collection.getCode());
284
 
285
			descriptionChp.setValue(collection.getDescription());
286
			descriptionSpecialisteChp.setValue(collection.getDescriptionSpecialiste());
287
			historiqueChp.setValue(collection.getHistorique());
288
			urlsChp.peupler(collection.getUrls());
289
 
290
			groupementPrincipeCombo.peupler(collection.getGroupementPrincipe());
291
			butRealisationCombo.peupler(collection.getGroupementBut());
292
			lieuCouvertureChp.peupler(collection.getCouvertureLieu());
293
 
294
			specimenTypeCombo.peupler(collection.getSpecimenType());
295
			nbreTypeChp.setValue(Integer.parseInt(collection.getSpecimenTypeNbre()));
296
			precisionTypeNbreCombo.peupler(collection.getSpecimenTypeNbrePrecision());
297
			classementSpecimenTypeCombo.peupler(collection.getSpecimenTypeClassement());
298
		}
299
	}
300
 
301
	public void collecter() {
302
		if (etreAccede()) {
303
			collectionCollectee.setId(idCollectionChp.getValue());
304
 
305
			collectionCollectee.setTypeDepot(typeDepotCombo.getValeur());
306
			collectionCollectee.setCote(coteChp.getValue());
307
			collectionCollectee.setIdAlternatif(idAlternatifsChp.getValeurs());
308
			collectionCollectee.setNomAlternatif(nomsAlternatifsChp.getValeurs());
309
			collectionCollectee.setCode(codesAlternatifsChp.getValeurs());
310
 
311
			collectionCollectee.setDescription(descriptionChp.getValue());
312
			collectionCollectee.setDescriptionSpecialiste(descriptionSpecialisteChp.getValue());
313
			collectionCollectee.setHistorique(historiqueChp.getValue());
314
			collectionCollectee.setUrls(urlsChp.getValeurs());
315
 
316
			collectionCollectee.setGroupementPrincipe(groupementPrincipeCombo.getValeur());
317
			collectionCollectee.setGroupementBut(butRealisationCombo.getValeur());
318
			collectionCollectee.setCouvertureLieu(lieuCouvertureChp.getValeurs());
319
 
320
			collectionCollectee.setSpecimenType(specimenTypeCombo.getValeur());
321
			collectionCollectee.setSpecimenTypeNbre(nbreTypeChp.getValue().toString());
322
			collectionCollectee.setSpecimenTypeNbrePrecision(precisionTypeNbreCombo.getValeur());
323
			collectionCollectee.setSpecimenTypeClassement(classementSpecimenTypeCombo.getValeur());
324
		}
325
	}
326
 
327
	private void mettreAJourValeurComboProjets() {
328
		if (projetsCombo.getStore() != null && collection != null) {
329
			projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", collection.getIdProjet()));
330
		}
331
	}
332
 
333
	private void mettreAJourValeurComboStructures() {
334
		if (structuresCombo.getStore() != null && collection != null) {
335
			structuresCombo.setValue(structuresCombo.getStore().findModel("id_structure", collection.getIdStructure()));
336
		}
337
	}
338
 
339
	private void mettreAJourValeurComboCollections() {
340
		if (collectionsCombo.getStore() != null && collection != null) {
341
			collectionsCombo.setValue(collectionsCombo.getStore().findModel("id_collection", collection.getCollectionMereId()));
342
		}
343
	}
344
 
687 jp_milcent 345
	public void rafraichir(Object nouvellesDonnees) {
862 jpm 346
		if (nouvellesDonnees instanceof ProjetListe) {
687 jp_milcent 347
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
831 jpm 348
			Formulaire.rafraichirComboBox(projets, projetsCombo);
867 jpm 349
			mettreAJourValeurComboProjets();
687 jp_milcent 350
		} else if (nouvellesDonnees instanceof StructureListe) {
351
			StructureListe structures = (StructureListe) nouvellesDonnees;
831 jpm 352
			Formulaire.rafraichirComboBox(structures, structuresCombo);
867 jpm 353
			mettreAJourValeurComboStructures();
687 jp_milcent 354
		} else if (nouvellesDonnees instanceof CollectionListe) {
355
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
831 jpm 356
			Formulaire.rafraichirComboBox(collections, collectionsCombo);
867 jpm 357
			mettreAJourValeurComboCollections();
858 jpm 358
		} else if (nouvellesDonnees instanceof ValeurListe) {
359
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
360
			rafraichirValeurListe(listeValeurs);
687 jp_milcent 361
		} else {
362
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
363
		}
364
	}
365
 
366
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
858 jpm 367
		if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
831 jpm 368
			Formulaire.rafraichirComboBox(listeValeurs, typeDepotCombo);
687 jp_milcent 369
		} else {
370
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
371
		}
372
	}
373
 
703 jp_milcent 374
 
687 jp_milcent 375
 
376
}