Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
665 jp_milcent 1
package org.tela_botanica.client.composants;
2
 
3
import java.util.HashMap;
4
 
691 jp_milcent 5
import org.tela_botanica.client.Mediateur;
665 jp_milcent 6
import org.tela_botanica.client.images.Images;
7
 
8
import com.extjs.gxt.ui.client.event.ButtonEvent;
9
import com.extjs.gxt.ui.client.event.SelectionListener;
10
import com.extjs.gxt.ui.client.widget.LayoutContainer;
11
import com.extjs.gxt.ui.client.widget.MessageBox;
12
import com.extjs.gxt.ui.client.widget.Text;
13
import com.extjs.gxt.ui.client.widget.button.Button;
14
import com.extjs.gxt.ui.client.widget.form.HiddenField;
15
import com.extjs.gxt.ui.client.widget.form.LabelField;
16
import com.extjs.gxt.ui.client.widget.form.TextField;
17
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
18
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
19
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
20
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
21
import com.google.gwt.core.client.GWT;
22
 
23
public class ChampMultiValeurs extends LayoutContainer {
24
	String idChampCache = null;
25
 
26
	String nomLabelChampTxt = "";
27
 
28
	String titreErreur = null;
29
	String valeurVideMsg = null;
30
	String valeurIdentiqueMsg = null;
31
 
32
	LayoutContainer principalLayout = null;
33
	TextField<String> champTexte = null;
34
	HiddenField<String> champRecapitulatif = null;
35
	HashMap<String, LayoutContainer> valeurs = null;
36
 
37
	int largeurTotale = 420;
38
	int largeurBouton = 20;
39
	int largeurChamp = 0;
40
 
41
	public ChampMultiValeurs() {
42
		initialiserChampMultiValeur(null, 0);
43
	}
44
 
45
	public ChampMultiValeurs(String label) {
46
		initialiserChampMultiValeur(label, 0);
47
	}
48
 
49
	public ChampMultiValeurs(String label, int largeurTotale) {
50
		initialiserChampMultiValeur(label, largeurTotale);
51
	}
52
 
53
	public void setLabel(String label) {
54
		if (label == null) {
55
			label = "";
56
		}
57
		nomLabelChampTxt = label;
58
	}
59
 
60
	public void setLargeur(int largeur) {
61
		if (largeur != 0 && largeur > 20) {
62
			largeurTotale = largeur;
63
		}
64
		largeurChamp = largeurTotale - largeurBouton;
65
	}
66
 
67
	private void initialiserChampMultiValeur(String label, int largeur) {
68
		setLabel(label);
69
		setLargeur(largeur);
70
 
691 jp_milcent 71
		titreErreur = Mediateur.i18nC.erreurSaisieTitre();
72
		valeurVideMsg = Mediateur.i18nC.demanderValeur();
73
		valeurIdentiqueMsg = Mediateur.i18nC.valeurDejaPresente();
665 jp_milcent 74
 
75
		valeurs = new HashMap<String, LayoutContainer>();
76
		champRecapitulatif = new HiddenField<String>();
77
		champRecapitulatif.setValue("");
78
 
79
		setLayout(new FormLayout());
80
 
81
		creerChampMultiValeurs();
82
	}
83
 
84
	private void creerChampMultiValeurs() {
85
		principalLayout = new LayoutContainer();
86
		principalLayout.setLayout(new RowLayout());
87
 
88
		LabelField label = new LabelField(nomLabelChampTxt + ":");
89
		label.setWidth(largeurChamp);
90
		principalLayout.add(label);
91
 
92
		LayoutContainer colonneLayout = new LayoutContainer();
93
		colonneLayout.setLayout(new ColumnLayout());
94
 
95
		champTexte = new TextField<String>();
96
		colonneLayout.add(champTexte, new ColumnData(largeurChamp));
97
 
98
		Button ajouterBouton = new Button();
99
		ajouterBouton.setIcon(Images.ICONES.ajouter());
100
		ajouterBouton.addSelectionListener(
101
			new SelectionListener<ButtonEvent>() {
102
				public void componentSelected(ButtonEvent ce) {
103
					String valeurChampTxt = (String) champTexte.getValue();
104
					if ((valeurChampTxt == null) || (valeurChampTxt.trim().equals("")))	{
105
						MessageBox.alert(titreErreur, valeurVideMsg, null);
106
					} else if (valeurs.get(valeurChampTxt) != null){
107
						MessageBox.alert(titreErreur, valeurIdentiqueMsg, null);
108
					} else {
109
						ajouterValeur(valeurChampTxt);
110
					}
111
				}
112
			});
113
		colonneLayout.add(ajouterBouton, new ColumnData(largeurBouton));
114
 
115
		principalLayout.add(champRecapitulatif);
116
		principalLayout.add(colonneLayout);
117
		add(principalLayout);
118
	}
119
 
120
	private void ajouterValeur(final String texte) 	{
121
		LayoutContainer colonneLayout = new LayoutContainer();
122
		colonneLayout.setLayout(new ColumnLayout());
123
		valeurs.put(texte, colonneLayout);
124
 
125
		Text champTxt = new Text();
126
		champTxt.setText(texte);
127
		colonneLayout.add(champTxt, new ColumnData(largeurChamp));
128
 
129
		Button supprimerBouton = new Button();
130
		supprimerBouton.setIcon(Images.ICONES.supprimer());
131
		supprimerBouton.setData("valeur", texte);
132
		supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
133
			public void componentSelected(ButtonEvent ce) {
134
				String valeur = ce.getComponent().getData("valeur");
135
				LayoutContainer valeurLayout = valeurs.get(valeur);
136
				principalLayout.remove(valeurLayout);
137
 
138
				valeurs.remove(valeur);
139
 
140
				supprimerValeurAuRecapitulatif(valeur);
141
 
142
				actualiserLayoutGlobal();
143
			}
144
		});
