Subversion Repositories eFlore/Applications.coel

Rev

Rev 956 | Rev 975 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
934 jpm 1
package org.tela_botanica.client.vues.collection;
858 jpm 2
 
954 jpm 3
import java.util.HashMap;
4
import java.util.Iterator;
5
 
858 jpm 6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.composants.ChampCaseACocher;
8
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
9
import org.tela_botanica.client.composants.ChampSliderPourcentage;
859 jpm 10
import org.tela_botanica.client.composants.ConteneurMultiChamps;
858 jpm 11
import org.tela_botanica.client.interfaces.Rafraichissable;
954 jpm 12
import org.tela_botanica.client.modeles.aDonnee;
13
import org.tela_botanica.client.modeles.collection.Collection;
14
import org.tela_botanica.client.modeles.collection.CollectionBotanique;
15
import org.tela_botanica.client.util.Debug;
16
import org.tela_botanica.client.util.Pattern;
17
import org.tela_botanica.client.util.UtilDate;
18
import org.tela_botanica.client.util.UtilString;
934 jpm 19
import org.tela_botanica.client.vues.Formulaire;
20
import org.tela_botanica.client.vues.FormulaireOnglet;
858 jpm 21
 
859 jpm 22
import com.extjs.gxt.ui.client.util.Margins;
858 jpm 23
import com.extjs.gxt.ui.client.widget.Text;
24
import com.extjs.gxt.ui.client.widget.form.DateField;
25
import com.extjs.gxt.ui.client.widget.form.FieldSet;
26
import com.extjs.gxt.ui.client.widget.form.TextArea;
27
import com.extjs.gxt.ui.client.widget.layout.FormData;
859 jpm 28
import com.extjs.gxt.ui.client.widget.layout.HBoxLayoutData;
858 jpm 29
 
