Subversion Repositories eFlore/Applications.coel

Rev

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