Subversion Repositories eFlore/Applications.coel

Rev

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

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