30
public class CollectionFormContenu extends FormulaireOnglet implements Rafraichissable {
31
 
954 jpm 32
	private Collection collection = null;
33
	private CollectionBotanique collectionBotanique = null;
34
	private Collection collectionCollectee = null;
35
	private CollectionBotanique collectionBotaniqueCollectee = null;
36
 
858 jpm 37
	private ChampCaseACocher natureChp = null;
38
	private TextArea specialiteChp = null;
39
	private ChampCaseACocher periodeConstitutionChp = null;
40
	private ChampComboBoxListeValeurs dateDebutCombo = null;
41
	private ChampComboBoxListeValeurs dateFinCombo = null;
42
	private DateField dateDebutChp = null;
43
	private DateField dateFinChp = null;
44
	private TextArea annotationClassementChp = null;
45
	private ChampComboBoxListeValeurs etatClassementCombo = null;
46
	private ChampComboBoxListeValeurs precisionDateCombo = null;
47
	private ChampComboBoxListeValeurs precisionLocaliteCombo = null;
48
	private TextArea etiquetteAnnotationChp = null;
49
	private ChampComboBoxListeValeurs integreCollectionCombo = null;
50
	private ChampComboBoxListeValeurs infoIntegreCollectionCombo = null;
51
	private ChampSliderPourcentage auteurTitrePourcentChp;
52
	private ChampSliderPourcentage famillePourcentChp;
53
	private ChampSliderPourcentage genrePourcentChp;
54
	private ChampSliderPourcentage spPourcentChp;
55
	private ChampSliderPourcentage auteurSpPourcentChp;
56
	private ChampSliderPourcentage localitePourcentChp;
57
	private ChampSliderPourcentage datePourcentChp;
58
 
59
	public CollectionFormContenu(Formulaire formulaireCourrant) {
60
		initialiserOnglet(formulaireCourrant);
61
		setId("contenu");
62
		setText(Mediateur.i18nC.collectionContenu());
63
 
64
		creerFieldsetNature();
65
		// TODO : réaliser un champ couverture géographique détaillé
66
		creerFieldsetPeriode();
67
		creerFieldsetClassement();
68
		creerFieldsetEtiquette();
69
		creerFieldsetIntegration();
70
	}
71
 
72
	private void creerFieldsetNature() {
73
		FieldSet natureFieldSet = new FieldSet();
964 jpm 74
		natureFieldSet.setHeading(i18nC.collectionNatureTitre());
858 jpm 75
		natureFieldSet.setCollapsible(true);
76
		natureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
77
 
78
		natureChp = new ChampCaseACocher(i18nC.natureVegetaleContenu(), "natureVegetale", false);
79
		natureFieldSet.add(natureChp);
80
 
81
		specialiteChp = new TextArea();
82
		specialiteChp.setFieldLabel(i18nC.specialiteCollection());
83
		specialiteChp.setToolTip(i18nC.specialiteCollectionInfo());
84
		natureFieldSet.add(specialiteChp, new FormData(550, 0));
85
 
86
		add(natureFieldSet);
87
	}
88
 
89
	private void creerFieldsetPeriode() {
90
		FieldSet periodeFieldSet = new FieldSet();
964 jpm 91
		periodeFieldSet.setHeading(i18nC.collectionConstitutionTitre());
858 jpm 92
		periodeFieldSet.setCollapsible(true);
93
		periodeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
94
 
95
		periodeConstitutionChp = new ChampCaseACocher(i18nC.periodeConstitution(), "siecleNaturaliste", false);
96
		periodeFieldSet.add(periodeConstitutionChp);
97
 
859 jpm 98
		ConteneurMultiChamps dateDebutConteneur = new ConteneurMultiChamps(i18nC.dateDebutCollection());
99
 
858 jpm 100
		dateDebutChp  = new DateField();
859 jpm 101
		dateDebutConteneur.ajouterChamp(dateDebutChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
102
 
858 jpm 103
		dateDebutCombo = new ChampComboBoxListeValeurs(null, "dateDebut");
104
		dateDebutCombo.setTrie("id_valeur");
859 jpm 105
		dateDebutConteneur.ajouterChamp(dateDebutCombo);
858 jpm 106
 
859 jpm 107
		periodeFieldSet.add(dateDebutConteneur);
108
 
109
		ConteneurMultiChamps dateFinConteneur = new ConteneurMultiChamps(i18nC.dateFinCollection());
110
 
111
		dateFinChp = new DateField();
112
		dateFinConteneur.ajouterChamp(dateFinChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
113
 
858 jpm 114
		dateFinCombo = new ChampComboBoxListeValeurs(null, "dateFin");
115
		dateFinCombo.setTrie("id_valeur");
859 jpm 116
		dateFinConteneur.ajouterChamp(dateFinCombo);
858 jpm 117
 
859 jpm 118
		periodeFieldSet.add(dateFinConteneur);
119
 
858 jpm 120
		add(periodeFieldSet);
121
	}
122
 
123
	private void creerFieldsetClassement() {
124
		FieldSet classementFieldSet = new FieldSet();
964 jpm 125
		classementFieldSet.setHeading(i18nC.collectionClassementTitre());
858 jpm 126
		classementFieldSet.setCollapsible(true);
127
		classementFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
859 jpm 128
 
129
		etatClassementCombo  = new ChampComboBoxListeValeurs(i18nC.etatClassementCollection(), "etat", tabIndex++);
130
		classementFieldSet.add(etatClassementCombo);
131
 
858 jpm 132
		annotationClassementChp = new TextArea();
133
		annotationClassementChp.setFieldLabel(i18nC.annotationClassementCollection());
134
		classementFieldSet.add(annotationClassementChp, new FormData(550, 0));
135
 
859 jpm 136
		Text infoClassement = new Text(i18nC.annotationClassementCollectionInfo());
137
		classementFieldSet.add(infoClassement);
858 jpm 138
 
139
		add(classementFieldSet);
140
	}
141
 
142
	private void creerFieldsetEtiquette() {
143
		FieldSet etiquetteFieldSet = new FieldSet();
964 jpm 144
		etiquetteFieldSet.setHeading(i18nC.collectionEtiquetteTitre());
858 jpm 145
		etiquetteFieldSet.setCollapsible(true);
146
		etiquetteFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
147
 
148
		Text renseignementPoucentLabel = new Text(i18nC.renseignementEtiquetteCollection());
149
		renseignementPoucentLabel.setTagName("label");
150
		renseignementPoucentLabel.setStyleName("x-form-item-label");
151
		etiquetteFieldSet.add(renseignementPoucentLabel);
152
 
153
		auteurTitrePourcentChp = new ChampSliderPourcentage(i18nC.auteurTitrePourcentCollection());
154
		etiquetteFieldSet.add(auteurTitrePourcentChp, new FormData(200, 0));
155
 
156
		famillePourcentChp = new ChampSliderPourcentage(i18nC.famillePourcentCollection());
157
		etiquetteFieldSet.add(famillePourcentChp, new FormData(200, 0));
158
 
159
		genrePourcentChp = new ChampSliderPourcentage(i18nC.genrePourcentCollection());
160
		etiquetteFieldSet.add(genrePourcentChp, new FormData(200, 0));
161
 
162
		spPourcentChp = new ChampSliderPourcentage(i18nC.spPourcentCollection());
163
		etiquetteFieldSet.add(spPourcentChp, new FormData(200, 0));
164
 
165
		auteurSpPourcentChp = new ChampSliderPourcentage(i18nC.auteurSpPourcentCollection());
166
		etiquetteFieldSet.add(auteurSpPourcentChp, new FormData(200, 0));
167
 
168
		localitePourcentChp = new ChampSliderPourcentage(i18nC.localitePourcentCollection());
169
		etiquetteFieldSet.add(localitePourcentChp, new FormData(200, 0));
170
 
171
		datePourcentChp = new ChampSliderPourcentage(i18nC.datePourcentCollection());
172
		etiquetteFieldSet.add(datePourcentChp, new FormData(200, 0));
173
 
174
		precisionLocaliteCombo  = new ChampComboBoxListeValeurs(i18nC.precisionLocaliteCollection(), "onep", tabIndex++);
175
		etiquetteFieldSet.add(precisionLocaliteCombo);
176
 
177
		precisionDateCombo  = new ChampComboBoxListeValeurs(i18nC.precisionDateCollection(), "onep", tabIndex++);
178
		etiquetteFieldSet.add(precisionDateCombo);
179
 
180
		etiquetteAnnotationChp  = new TextArea();
181
		etiquetteAnnotationChp.setFieldLabel(i18nC.etiquetteAnnotationCollection());
182
		etiquetteAnnotationChp.setToolTip(i18nC.etiquetteAnnotationCollectionInfo());
183
		etiquetteFieldSet.add(etiquetteAnnotationChp, new FormData(550, 0));
184
 
185
		add(etiquetteFieldSet);
186
	}
187
 
954 jpm 188
	private String collecterEtiquetteRenseignement() {
189
		String renseignement = "";
190
		renseignement  += creerTypeValeur("AT", auteurTitrePourcentChp.getValeur());
191
		renseignement  += creerTypeValeur("F", famillePourcentChp.getValeur());
192
		renseignement  += creerTypeValeur("G", genrePourcentChp.getValeur());
193
		renseignement  += creerTypeValeur("SP", spPourcentChp.getValeur());
194
		renseignement  += creerTypeValeur("ASP", auteurSpPourcentChp.getValeur());
195
		renseignement  += creerTypeValeur("L", localitePourcentChp.getValeur());
196
		renseignement  += creerTypeValeur("D", datePourcentChp.getValeur());
197
		renseignement = renseignement.replaceFirst(aDonnee.SEPARATEUR_VALEURS+"$", "");
198
		return renseignement;
199
	}
200
 
201
	private String creerTypeValeur(String type, String valeur) {
202
		String retour = "";
203
		if (!UtilString.isEmpty(valeur)) {
204
			retour = type+aDonnee.SEPARATEUR_TYPE_VALEUR+valeur+aDonnee.SEPARATEUR_VALEURS;
205
		}
206
		return retour;
207
	}
208
 
209
	private void peuplerEtiquetteRenseignement(String valeurTruk) {
210
		HashMap<String,String> infos = parserEtiquetteRenseignement(valeurTruk);
211
		if (infos != null) {
212
			Iterator<String> it = infos.keySet().iterator();
213
			while (it.hasNext()) {
214
				String cle = it.next();
215
				if (cle.equals("AT")) {
216
					auteurTitrePourcentChp.peupler(infos.get(cle));
217
				} else if (cle.equals("F")) {
218
					famillePourcentChp.peupler(infos.get(cle));
219
				} else if (cle.equals("G")) {
220
					genrePourcentChp.peupler(infos.get(cle));
221
				} else if (cle.equals("SP")) {
222
					spPourcentChp.peupler(infos.get(cle));
223
				} else if (cle.equals("ASP")) {
224
					auteurSpPourcentChp.peupler(infos.get(cle));
225
				} else if (cle.equals("L")) {
226
					localitePourcentChp.peupler(infos.get(cle));
227
				} else if (cle.equals("D")) {
956 jpm 228
					datePourcentChp.peupler(infos.get(cle));
954 jpm 229
				}
230
			}
231
		}
232
	}
233
 
964 jpm 234
	public static HashMap<String,String> parserEtiquetteRenseignement(String valeurTruk) {
954 jpm 235
		HashMap<String,String> infos = null;
236
		if (!UtilString.isEmpty(valeurTruk)) {
237
			infos = new HashMap<String,String>();
238
			String[] pourcentages = valeurTruk.split(Pattern.quote(aDonnee.SEPARATEUR_VALEURS));
239
			for (int i = 0; i < pourcentages.length; i++) {
240
				String[] pourcentageIdValeur = pourcentages[i].split(Pattern.quote(aDonnee.SEPARATEUR_TYPE_VALEUR));
241
				String id = pourcentageIdValeur[0];
242
				String valeur = pourcentageIdValeur[1];
243
				infos.put(id, valeur);
244
			}
245
		}
246
		return infos;
247
	}
248
 
858 jpm 249
	private void creerFieldsetIntegration() {
250
		FieldSet integrationFieldSet = new FieldSet();
964 jpm 251
		integrationFieldSet.setHeading(i18nC.collectionIntegreeTitre());
858 jpm 252
		integrationFieldSet.setCollapsible(true);
253
		integrationFieldSet.setLayout(Formulaire.creerFormLayout(350, alignementLabelDefaut));
254
 
255
		integreCollectionCombo  = new ChampComboBoxListeValeurs(i18nC.integreCollection(), "onpi", tabIndex++);
256
		integrationFieldSet.add(integreCollectionCombo);
257
 
258
		infoIntegreCollectionCombo  = new ChampComboBoxListeValeurs(i18nC.infoIntegreCollection(), "onp", tabIndex++);
259
		integrationFieldSet.add(infoIntegreCollectionCombo);
260
 
261
		Text infoIntegration = new Text(i18nC.infoIntegrationCollection());
262
		integrationFieldSet.add(infoIntegration);
263
 
264
		add(integrationFieldSet);
265
	}
266
 
954 jpm 267
	public void peupler() {
268
		initialiserCollection();
269
		if (collectionBotanique != null) {
955 jpm 270
			natureChp.peupler(collectionBotanique.getNature());
271
			specialiteChp.setValue(collectionBotanique.getSpecialite());
954 jpm 272
 
955 jpm 273
			periodeConstitutionChp.peupler(collection.getPeriodeConstitution());
274
			dateDebutChp.setValue(UtilString.formaterEnDate(collectionBotanique.getRecolteDateDebut()));
275
			dateDebutCombo.peupler(collectionBotanique.getRecolteDateDebutType());
276
			dateFinChp.setValue(UtilString.formaterEnDate(collectionBotanique.getRecolteDateFin()));
277
			dateFinCombo.peupler(collectionBotanique.getRecolteDateFinType());
954 jpm 278
 
955 jpm 279
			etatClassementCombo.peupler(collectionBotanique.getClassementEtat());
280
			annotationClassementChp.setValue(collectionBotanique.getClassementAnnotation());
954 jpm 281
 
955 jpm 282
			peuplerEtiquetteRenseignement(collectionBotanique.getEtiquetteRenseignement());
283
			precisionLocaliteCombo.peupler(collectionBotanique.getPrecisionLocalite());
284
			precisionDateCombo.peupler(collectionBotanique.getPrecisionDate());
285
			etiquetteAnnotationChp.setValue(collectionBotanique.getAnnotationsDiverses());
954 jpm 286
 
955 jpm 287
			integreCollectionCombo.peupler(collectionBotanique.getCollectionIntegre());
288
			infoIntegreCollectionCombo.peupler(collectionBotanique.getCollectionIntegreInfo());
858 jpm 289
		}
290
	}
291
 
954 jpm 292
	public void collecter() {
293
		initialiserCollection();
294
		if (etreAccede()) {
295
			collectionBotaniqueCollectee.setNature(natureChp.getValeur());
296
			collectionBotaniqueCollectee.setSpecialite(specialiteChp.getValue());
858 jpm 297
 
954 jpm 298
			collectionCollectee.setPeriodeConstitution(periodeConstitutionChp.getValeur());
299
			collectionBotaniqueCollectee.setRecolteDateDebut(UtilDate.formaterEnString(dateDebutChp.getValue()));
300
			collectionBotaniqueCollectee.setRecolteDateDebutType(dateDebutCombo.getValeur());
301
			collectionBotaniqueCollectee.setRecolteDateFin(UtilDate.formaterEnString(dateFinChp.getValue()));
302
			collectionBotaniqueCollectee.setRecolteDateFinType(dateFinCombo.getValeur());
303
 
304
			collectionBotaniqueCollectee.setClassementEtat(etatClassementCombo.getValeur());
305
			collectionBotaniqueCollectee.setClassementAnnotation(annotationClassementChp.getValue());
306
 
307
			collectionBotaniqueCollectee.setEtiquetteRenseignement(collecterEtiquetteRenseignement());
308
			collectionBotaniqueCollectee.setPrecisionLocalite(precisionLocaliteCombo.getValeur());
309
			collectionBotaniqueCollectee.setPrecisionDate(precisionDateCombo.getValeur());
310
			collectionBotaniqueCollectee.setAnnotationsDiverses(etiquetteAnnotationChp.getValue());
311
 
312
			collectionBotaniqueCollectee.setCollectionIntegre(integreCollectionCombo.getValeur());
313
			collectionBotaniqueCollectee.setCollectionIntegreInfo(infoIntegreCollectionCombo.getValeur());
858 jpm 314
		}
315
	}
954 jpm 316
 
317
	private void initialiserCollection() {
318
		collection = ((CollectionForm) formulaire).collection;
319
		if (collection != null) {
320
			collectionBotanique = collection.getBotanique();
321
		}
322
 
323
		collectionCollectee = ((CollectionForm) formulaire).collectionCollectee;
324
		if (collectionCollectee != null) {
325
			collectionBotaniqueCollectee = collectionCollectee.getBotanique();
326
		}
327
	}
328
 
329
	public void rafraichir(Object nouvellesDonnees) {
330
		Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
331
	}
332
}