Subversion Repositories eFlore/Applications.coel

Rev

Rev 1513 | Rev 1880 | 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
 
1083 jpm 32
	public static final String ID = "contenu";
954 jpm 33
	private Collection collection = null;
34
	private CollectionBotanique collectionBotanique = null;
35
	private Collection collectionCollectee = null;
36
	private CollectionBotanique collectionBotaniqueCollectee = null;
37
 
858 jpm 38
	private ChampCaseACocher natureChp = null;
39
	private TextArea specialiteChp = 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);
1083 jpm 61
		setId(ID);
858 jpm 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();
1680 raphael 74
		natureFieldSet.setHeadingHtml(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();
1680 raphael 91
		periodeFieldSet.setHeadingHtml(i18nC.collectionConstitutionTitre());
858 jpm 92
		periodeFieldSet.setCollapsible(true);
93
		periodeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
94
 
859 jpm 95
		ConteneurMultiChamps dateDebutConteneur = new ConteneurMultiChamps(i18nC.dateDebutCollection());
96
 
858 jpm 97
		dateDebutChp  = new DateField();
975 jpm 98
		dateDebutChp.getPropertyEditor().setFormat(UtilDate.formatDateFr);
99
		dateDebutChp.getPropertyEditor().setParseStrict(false);
100
		dateDebutChp.setFormatValue(true);
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();
975 jpm 112
		dateFinChp.getPropertyEditor().setFormat(UtilDate.formatDateFr);
113
		dateFinChp.getPropertyEditor().setParseStrict(false);
114
		dateFinChp.setFormatValue(true);
859 jpm 115
		dateFinConteneur.ajouterChamp(dateFinChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));
116
 
858 jpm 117
		dateFinCombo = new ChampComboBoxListeValeurs(null, "dateFin");
118
		dateFinCombo.setTrie("id_valeur");
859 jpm 119
		dateFinConteneur.ajouterChamp(dateFinCombo);
858 jpm 120
 
859 jpm 121
		periodeFieldSet.add(dateFinConteneur);
122
 
975 jpm 123
		Text infoDate = new Text(i18nC.dateApproximativeInfo());
124
		periodeFieldSet.add(infoDate);
125
 
858 jpm 126
		add(periodeFieldSet);
127
	}
128
 
129
	private void creerFieldsetClassement() {
130
		FieldSet classementFieldSet = new FieldSet();
1680 raphael 131
		classementFieldSet.setHeadingHtml(i18nC.collectionClassementTitre());
858 jpm 132
		classementFieldSet.setCollapsible(true);
133
		classementFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
859 jpm 134
 
975 jpm 135
		etatClassementCombo  = new ChampComboBoxListeValeurs(i18nC.etatClassementCollection(), "etatClassement", tabIndex++);
859 jpm 136
		classementFieldSet.add(etatClassementCombo);
137
 
858 jpm 138
		annotationClassementChp = new TextArea();
139
		annotationClassementChp.setFieldLabel(i18nC.annotationClassementCollection());
140
		classementFieldSet.add(annotationClassementChp, new FormData(550, 0));
141
 
859 jpm 142
		Text infoClassement = new Text(i18nC.annotationClassementCollectionInfo());
143
		classementFieldSet.add(infoClassement);
858 jpm 144
 
145
		add(classementFieldSet);
146
	}
147
 
148
	private void creerFieldsetEtiquette() {
149
		FieldSet etiquetteFieldSet = new FieldSet();
1680 raphael 150
		etiquetteFieldSet.setHeadingHtml(i18nC.collectionEtiquetteTitre());
858 jpm 151
		etiquetteFieldSet.setCollapsible(true);
152
		etiquetteFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
153
 
154
		Text renseignementPoucentLabel = new Text(i18nC.renseignementEtiquetteCollection());
155
		renseignementPoucentLabel.setTagName("label");
156
		renseignementPoucentLabel.setStyleName("x-form-item-label");
157
		etiquetteFieldSet.add(renseignementPoucentLabel);
158
 
159
		auteurTitrePourcentChp = new ChampSliderPourcentage(i18nC.auteurTitrePourcentCollection());
160
		etiquetteFieldSet.add(auteurTitrePourcentChp, new FormData(200, 0));
161
 
162
		famillePourcentChp = new ChampSliderPourcentage(i18nC.famillePourcentCollection());
163
		etiquetteFieldSet.add(famillePourcentChp, new FormData(200, 0));
164
 
165
		genrePourcentChp = new ChampSliderPourcentage(i18nC.genrePourcentCollection());
166
		etiquetteFieldSet.add(genrePourcentChp, new FormData(200, 0));
167
 
168
		spPourcentChp = new ChampSliderPourcentage(i18nC.spPourcentCollection());
169
		etiquetteFieldSet.add(spPourcentChp, new FormData(200, 0));
170
 
171
		auteurSpPourcentChp = new ChampSliderPourcentage(i18nC.auteurSpPourcentCollection());
172
		etiquetteFieldSet.add(auteurSpPourcentChp, new FormData(200, 0));
173
 
174
		localitePourcentChp = new ChampSliderPourcentage(i18nC.localitePourcentCollection());
175
		etiquetteFieldSet.add(localitePourcentChp, new FormData(200, 0));
176
 
177
		datePourcentChp = new ChampSliderPourcentage(i18nC.datePourcentCollection());
178
		etiquetteFieldSet.add(datePourcentChp, new FormData(200, 0));
179
 
180
		precisionLocaliteCombo  = new ChampComboBoxListeValeurs(i18nC.precisionLocaliteCollection(), "onep", tabIndex++);
181
		etiquetteFieldSet.add(precisionLocaliteCombo);
182
 
183
		precisionDateCombo  = new ChampComboBoxListeValeurs(i18nC.precisionDateCollection(), "onep", tabIndex++);
184
		etiquetteFieldSet.add(precisionDateCombo);
185
 
186
		etiquetteAnnotationChp  = new TextArea();
187
		etiquetteAnnotationChp.setFieldLabel(i18nC.etiquetteAnnotationCollection());
188
		etiquetteAnnotationChp.setToolTip(i18nC.etiquetteAnnotationCollectionInfo());
189
		etiquetteFieldSet.add(etiquetteAnnotationChp, new FormData(550, 0));
190
 
191
		add(etiquetteFieldSet);
192
	}
