Subversion Repositories eFlore/Applications.coel

Rev

Rev 693 | Rev 700 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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