Subversion Repositories eFlore/Applications.coel

Rev

Rev 831 | Rev 859 | 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;
858 jpm 14
 
687 jp_milcent 15
import com.extjs.gxt.ui.client.store.ListStore;
16
import com.extjs.gxt.ui.client.widget.form.ComboBox;
17
import com.extjs.gxt.ui.client.widget.form.Field;
18
import com.extjs.gxt.ui.client.widget.form.FieldSet;
19
import com.extjs.gxt.ui.client.widget.form.HiddenField;
20
import com.extjs.gxt.ui.client.widget.form.TextArea;
21
import com.extjs.gxt.ui.client.widget.form.Validator;
22
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
23
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
24
import com.extjs.gxt.ui.client.widget.layout.FormData;
25
import com.google.gwt.core.client.GWT;
26
 
27
public class CollectionFormGeneral extends FormulaireOnglet implements Rafraichissable {
28
 
29
	private HiddenField<String> idCollectionChp;
30
 
31
	private ListStore<Projet> projetsStore;
32
	private ComboBox<Projet> projetsCombo;
33
	private ComboBox<Structure> structuresCombo;
34
	private ListStore<Structure> structuresStore;
35
	private ComboBox<Collection> collectionsCombo;
36
	private ListStore<Collection> collectionsStore;
858 jpm 37
 
38
	private FieldSet descriptionFieldSet;
39
	private ListStore<Valeur> typeDepotStore;
40
	private ComboBox<Valeur> typeDepotCombo;
687 jp_milcent 41
 
858 jpm 42
	private TextArea lieuCouvertureChp;
43
 
687 jp_milcent 44
	public CollectionFormGeneral(Formulaire formulaireCourrant) {
45
		initialiserOnglet(formulaireCourrant);
46
		setId("general");
47
		setText(Mediateur.i18nC.collectionGeneral());
48
 
49
		creerChampsCache();
50
		creerFieldsetLiaison();
51
		creerFieldsetAdministratif();
52
		creerFieldsetDescription();
858 jpm 53
		creerFieldsetCouverture();
687 jp_milcent 54
	}
55
 
56
	private void creerChampsCache() {
57
		// Champs cachés
58
		idCollectionChp = new HiddenField<String>();
59
		this.add(idCollectionChp);
60
	}
61
 
62
	private void creerFieldsetLiaison() {
63
		FieldSet liaisonFieldSet = new FieldSet();
64
		liaisonFieldSet.setHeading(i18nC.liaisonTitreCollection());
65
		liaisonFieldSet.setCollapsible(true);
858 jpm 66
		liaisonFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 67
 
68
		projetsStore = new ListStore<Projet>();
69
		projetsCombo = new ComboBox<Projet>();
70
		projetsCombo.setTabIndex(tabIndex++);
71
		projetsCombo.setFieldLabel(i18nC.projetChamp());
72
		projetsCombo.setDisplayField("nom");
73
		projetsCombo.setForceSelection(true);
74
		projetsCombo.setValidator(new Validator() {
75
			@Override
76
			public String validate(Field<?> field, String value) {
77
				String retour = null;
78
				if (field.getRawValue().equals("")) {
79
					field.setValue(null);
80
				} else if (projetsStore.findModel("nom", field.getRawValue()) == null) {
81
					String contenuBrut = field.getRawValue();
82
					field.setValue(null);
83
					field.setRawValue(contenuBrut);
84
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
85
				}
86
				return retour;
87
			}
88
		});
89
		projetsCombo.setTriggerAction(TriggerAction.ALL);
90
		projetsCombo.setStore(projetsStore);
91
		liaisonFieldSet.add(projetsCombo, new FormData(450, 0));
92
		mediateur.selectionnerProjets(this);
93
 
94
		structuresStore = new ListStore<Structure>();
95
		structuresCombo = new ComboBox<Structure>();
96
		structuresCombo.setTabIndex(tabIndex++);
97
		structuresCombo.setFieldLabel(i18nC.lienStructureCollection());
98
		structuresCombo.setDisplayField("nom");
99
		structuresCombo.setForceSelection(true);
100
		structuresCombo.setValidator(new Validator() {
101
			@Override
102
			public String validate(Field<?> field, String value) {
103
				String retour = null;
104
				if (field.getRawValue().equals("")) {
105
					field.setValue(null);
106
				} else if (structuresStore.findModel("nom", field.getRawValue()) == null) {
107
					String contenuBrut = field.getRawValue();
108
					field.setValue(null);
109
					field.setRawValue(contenuBrut);
110
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
111
				}
112
				return retour;
113
			}
114
		});
115
		structuresCombo.setTriggerAction(TriggerAction.ALL);
116
		structuresCombo.setStore(structuresStore);
117
		liaisonFieldSet.add(structuresCombo, new FormData(450, 0));
775 jpm 118
		mediateur.selectionnerStructureParProjet(this, null);
687 jp_milcent 119
 
120
		collectionsStore = new ListStore<Collection>();
121
		collectionsCombo = new ComboBox<Collection>();
122
		collectionsCombo.setTabIndex(tabIndex++);
123
		collectionsCombo.setFieldLabel(i18nC.lienMereCollection());
124
		collectionsCombo.setDisplayField("nom");
125
		collectionsCombo.setForceSelection(true);
126
		collectionsCombo.setValidator(new Validator() {
127
			@Override
128
			public String validate(Field<?> field, String value) {
129
				String retour = null;
130
				if (field.getRawValue().equals("")) {
131
					field.setValue(null);
132
				} else if (collectionsStore.findModel("nom", field.getRawValue()) == null) {
133
					String contenuBrut = field.getRawValue();
134
					field.setValue(null);
135
					field.setRawValue(contenuBrut);
136
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
137
				}
138
				GWT.log("Validation : "+field.getRawValue()+"-"+field.getValue(), null);
139
				return retour;
140
			}
141
		});
142
		collectionsCombo.setTriggerAction(TriggerAction.ALL);
143
		collectionsCombo.setStore(collectionsStore);
144
		liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));
