Subversion Repositories eFlore/Applications.coel

Rev

Rev 721 | Rev 812 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 721 Rev 727
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
import org.tela_botanica.client.modeles.Valeur;
7
import org.tela_botanica.client.modeles.Valeur;
8
 
8
 
9
import com.extjs.gxt.ui.client.event.ButtonEvent;
9
import com.extjs.gxt.ui.client.event.ButtonEvent;
10
import com.extjs.gxt.ui.client.event.SelectionListener;
10
import com.extjs.gxt.ui.client.event.SelectionListener;
11
import com.extjs.gxt.ui.client.store.ListStore;
11
import com.extjs.gxt.ui.client.store.ListStore;
12
import com.extjs.gxt.ui.client.widget.LayoutContainer;
12
import com.extjs.gxt.ui.client.widget.LayoutContainer;
13
import com.extjs.gxt.ui.client.widget.MessageBox;
13
import com.extjs.gxt.ui.client.widget.MessageBox;
14
import com.extjs.gxt.ui.client.widget.Text;
14
import com.extjs.gxt.ui.client.widget.Text;
15
import com.extjs.gxt.ui.client.widget.button.Button;
15
import com.extjs.gxt.ui.client.widget.button.Button;
16
import com.extjs.gxt.ui.client.widget.form.ComboBox;
16
import com.extjs.gxt.ui.client.widget.form.ComboBox;
17
import com.extjs.gxt.ui.client.widget.form.HiddenField;
17
import com.extjs.gxt.ui.client.widget.form.HiddenField;
18
import com.extjs.gxt.ui.client.widget.form.LabelField;
18
import com.extjs.gxt.ui.client.widget.form.LabelField;
19
import com.extjs.gxt.ui.client.widget.form.TextField;
19
import com.extjs.gxt.ui.client.widget.form.TextField;
20
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
20
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
21
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
21
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
22
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
22
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
23
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
23
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
24
import com.google.gwt.core.client.GWT;
24
import com.google.gwt.core.client.GWT;
25
 
25
 
