Subversion Repositories eFlore/Applications.coel

Rev

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

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