193
 
954 jpm 194
	private String collecterEtiquetteRenseignement() {
195
		String renseignement = "";
196
		renseignement  += creerTypeValeur("AT", auteurTitrePourcentChp.getValeur());
197
		renseignement  += creerTypeValeur("F", famillePourcentChp.getValeur());
198
		renseignement  += creerTypeValeur("G", genrePourcentChp.getValeur());
199
		renseignement  += creerTypeValeur("SP", spPourcentChp.getValeur());
200
		renseignement  += creerTypeValeur("ASP", auteurSpPourcentChp.getValeur());
201
		renseignement  += creerTypeValeur("L", localitePourcentChp.getValeur());
202
		renseignement  += creerTypeValeur("D", datePourcentChp.getValeur());
203
		renseignement = renseignement.replaceFirst(aDonnee.SEPARATEUR_VALEURS+"$", "");
204
		return renseignement;
205
	}
206
 
207
	private String creerTypeValeur(String type, String valeur) {
208
		String retour = "";
209
		if (!UtilString.isEmpty(valeur)) {
210
			retour = type+aDonnee.SEPARATEUR_TYPE_VALEUR+valeur+aDonnee.SEPARATEUR_VALEURS;
211
		}
212
		return retour;
213
	}
214
 
215
	private void peuplerEtiquetteRenseignement(String valeurTruk) {
216
		HashMap<String,String> infos = parserEtiquetteRenseignement(valeurTruk);
217
		if (infos != null) {
218
			Iterator<String> it = infos.keySet().iterator();
219
			while (it.hasNext()) {
220
				String cle = it.next();
221
				if (cle.equals("AT")) {
222
					auteurTitrePourcentChp.peupler(infos.get(cle));
223
				} else if (cle.equals("F")) {
224
					famillePourcentChp.peupler(infos.get(cle));
225
				} else if (cle.equals("G")) {
226
					genrePourcentChp.peupler(infos.get(cle));
227
				} else if (cle.equals("SP")) {
228
					spPourcentChp.peupler(infos.get(cle));
229
				} else if (cle.equals("ASP")) {
230
					auteurSpPourcentChp.peupler(infos.get(cle));
231
				} else if (cle.equals("L")) {
232
					localitePourcentChp.peupler(infos.get(cle));
233
				} else if (cle.equals("D")) {
956 jpm 234
					datePourcentChp.peupler(infos.get(cle));
954 jpm 235
				}
236
			}
237
		}
238
	}
239
 
964 jpm 240
	public static HashMap<String,String> parserEtiquetteRenseignement(String valeurTruk) {
954 jpm 241
		HashMap<String,String> infos = null;
242
		if (!UtilString.isEmpty(valeurTruk)) {
243
			infos = new HashMap<String,String>();
244
			String[] pourcentages = valeurTruk.split(Pattern.quote(aDonnee.SEPARATEUR_VALEURS));
245
			for (int i = 0; i < pourcentages.length; i++) {
246
				String[] pourcentageIdValeur = pourcentages[i].split(Pattern.quote(aDonnee.SEPARATEUR_TYPE_VALEUR));
247
				String id = pourcentageIdValeur[0];
248
				String valeur = pourcentageIdValeur[1];
249
				infos.put(id, valeur);
250
			}
251
		}
252
		return infos;
253
	}
254
 