26
public class ChampMultiValeurs extends LayoutContainer {
26
public class ChampMultiValeurs extends LayoutContainer {
-
 
27
	//TODO : changer le champRecapitulatif par une hashMap
-
 
28
	//TODO : autoriser la modification des champs saisis
-
 
29
 
27
	String idChampCache = null;
30
	String idChampCache = null;
28
	
31
	
29
	String nomLabelChampTxt = "";
32
	String nomLabelChampTxt = "";
30
	
33
	
31
	String titreErreur = null;
34
	String titreErreur = null;
32
	String valeurVideMsg = null;
35
	String valeurVideMsg = null;
33
	String valeurIdentiqueMsg = null;
36
	String valeurIdentiqueMsg = null;
34
	String valeurNonValideMsg = null;
37
	String valeurNonValideMsg = null;
35
	
38
	
36
	String valeurParDefaut = "";
39
	String valeurParDefaut = "";
37
	String validation = null;
40
	String validation = null;
38
	String exempleValidation = null;
41
	String exempleValidation = null;
39
	String boutonSupprimerLabel = "";
42
	String boutonSupprimerLabel = "";
40
	
43
	
41
	LayoutContainer principalLayout = null;
44
	LayoutContainer principalLayout = null;
42
	TextField<String> champTexte = null;
45
	TextField<String> champTexte = null;
43
	HiddenField<String> champRecapitulatif = null;
46
	HiddenField<String> champRecapitulatif = null;
44
	HashMap<String, LayoutContainer> valeurs = null;
47
	HashMap<String, LayoutContainer> valeurs = null;
45
	ComboBox<Valeur> types = null;
48
	ComboBox<Valeur> types = null;
46
	
49
	
47
	int largeurTotale = 420;
50
	int largeurTotale = 420;
48
	int largeurBouton = 20;
51
	int largeurBouton = 20;
49
	int largeurChamp = 0;
52
	int largeurChamp = 0;
50
 	
53
 	
51
	boolean estMultiType = false;
54
	boolean estMultiType = false;
52
	
55
	
53
	public ChampMultiValeurs() {
56
	public ChampMultiValeurs() {
54
		initialiserChampMultiValeur(null, 0);
57
		initialiserChampMultiValeur(null, 0);
55
	}
58
	}
56
	
59
	
57
	public ChampMultiValeurs(String label) {
60
	public ChampMultiValeurs(String label) {
58
		initialiserChampMultiValeur(label, 0);
61
		initialiserChampMultiValeur(label, 0);
59
	}
62
	}
60
	
63
	
61
	public ChampMultiValeurs(String label, int largeurTotale) {
64
	public ChampMultiValeurs(String label, int largeurTotale) {
62
		initialiserChampMultiValeur(label, largeurTotale);
65
		initialiserChampMultiValeur(label, largeurTotale);
63
	}
66
	}
64
	
67
	
65
	public ChampMultiValeurs(boolean estMultiType, String label, int largeurTotale) {
68
	public ChampMultiValeurs(boolean estMultiType, String label, int largeurTotale) {
66
		this.estMultiType = estMultiType; 
69
		this.estMultiType = estMultiType; 
67
		initialiserChampMultiValeur(label, largeurTotale);
70
		initialiserChampMultiValeur(label, largeurTotale);
68
	}
71
	}
69
	
72
	
70
	public void setLabel(String label) {
73
	public void setLabel(String label) {
71
		if (label == null) {
74
		if (label == null) {
72
			label = "";
75
			label = "";
73
		}
76
		}
74
		nomLabelChampTxt = label;
77
		nomLabelChampTxt = label;
75
	}
78
	}
76
	
79
	
77
	public void setLargeur(int largeur) {
80
	public void setLargeur(int largeur) {
78
		if (largeur != 0 && largeur > 20) {
81
		if (largeur != 0 && largeur > 20) {
79
			largeurTotale = largeur;
82
			largeurTotale = largeur;
80
		}
83
		}
81
		largeurChamp = largeurTotale - largeurBouton;
84
		largeurChamp = largeurTotale - largeurBouton;
82
	}
85
	}
83
	
86
	
84
	public void setValidation (String validation, String exempleValidation)	{
87
	public void setValidation (String validation, String exempleValidation)	{
85
		this.validation = validation;
88
		this.validation = validation;
86
		this.exempleValidation = exempleValidation;
89
		this.exempleValidation = exempleValidation;
87
		
90
		
88
		this.valeurNonValideMsg = Mediateur.i18nM.valeurNonValideMsg(exempleValidation);
91
		this.valeurNonValideMsg = Mediateur.i18nM.valeurNonValideMsg(exempleValidation);
89
	}
92
	}
90
	
93
	
91
	public void setValeurParDefaut(String valeur)	{
94
	public void setValeurParDefaut(String valeur)	{
92
		this.valeurParDefaut = valeur;
95
		this.valeurParDefaut = valeur;
93
		champTexte.setValue(valeur);
96
		champTexte.setValue(valeur);
94
	}
97
	}
95
	
98
	
96
	public void setValeurBoutonSupprimer(String valeur)	{
99
	public void setValeurBoutonSupprimer(String valeur)	{
97
		this.boutonSupprimerLabel = valeur;
100
		this.boutonSupprimerLabel = valeur;
98
	}
101
	}
99
	
102
	
100
	private void initialiserChampMultiValeur(String label, int largeur) {
103
	private void initialiserChampMultiValeur(String label, int largeur) {
101
		setLabel(label);
104
		setLabel(label);
102
		setLargeur(largeur);
105
		setLargeur(largeur);
103
		
106
		
104
		titreErreur = Mediateur.i18nC.erreurSaisieTitre();
107
		titreErreur = Mediateur.i18nC.erreurSaisieTitre();
105
		valeurVideMsg = Mediateur.i18nC.demanderValeur();
108
		valeurVideMsg = Mediateur.i18nC.demanderValeur();
106
		valeurIdentiqueMsg = Mediateur.i18nC.valeurDejaPresente();
109
		valeurIdentiqueMsg = Mediateur.i18nC.valeurDejaPresente();
107
		
110
		
108
		valeurs = new HashMap<String, LayoutContainer>();
111
		valeurs = new HashMap<String, LayoutContainer>();
109
		champRecapitulatif = new HiddenField<String>();
112
		champRecapitulatif = new HiddenField<String>();
110
		champRecapitulatif.setValue("");
113
		champRecapitulatif.setValue("");
111
		
114
		
112
		setLayout(new FormLayout());
115
		setLayout(new FormLayout());
113
		
116
		
114
		creerChampMultiValeurs();
117
		creerChampMultiValeurs();
115
	}
118
	}
116
	
119
	
117
	private void creerChampMultiValeurs() {
120
	private void creerChampMultiValeurs() {
118
		principalLayout = new LayoutContainer();
121
		principalLayout = new LayoutContainer();
119
		principalLayout.setLayout(new RowLayout());
122
		principalLayout.setLayout(new RowLayout());
120
		
123
		
121
		LabelField label = new LabelField(nomLabelChampTxt + ":");
124
		LabelField label = new LabelField(nomLabelChampTxt + ":");
122
		label.setWidth(largeurChamp);
125
		label.setWidth(largeurChamp);
123
		principalLayout.add(label);
126
		principalLayout.add(label);
124
		
127
		
125
		LayoutContainer colonneLayout = new LayoutContainer();
128
		LayoutContainer colonneLayout = new LayoutContainer();
126
		colonneLayout.setLayout(new ColumnLayout());
129
		colonneLayout.setLayout(new ColumnLayout());
127
		
130
		
128
		if (estMultiType == true)	{
131
		if (estMultiType == true)	{
129
			largeurChamp = largeurChamp - 150;
132
			largeurChamp = largeurChamp - 150;
130
			types = new ComboBox<Valeur>();
133
			types = new ComboBox<Valeur>();
131
			types.setDisplayField("nom");
134
			types.setDisplayField("nom");
132
			types.setEmptyText("Choisissez:");			
135
			types.setEmptyText("Choisissez:");			
133
			types.setStore(new ListStore<Valeur>());
136
			types.setStore(new ListStore<Valeur>());
134
			colonneLayout.add(types, new ColumnData(150));
137
			colonneLayout.add(types, new ColumnData(150));
135
		}
138
		}
136
		
139
		
137
		champTexte = new TextField<String>();
140
		champTexte = new TextField<String>();
138
		colonneLayout.add(champTexte, new ColumnData(largeurChamp));
141
		colonneLayout.add(champTexte, new ColumnData(largeurChamp));
139
 
142
 
140
		Button ajouterBouton = new Button();
143
		Button ajouterBouton = new Button();
141
		ajouterBouton.setIcon(Images.ICONES.ajouter());
144
		ajouterBouton.setIcon(Images.ICONES.ajouter());
142
		ajouterBouton.addSelectionListener(
145
		ajouterBouton.addSelectionListener(
143
			new SelectionListener<ButtonEvent>() {
146
			new SelectionListener<ButtonEvent>() {
144
				public void componentSelected(ButtonEvent ce) {
147
				public void componentSelected(ButtonEvent ce) {
145
					String valeurChampTxt = (String) champTexte.getValue();
148
					String valeurChampTxt = (String) champTexte.getValue();
146
					if ((valeurChampTxt == null) || valeurChampTxt.trim().equals("") || valeurChampTxt.trim().equals(valeurParDefaut))	{
149
					if ((valeurChampTxt == null) || valeurChampTxt.trim().equals("") || valeurChampTxt.trim().equals(valeurParDefaut))	{
147
						MessageBox.alert(titreErreur, valeurVideMsg, null);
150
						MessageBox.alert(titreErreur, valeurVideMsg, null);
148
					} else if (valeurs.get(valeurChampTxt) != null){
151
					} else if (valeurs.get(valeurChampTxt) != null){
149
						MessageBox.alert(titreErreur, valeurIdentiqueMsg, null);							
152
						MessageBox.alert(titreErreur, valeurIdentiqueMsg, null);							
150
					} else {
153
					} else {
151
						if (validation!=null && !valeurChampTxt.matches(validation)) 	{
154
						if (validation!=null && !valeurChampTxt.matches(validation)) 	{
152
							MessageBox.alert(titreErreur, valeurNonValideMsg, null);
155
							MessageBox.alert(titreErreur, valeurNonValideMsg, null);
153
						} else {
156
						} else {
154
							if (estMultiType)	{
157
							if (estMultiType)	{
155
								
158
								
156
								String type = "";
159
								String type = "";
157
								String id = "";
160
								String id = "";
158
								Valeur valeur = types.getValue();
161
								Valeur valeur = types.getValue();
159
					
162
					
160
								if (valeur != null)	{
163
								if (valeur != null)	{
161
									type = valeur.getNom();
164
									type = valeur.getNom();
162
									id = valeur.get("abreviation");
165
									id = valeur.get("abreviation");
163
								}	else {
166
								}	else {
164
									type = types.getRawValue();
167
									type = types.getRawValue();
165
									id = type;
168
									id = type;
166
								}
169
								}
167
				
170
				
168
								if (type.trim().equals(""))	{
171
								if (type.trim().equals(""))	{
169
									MessageBox.alert("Erreur de saisie", "Vous devez saisir un type ", null);
172
									MessageBox.alert("Erreur de saisie", "Vous devez saisir un type ", null);
170
								}	else {
173
								}	else {
171
									ajouterValeur(valeurChampTxt, type, id);
174
									ajouterValeur(valeurChampTxt, type, id);
172
								}
175
								}
173
								
176
								
174
								
177
								
175
							} else {
178
							} else {
176
								ajouterValeur(valeurChampTxt);
179
								ajouterValeur(valeurChampTxt);
177
							}
180
							}
178
						}
181
						}
179
					}
182
					}
180
				}
183
				}
181
			});
184
			});
182
		colonneLayout.add(ajouterBouton, new ColumnData(largeurBouton));
185
		colonneLayout.add(ajouterBouton, new ColumnData(largeurBouton));
183
		
186
		
184
		principalLayout.add(champRecapitulatif);
187
		principalLayout.add(champRecapitulatif);
185
		principalLayout.add(colonneLayout);
188
		principalLayout.add(colonneLayout);
186
		add(principalLayout);
189
		add(principalLayout);
187
	}
190
	}
188
	
191
	
189
	public void ajouterValeur(final String texte, final String strValeur, final String id)	{
192
	public void ajouterValeur(final String texte, final String strValeur, final String id)	{
190
		//Implémenté dans classe inférieure
193
		//Implémenté dans classe inférieure
191
	}
194
	}
192
	
195
	
193
	public void ajouterValeur(final String texte) 	{
196
	public void ajouterValeur(final String texte) 	{
194
		LayoutContainer colonneLayout = new LayoutContainer();
197
		LayoutContainer colonneLayout = new LayoutContainer();
195
		colonneLayout.setLayout(new ColumnLayout());
198
		colonneLayout.setLayout(new ColumnLayout());
196
		valeurs.put(texte, colonneLayout);
199
		valeurs.put(texte, colonneLayout);
197
		
200
		
198
		Text champTxt = new Text();
201
		Text champTxt = new Text();
199
		champTxt.setText(texte);
202
		champTxt.setText(texte);
200
		colonneLayout.add(champTxt, new ColumnData(largeurChamp));
203
		colonneLayout.add(champTxt, new ColumnData(largeurChamp));
201
		
204
		
202
		Button supprimerBouton = new Button();
205
		Button supprimerBouton = new Button();
203
		supprimerBouton.setIcon(Images.ICONES.supprimer());
206
		supprimerBouton.setIcon(Images.ICONES.supprimer());
204
		supprimerBouton.setText(boutonSupprimerLabel);
207
		supprimerBouton.setText(boutonSupprimerLabel);
205
		supprimerBouton.setData("valeur", texte);
208
		supprimerBouton.setData("valeur", texte);
206
		supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
209
		supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
207
			public void componentSelected(ButtonEvent ce) {
210
			public void componentSelected(ButtonEvent ce) {
208
				String valeur = ce.getComponent().getData("valeur");
211
				String valeur = ce.getComponent().getData("valeur");
209
				LayoutContainer valeurLayout = valeurs.get(valeur);
212
				LayoutContainer valeurLayout = valeurs.get(valeur);
210
				principalLayout.remove(valeurLayout);
213
				principalLayout.remove(valeurLayout);
211
				
214
				
212
				valeurs.remove(valeur);
215
				valeurs.remove(valeur);
213
				
216
				
214
				supprimerValeurDuRecapitulatif(valeur);
217
				supprimerValeurDuRecapitulatif(valeur);
215
				
218
				
216
				actualiserLayoutGlobal();
219
				actualiserLayoutGlobal();
217
			}
220
			}
218
		});
221
		});