145
		colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton));
146
 
147
		// Ajout du layout de la valeur au layout principal
148
		principalLayout.add(colonneLayout);
149
 
150
		// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
151
		ajouterValeurAuRecapitulatif(texte);
152
 
153
		actualiserLayoutGlobal();
154
	}
155
 
156
	private void actualiserLayoutGlobal() {
157
		GWT.log("Valeurs : "+getValeurs(), null);
158
		layout();
159
	}
160
 
161
	private void ajouterValeurAuRecapitulatif(String texte) {
162
		String texteRecapitulatif = "";
163
		if (champRecapitulatif.getValue() != null)	{
164
			texteRecapitulatif = champRecapitulatif.getValue();
165
		}
166
		texteRecapitulatif += texte + ";;";
167
		champRecapitulatif.setValue(texteRecapitulatif);
168
	}
169
 
170
	private void supprimerValeurAuRecapitulatif(String texte) {
171
		if (champRecapitulatif.getValue() != null)	{
172
			String texteRecapitulatif = champRecapitulatif.getValue();
173
			texteRecapitulatif = texteRecapitulatif.replace(texte + ";;", "");
174
			champRecapitulatif.setValue(texteRecapitulatif);
175
		}
176
	}
177
 
178
	public String getValeurs() {
179
		String texteRecapitulatif = "";
180
		if (champRecapitulatif.getValue() != null) {
181
			texteRecapitulatif = champRecapitulatif.getValue();
182
			texteRecapitulatif = texteRecapitulatif.replaceAll("(.*);;$", "$1");
183
		}
184
		return texteRecapitulatif;
185
	}
669 jp_milcent 186
 
187
	public void peupler(String chaineExistante) {
691 jp_milcent 188
		if (chaineExistante != null && !chaineExistante.trim().equals("")) {
669 jp_milcent 189
			String[] valeurs = chaineExistante.split(";;");
190
			for (int i = 0; i < valeurs.length; i++) {
191
				ajouterValeur(valeurs[i]);
192
			}
193
		}
194
	}
665 jp_milcent 195
}