858 jpm 255
	private void creerFieldsetIntegration() {
256
		FieldSet integrationFieldSet = new FieldSet();
1680 raphael 257
		integrationFieldSet.setHeadingHtml(i18nC.collectionIntegreeTitre());
858 jpm 258
		integrationFieldSet.setCollapsible(true);
259
		integrationFieldSet.setLayout(Formulaire.creerFormLayout(350, alignementLabelDefaut));
260
 
261
		integreCollectionCombo  = new ChampComboBoxListeValeurs(i18nC.integreCollection(), "onpi", tabIndex++);
262
		integrationFieldSet.add(integreCollectionCombo);
263
 
264
		infoIntegreCollectionCombo  = new ChampComboBoxListeValeurs(i18nC.infoIntegreCollection(), "onp", tabIndex++);
265
		integrationFieldSet.add(infoIntegreCollectionCombo);
266
 
267
		Text infoIntegration = new Text(i18nC.infoIntegrationCollection());
268
		integrationFieldSet.add(infoIntegration);
269
 
270
		add(integrationFieldSet);
271
	}
272
 
954 jpm 273
	public void peupler() {
274
		initialiserCollection();
275
		if (collectionBotanique != null) {
955 jpm 276
			natureChp.peupler(collectionBotanique.getNature());
277
			specialiteChp.setValue(collectionBotanique.getSpecialite());
954 jpm 278
 
955 jpm 279
			dateDebutChp.setValue(UtilString.formaterEnDate(collectionBotanique.getRecolteDateDebut()));
280
			dateDebutCombo.peupler(collectionBotanique.getRecolteDateDebutType());
281
			dateFinChp.setValue(UtilString.formaterEnDate(collectionBotanique.getRecolteDateFin()));
282
			dateFinCombo.peupler(collectionBotanique.getRecolteDateFinType());
954 jpm 283
 
955 jpm 284
			etatClassementCombo.peupler(collectionBotanique.getClassementEtat());
285
			annotationClassementChp.setValue(collectionBotanique.getClassementAnnotation());
954 jpm 286
 
955 jpm 287
			peuplerEtiquetteRenseignement(collectionBotanique.getEtiquetteRenseignement());
288
			precisionLocaliteCombo.peupler(collectionBotanique.getPrecisionLocalite());
289
			precisionDateCombo.peupler(collectionBotanique.getPrecisionDate());
290
			etiquetteAnnotationChp.setValue(collectionBotanique.getAnnotationsDiverses());
954 jpm 291
 
955 jpm 292
			integreCollectionCombo.peupler(collectionBotanique.getCollectionIntegre());
293
			infoIntegreCollectionCombo.peupler(collectionBotanique.getCollectionIntegreInfo());
858 jpm 294
		}
295
	}
296
 
954 jpm 297
	public void collecter() {
298
		initialiserCollection();
299
		if (etreAccede()) {
300
			collectionBotaniqueCollectee.setNature(natureChp.getValeur());
301
			collectionBotaniqueCollectee.setSpecialite(specialiteChp.getValue());
858 jpm 302
 
954 jpm 303
			collectionBotaniqueCollectee.setRecolteDateDebut(UtilDate.formaterEnString(dateDebutChp.getValue()));
304
			collectionBotaniqueCollectee.setRecolteDateDebutType(dateDebutCombo.getValeur());
305
			collectionBotaniqueCollectee.setRecolteDateFin(UtilDate.formaterEnString(dateFinChp.getValue()));
306
			collectionBotaniqueCollectee.setRecolteDateFinType(dateFinCombo.getValeur());
307
 
308
			collectionBotaniqueCollectee.setClassementEtat(etatClassementCombo.getValeur());
309
			collectionBotaniqueCollectee.setClassementAnnotation(annotationClassementChp.getValue());
310
 
311
			collectionBotaniqueCollectee.setEtiquetteRenseignement(collecterEtiquetteRenseignement());
312
			collectionBotaniqueCollectee.setPrecisionLocalite(precisionLocaliteCombo.getValeur());
313
			collectionBotaniqueCollectee.setPrecisionDate(precisionDateCombo.getValeur());
314
			collectionBotaniqueCollectee.setAnnotationsDiverses(etiquetteAnnotationChp.getValue());
315
 
316
			collectionBotaniqueCollectee.setCollectionIntegre(integreCollectionCombo.getValeur());
317
			collectionBotaniqueCollectee.setCollectionIntegreInfo(infoIntegreCollectionCombo.getValeur());
858 jpm 318
		}
319
	}
954 jpm 320
 
321
	private void initialiserCollection() {
322
		collection = ((CollectionForm) formulaire).collection;
323
		if (collection != null) {
324
			collectionBotanique = collection.getBotanique();
325
		}
326
 
327
		collectionCollectee = ((CollectionForm) formulaire).collectionCollectee;
328
		if (collectionCollectee != null) {
329
			collectionBotaniqueCollectee = collectionCollectee.getBotanique();
330
		}
331
	}
332
 
333
	public void rafraichir(Object nouvellesDonnees) {
334
		Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
335
	}
336
}