219
		colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton));
222
		colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton));
220
		
223
		
221
		// Ajout du layout de la valeur au layout principal
224
		// Ajout du layout de la valeur au layout principal
222
		principalLayout.add(colonneLayout);
225
		principalLayout.add(colonneLayout);
223
		
226
		
224
		// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
227
		// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
225
		ajouterValeurAuRecapitulatif(texte);
228
		ajouterValeurAuRecapitulatif(texte);
226
		reinitialiserChamp();
229
		reinitialiserChamp();
227
		actualiserLayoutGlobal();
230
		actualiserLayoutGlobal();
228
	}
231
	}
229
	
232
	
230
	public void reinitialiserChamp()	{
233
	public void reinitialiserChamp()	{
231
		champTexte.setValue(valeurParDefaut);	
234
		champTexte.setValue(valeurParDefaut);	
232
	}
235
	}
233
	
236
	
234
	public void actualiserLayoutGlobal() {
237
	public void actualiserLayoutGlobal() {
235
		GWT.log("Valeurs : "+getValeurs(), null);
238
		GWT.log("Valeurs : "+getValeurs(), null);
236
		layout();
239
		layout();
237
	}
240
	}
238
	
241
	
239
	public void ajouterValeurAuRecapitulatif(String texte) {
242
	public void ajouterValeurAuRecapitulatif(String texte) {
240
		String texteRecapitulatif = "";
243
		String texteRecapitulatif = "";
241
		if (champRecapitulatif.getValue() != null)	{
244
		if (champRecapitulatif.getValue() != null)	{
242
			texteRecapitulatif = champRecapitulatif.getValue();
245
			texteRecapitulatif = champRecapitulatif.getValue();
243
		}
246
		}
244
		texteRecapitulatif += texte + ";;";
247
		texteRecapitulatif += texte + ";;";
245
		champRecapitulatif.setValue(texteRecapitulatif);
248
		champRecapitulatif.setValue(texteRecapitulatif);
246
	}
249
	}