775 jpm 145
		mediateur.selectionnerCollectionParProjet(this, null);
687 jp_milcent 146
 
147
		this.add(liaisonFieldSet);
148
	}
149
 
150
	private void creerFieldsetAdministratif() {
151
		// Fieldset ADMINISTRATIF
152
		FieldSet administratifFieldSet = new FieldSet();
153
		administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());
154
		administratifFieldSet.setCollapsible(true);
858 jpm 155
		administratifFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 156
 
157
		typeDepotStore = new ListStore<Valeur>();
158
		typeDepotCombo = new ComboBox<Valeur>();
159
		typeDepotCombo.setTabIndex(tabIndex++);
160
		typeDepotCombo.setFieldLabel(i18nC.typeDepot());
161
		typeDepotCombo.setDisplayField("nom");
162
		typeDepotCombo.setForceSelection(true);
163
		typeDepotCombo.setValidator(new Validator() {
164
			@Override
165
			public String validate(Field<?> field, String value) {
166
				String retour = null;
167
				if (field.getRawValue().equals("")) {
168
					field.setValue(null);
169
				} else if (typeDepotStore.findModel("nom", field.getRawValue()) == null) {
170
					String contenuBrut = field.getRawValue();
171
					field.setValue(null);
172
					field.setRawValue(contenuBrut);
173
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
174
				}
175
				return retour;
176
			}
177
		});
178
		typeDepotCombo.setTriggerAction(TriggerAction.ALL);
858 jpm 179
		typeDepotCombo.setStore(typeDepotStore);
687 jp_milcent 180
		administratifFieldSet.add(typeDepotCombo, new FormData(250, 0));
181
		mediateur.obtenirListeValeurEtRafraichir(this, "typeDepot");
858 jpm 182
 
687 jp_milcent 183
		ChampMultiValeurs nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
184
		administratifFieldSet.add(nomsAlternatifsChp);
185
 
186
		ChampMultiValeurs codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
187
		administratifFieldSet.add(codesAlternatifsChp);
188
 
189
		this.add(administratifFieldSet);
190
	}
191
 
192
	private void creerFieldsetDescription() {
193
		// Fieldset DESCRIPTION
194
		descriptionFieldSet = new FieldSet();
195
		descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
196
		descriptionFieldSet.setCollapsible(true);
858 jpm 197
		descriptionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
687 jp_milcent 198
 
199
		TextArea descriptionChp = new TextArea();
200
		descriptionChp.setFieldLabel(i18nC.description());
201
		descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
202
 
203
		TextArea descriptionSpecialisteChp = new TextArea();
204
		descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
205
		descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
206
 
207
		TextArea historiqueChp = new TextArea();
208
		historiqueChp.setFieldLabel(i18nC.historique());
209
		descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
210
 
211
		ChampMultiValeurs urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
212
		descriptionFieldSet.add(urlsChp);
213
 
214
		this.add(descriptionFieldSet);
215
	}
216
 
858 jpm 217
	private void creerFieldsetCouverture() {
218
		FieldSet couvertureFieldSet = new FieldSet();
219
		couvertureFieldSet.setHeading("Couvertures");
220
		couvertureFieldSet.setCollapsible(true);
221
		couvertureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
222
 
223
		lieuCouvertureChp = new TextArea();
224
		lieuCouvertureChp.setFieldLabel(i18nC.lieuCouvertureCollection());
225
		couvertureFieldSet.add(lieuCouvertureChp, new FormData(550, 0));
226
 
227
		this.add(couvertureFieldSet);
228
	}
229
 
687 jp_milcent 230
	public void rafraichir(Object nouvellesDonnees) {
858 jpm 231
		 if (nouvellesDonnees instanceof ProjetListe) {
687 jp_milcent 232
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
831 jpm 233
			Formulaire.rafraichirComboBox(projets, projetsCombo);
687 jp_milcent 234
		} else if (nouvellesDonnees instanceof StructureListe) {
235
			StructureListe structures = (StructureListe) nouvellesDonnees;
831 jpm 236
			Formulaire.rafraichirComboBox(structures, structuresCombo);
687 jp_milcent 237
		} else if (nouvellesDonnees instanceof CollectionListe) {
238
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
831 jpm 239
			Formulaire.rafraichirComboBox(collections, collectionsCombo);
858 jpm 240
		} else if (nouvellesDonnees instanceof ValeurListe) {
241
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
242
			rafraichirValeurListe(listeValeurs);
687 jp_milcent 243
		} else {
244
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
245
		}
246
	}
247
 
248
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
858 jpm 249
		if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
831 jpm 250
			Formulaire.rafraichirComboBox(listeValeurs, typeDepotCombo);
687 jp_milcent 251
		} else {
252
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
253
		}
254
	}
255
 
703 jp_milcent 256
 
687 jp_milcent 257
 
258
}