247
	
250
	
248
	public void supprimerValeurDuRecapitulatif(String texte) {
251
	public void supprimerValeurDuRecapitulatif(String texte) {
249
		if (champRecapitulatif.getValue() != null)	{
252
		if (champRecapitulatif.getValue() != null)	{
250
			String texteRecapitulatif = champRecapitulatif.getValue();
253
			String texteRecapitulatif = champRecapitulatif.getValue();
251
			texteRecapitulatif = texteRecapitulatif.replace(texte + ";;", "");
254
			texteRecapitulatif = texteRecapitulatif.replace(texte + ";;", "");
252
			champRecapitulatif.setValue(texteRecapitulatif);
255
			champRecapitulatif.setValue(texteRecapitulatif);
253
		}
256
		}
254
	}
257
	}
255
	
258
	
256
	public String getValeurs() {
259
	public String getValeurs() {
257
		String texteRecapitulatif = "";
260
		String texteRecapitulatif = "";
258
		if (champRecapitulatif.getValue() != null) {
261
		if (champRecapitulatif.getValue() != null) {
259
			texteRecapitulatif = champRecapitulatif.getValue();
262
			texteRecapitulatif = champRecapitulatif.getValue();
260
			texteRecapitulatif = texteRecapitulatif.replaceAll("(.*);;$", "$1");
263
			texteRecapitulatif = texteRecapitulatif.replaceAll("(.*);;$", "$1");
261
		}
264
		}
262
		return texteRecapitulatif;
265
		return texteRecapitulatif;
263
	}
266
	}
264
	
267
	
265
	public void peupler(String chaineExistante) {
268
	public void peupler(String chaineExistante) {
266
		if (chaineExistante != null && !chaineExistante.trim().equals("")) {
269
		if (chaineExistante != null && !chaineExistante.trim().equals("")) {
267
			String[] valeurs = chaineExistante.split(";;");
270
			String[] valeurs = chaineExistante.split(";;");
268
			for (int i = 0; i < valeurs.length; i++) {
271
			for (int i = 0; i < valeurs.length; i++) {
269
				ajouterValeur(valeurs[i]);
272
				ajouterValeur(valeurs[i]);
270
			}
273
			}
271
		}
274
		}
272
	}
275
	}
273
}
276
}