Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1164 Rev 1218
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import java.util.Iterator;
3
import java.util.Iterator;
4
import java.util.List;
4
import java.util.List;
5
 
5
 
6
import org.tela_botanica.client.ComposantClass;
6
import org.tela_botanica.client.ComposantClass;
7
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.RegistreId;
8
import org.tela_botanica.client.RegistreId;
9
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
9
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
-
 
10
import org.tela_botanica.client.composants.InfoLogger;
10
import org.tela_botanica.client.configuration.Configuration;
11
import org.tela_botanica.client.configuration.Configuration;
11
import org.tela_botanica.client.i18n.Constantes;
12
import org.tela_botanica.client.i18n.Constantes;
12
import org.tela_botanica.client.i18n.ErrorMessages;
13
import org.tela_botanica.client.i18n.ErrorMessages;
13
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.modeles.Valeur;
16
import org.tela_botanica.client.modeles.Valeur;
16
import org.tela_botanica.client.modeles.ValeurListe;
17
import org.tela_botanica.client.modeles.ValeurListe;
17
import org.tela_botanica.client.modeles.aDonneeListe;
18
import org.tela_botanica.client.modeles.aDonneeListe;
-
 
19
import org.tela_botanica.client.util.Debug;
18
 
20
 
19
import com.extjs.gxt.ui.client.Registry;
21
import com.extjs.gxt.ui.client.Registry;
20
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
22
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
21
import com.extjs.gxt.ui.client.Style.SortDir;
23
import com.extjs.gxt.ui.client.Style.SortDir;
22
import com.extjs.gxt.ui.client.event.BaseEvent;
24
import com.extjs.gxt.ui.client.event.BaseEvent;
23
import com.extjs.gxt.ui.client.event.ButtonEvent;
25
import com.extjs.gxt.ui.client.event.ButtonEvent;
24
import com.extjs.gxt.ui.client.event.ComponentEvent;
26
import com.extjs.gxt.ui.client.event.ComponentEvent;
25
import com.extjs.gxt.ui.client.event.Events;
27
import com.extjs.gxt.ui.client.event.Events;
26
import com.extjs.gxt.ui.client.event.Listener;
28
import com.extjs.gxt.ui.client.event.Listener;
27
import com.extjs.gxt.ui.client.event.SelectionListener;
29
import com.extjs.gxt.ui.client.event.SelectionListener;
28
import com.extjs.gxt.ui.client.store.ListStore;
30
import com.extjs.gxt.ui.client.store.ListStore;
29
import com.extjs.gxt.ui.client.widget.Info;
31
import com.extjs.gxt.ui.client.widget.Info;
30
import com.extjs.gxt.ui.client.widget.LayoutContainer;
32
import com.extjs.gxt.ui.client.widget.LayoutContainer;
31
import com.extjs.gxt.ui.client.widget.TabItem;
33
import com.extjs.gxt.ui.client.widget.TabItem;
32
import com.extjs.gxt.ui.client.widget.button.Button;
34
import com.extjs.gxt.ui.client.widget.button.Button;
33
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
35
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
34
import com.extjs.gxt.ui.client.widget.form.CheckBox;
36
import com.extjs.gxt.ui.client.widget.form.CheckBox;
35
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
37
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
36
import com.extjs.gxt.ui.client.widget.form.ComboBox;
38
import com.extjs.gxt.ui.client.widget.form.ComboBox;
37
import com.extjs.gxt.ui.client.widget.form.Field;
39
import com.extjs.gxt.ui.client.widget.form.Field;
38
import com.extjs.gxt.ui.client.widget.form.FormPanel;
40
import com.extjs.gxt.ui.client.widget.form.FormPanel;
39
import com.extjs.gxt.ui.client.widget.form.Radio;
41
import com.extjs.gxt.ui.client.widget.form.Radio;
40
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
42
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
41
import com.extjs.gxt.ui.client.widget.form.TextArea;
43
import com.extjs.gxt.ui.client.widget.form.TextArea;
42
import com.extjs.gxt.ui.client.widget.form.TextField;
44
import com.extjs.gxt.ui.client.widget.form.TextField;
43
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
45
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
44
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
46
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FormData;
47
import com.extjs.gxt.ui.client.widget.layout.FormData;
46
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
48
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
47
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
49
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
48
import com.google.gwt.core.client.GWT;
50
import com.google.gwt.core.client.GWT;
49
 
51
 
50
public abstract class Formulaire extends LayoutContainer implements Rafraichissable {
52
public abstract class Formulaire extends LayoutContainer implements Rafraichissable {
51
 
53
 
52
	public static final String MODE_AJOUTER = "AJOUT";
54
	public static final String MODE_AJOUTER = "AJOUT";
53
	public static final String MODE_MODIFIER = "MODIF";
55
	public static final String MODE_MODIFIER = "MODIF";
54
	
56
	
55
	public Constantes i18nC = null;
57
	public Constantes i18nC = null;
56
	public ErrorMessages i18nM = null;
58
	public ErrorMessages i18nM = null;
57
	public Mediateur mediateur = null;
59
	public Mediateur mediateur = null;
58
	public Configuration config = null;
60
	public Configuration config = null;
59
	
61
	
60
	public String mode = null;
62
	public String mode = null;
61
	public int tabIndex = 100;
63
	public int tabIndex = 100;
62
	
64
	
63
	public FormPanel panneauFormulaire = null;
65
	public FormPanel panneauFormulaire = null;
64
	public ButtonBar barreOutilsValidation = null;
66
	public ButtonBar barreOutilsValidation = null;
65
		
67
		
66
	public String menuIdCourant = null;
68
	public String menuIdCourant = null;
67
	public static Boolean clicBoutonvalidation = false;
69
	public static Boolean clicBoutonvalidation = false;
68
	public Rafraichissable vueExterneARafraichirApresValidation = null;
70
	public Rafraichissable vueExterneARafraichirApresValidation = null;
69
 
71
 
70
	public FormPanel getFormulaire() {
72
	public FormPanel getFormulaire() {
71
		return panneauFormulaire;
73
		return panneauFormulaire;
72
	}
74
	}
73
	
75
	
74
	public void initialiserFormulaire(Mediateur mediateurCourrant, String modeDeCreation, String idMenuCourrant) {
76
	public void initialiserFormulaire(Mediateur mediateurCourrant, String modeDeCreation, String idMenuCourrant) {
75
		// Initialisation de variables
77
		// Initialisation de variables
76
		mode = modeDeCreation;
78
		mode = modeDeCreation;
77
		mediateur = mediateurCourrant;
79
		mediateur = mediateurCourrant;
78
		i18nC = Mediateur.i18nC;
80
		i18nC = Mediateur.i18nC;
79
		i18nM = Mediateur.i18nM;
81
		i18nM = Mediateur.i18nM;
80
		menuIdCourant = idMenuCourrant;
82
		menuIdCourant = idMenuCourrant;
81
		config = (Configuration) Registry.get(RegistreId.CONFIG);
83
		config = (Configuration) Registry.get(RegistreId.CONFIG);
82
		
84
		
83
		// Iniatilisation du layoutContainer
85
		// Iniatilisation du layoutContainer
84
		setLayout(new FitLayout());
86
		setLayout(new FitLayout());
85
		setBorders(false);
87
		setBorders(false);
86
		
88
		
87
		// Création du panneau du FORMULAIRE GÉNÉRAL
89
		// Création du panneau du FORMULAIRE GÉNÉRAL
88
		panneauFormulaire = new FormPanel();
90
		panneauFormulaire = new FormPanel();
89
		panneauFormulaire.setBodyBorder(false);
91
		panneauFormulaire.setBodyBorder(false);
90
		panneauFormulaire.setFrame(true);
92
		panneauFormulaire.setFrame(true);
91
 		panneauFormulaire.setCollapsible(false);
93
 		panneauFormulaire.setCollapsible(false);
92
		panneauFormulaire.setButtonAlign(HorizontalAlignment.CENTER);  
94
		panneauFormulaire.setButtonAlign(HorizontalAlignment.CENTER);  
93
		panneauFormulaire.setLayout(new FitLayout());
95
		panneauFormulaire.setLayout(new FitLayout());
94
 
96
 
95
		if (modeDeCreation.equals(MODE_AJOUTER)) {
97
		if (modeDeCreation.equals(MODE_AJOUTER)) {
96
			panneauFormulaire.setIcon(Images.ICONES.formAjouter());
98
			panneauFormulaire.setIcon(Images.ICONES.formAjouter());
97
		} else if (modeDeCreation.equals(MODE_AJOUTER)) {
99
		} else if (modeDeCreation.equals(MODE_AJOUTER)) {
98
			panneauFormulaire.setIcon(Images.ICONES.formModifier());
100
			panneauFormulaire.setIcon(Images.ICONES.formModifier());
99
		}
101
		}
100
		
102
		
101
		barreOutilsValidation = new FormulaireBarreValidation(creerEcouteurValidation());
103
		barreOutilsValidation = new FormulaireBarreValidation(creerEcouteurValidation());
102
		panneauFormulaire.setBottomComponent(barreOutilsValidation);
104
		panneauFormulaire.setBottomComponent(barreOutilsValidation);
103
		
105
		
104
		add(panneauFormulaire);
106
		add(panneauFormulaire);
105
	}
107
	}
106
	
108
	
107
	public SelectionListener<ButtonEvent> creerEcouteurValidation() {
109
	public SelectionListener<ButtonEvent> creerEcouteurValidation() {
108
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
110
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
109
			@Override
111
			@Override
110
			public void componentSelected(ButtonEvent ce) {
112
			public void componentSelected(ButtonEvent ce) {
-
 
113
				
-
 
114
				Debug.log("<$$$> BEGIN Formulaire.creerEcouteurValidation.componentSelected(ButtonEvent ce)");					
-
 
115
				
111
				String code = ((Button) ce.getComponent()).getData("code");
116
				String code = ((Button) ce.getComponent()).getData("code");
112
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
117
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
113
					if (mediateur.getUtilisateur().isIdentifie()) {
118
					if (mediateur.getUtilisateur().isIdentifie()) {
-
 
119
						Debug.log("<$$$> Formulaire.creerEcouteurValidation.componentSelected(ButtonEvent ce), clicBoutonvalidation = true;");
-
 
120
						clicBoutonvalidation = true;						
-
 
121
						
-
 
122
						Debug.log("<$$$> Formulaire.creerEcouteurValidation.componentSelected(ButtonEvent ce), appel à soumettreFormulaire()");
114
						soumettreFormulaire();
123
						soumettreFormulaire();
115
						clicBoutonvalidation = true;
-
 
-
 
124
						
116
					} else {
125
					} else {
117
						Info.display(i18nC.modeAnonyme(), i18nC.identificationNecessaire());
126
						InfoLogger.display(i18nC.modeAnonyme(), i18nC.identificationNecessaire());
118
					}
127
					}
119
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
128
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
120
					if (mediateur.getUtilisateur().isIdentifie()) {
129
					if (mediateur.getUtilisateur().isIdentifie()) {
121
						soumettreFormulaire();
130
						soumettreFormulaire();
122
					} else {
131
					} else {
123
						Info.display(i18nC.modeAnonyme(), i18nC.identificationNecessaire());
132
						InfoLogger.display(i18nC.modeAnonyme(), i18nC.identificationNecessaire());
124
					}
133
					}
125
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
134
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
126
					mediateur.clicMenu(menuIdCourant);
135
					mediateur.clicMenu(menuIdCourant);
127
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
136
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
128
					reinitialiserFormulaire();
137
					reinitialiserFormulaire();
129
				}
138
				}
-
 
139
				
-
 
140
				Debug.log("<$$$> END CollectionForm.Formulaire.creerEcouteurValidation.componentSelected(ButtonEvent ce)");					
130
			}
141
			}
131
		};
142
		};
132
		
143
		
133
		return ecouteur;
144
		return ecouteur;
134
	}
145
	}
135
	
146
	
136
	public abstract boolean verifierFormulaire();
147
	public abstract boolean verifierFormulaire();
137
	
148
	
138
	public abstract boolean soumettreFormulaire();
149
	public abstract boolean soumettreFormulaire();
139
	
150
	
140
	public abstract void reinitialiserFormulaire();
151
	public abstract void reinitialiserFormulaire();
141
	
152
	
142
	public TabItem creerOnglet(String nom, String id) {
153
	public TabItem creerOnglet(String nom, String id) {
143
		TabItem onglet = new TabItem();
154
		TabItem onglet = new TabItem();
144
		onglet.setId(id);
155
		onglet.setId(id);
145
		onglet.setText(nom);
156
		onglet.setText(nom);
146
		FormulaireOnglet.parametrer(onglet);
157
		FormulaireOnglet.parametrer(onglet);
147
		return onglet;
158
		return onglet;
148
	}
159
	}
149
 
160
 
-
 
161
	public void controlerFermeture() {
150
	public void controlerFermetureApresRafraichissement() {
162
Debug.log("<$$$> BEGIN Formulaire.controlerFermeture()");			
151
		// Si le bouton Valider a été cliqué, nous affichons la liste des structures
163
		// Si le bouton Valider a été cliqué, nous affichons la liste des structures
152
		if (clicBoutonvalidation) {
164
		if (clicBoutonvalidation) {
153
			fermerFormulaire();
165
			fermerFormulaire();
154
		}
166
		}
-
 
167
		else Debug.log("<$$$> clicBoutonvalidation==false");
-
 
168
Debug.log("<$$$> END Formulaire.controlerFermeture()");				
155
	}
169
	}
156
	
170
	
157
	public void fermerFormulaire() {
171
	public void fermerFormulaire() {
-
 
172
		
-
 
173
Debug.log("<$$$> BEGIN Formulaire.fermerFormulaire()");
-
 
174
 
158
		clicBoutonvalidation = false;
175
		clicBoutonvalidation = false;
159
		panneauFormulaire.setEnabled(false);
176
		panneauFormulaire.setEnabled(false);
160
		mediateur.clicMenu(menuIdCourant);
177
		mediateur.clicMenu(menuIdCourant);
-
 
178
		
-
 
179
Debug.log("<$$$> END Formulaire.fermerFormulaire()");		
161
	}
180
	}
162
	
181
	
163
	/** Méthode simplifiant la création de FormLayout.
182
	/** Méthode simplifiant la création de FormLayout.
164
	 * Chacun des paramètres peut prendre la valeur null pour utiliser la valeur par défaut.
183
	 * Chacun des paramètres peut prendre la valeur null pour utiliser la valeur par défaut.
165
	 * 
184
	 * 
166
	 * @param labelWidth largeur des labels. 
185
	 * @param labelWidth largeur des labels. 
167
	 * @param labelAlign alignement des labels
186
	 * @param labelAlign alignement des labels
168
	 * @return
187
	 * @return
169
	 */
188
	 */
170
	public static FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {
189
	public static FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {
171
		FormLayout formLayout = new FormLayout();
190
		FormLayout formLayout = new FormLayout();
172
		if (labelWidth != null) {
191
		if (labelWidth != null) {
173
			formLayout.setLabelWidth(labelWidth);
192
			formLayout.setLabelWidth(labelWidth);
174
		}
193
		}
175
		if (labelAlign != null) {
194
		if (labelAlign != null) {
176
			formLayout.setLabelAlign(labelAlign);
195
			formLayout.setLabelAlign(labelAlign);
177
		}
196
		}
178
		return formLayout;
197
		return formLayout;
179
	}
198
	}
180
	
199
	
181
	/** Méthode simplifiant la création de bouton radio oui/non
200
	/** Méthode simplifiant la création de bouton radio oui/non
182
	 * 
201
	 * 
183
	 * @param listeNom nom de la liste de valeur
202
	 * @param listeNom nom de la liste de valeur
184
	 * @return
203
	 * @return
185
	 */
204
	 */
186
	public RadioGroup creerChoixUniqueRadioGroupe(String groupeNom, String listeNom) {
205
	public RadioGroup creerChoixUniqueRadioGroupe(String groupeNom, String listeNom) {
187
		groupeNom += "_grp";
206
		groupeNom += "_grp";
188
		// NOTE : il semblerait qu'il faille aussi utiliser setName() pour éviter tout problème...
207
		// NOTE : il semblerait qu'il faille aussi utiliser setName() pour éviter tout problème...
189
		RadioGroup radioGroup = new RadioGroup(groupeNom);
208
		RadioGroup radioGroup = new RadioGroup(groupeNom);
190
		radioGroup.setName(groupeNom);
209
		radioGroup.setName(groupeNom);
191
 
210
 
192
		if (listeNom.equals("ouiNon")) {
211
		if (listeNom.equals("ouiNon")) {
193
			ValeurListe ouiNonListe = new ValeurListe();
212
			ValeurListe ouiNonListe = new ValeurListe();
194
			ouiNonListe.ajouter(new Valeur("1", i18nC.oui(), "NULL", "NULL"));
213
			ouiNonListe.ajouter(new Valeur("1", i18nC.oui(), "NULL", "NULL"));
195
			ouiNonListe.ajouter(new Valeur("0", i18nC.non(), "NULL", "NULL"));
214
			ouiNonListe.ajouter(new Valeur("0", i18nC.non(), "NULL", "NULL"));
196
			creerChoixUniqueBoutonRadio(radioGroup, ouiNonListe);
215
			creerChoixUniqueBoutonRadio(radioGroup, ouiNonListe);
197
		}
216
		}
198
		
217
		
199
		return radioGroup;
218
		return radioGroup;
200
	}
219
	}
201
	
220
	
202
	public void creerChoixUniqueBoutonRadio(RadioGroup radioGroupe, ValeurListe listeValeurs) {
221
	public void creerChoixUniqueBoutonRadio(RadioGroup radioGroupe, ValeurListe listeValeurs) {
203
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
222
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
204
			Valeur val = listeValeurs.get(it.next());
223
			Valeur val = listeValeurs.get(it.next());
205
			
224
			
206
			Radio radioBtn = new Radio();
225
			Radio radioBtn = new Radio();
207
			radioBtn.setName(radioGroupe.getName().replace("_grp", ""));
226
			radioBtn.setName(radioGroupe.getName().replace("_grp", ""));
208
			radioBtn.setId(val.getId()+"_"+radioBtn.getName());
227
			radioBtn.setId(val.getId()+"_"+radioBtn.getName());
209
			radioBtn.setBoxLabel(val.getNom());
228
			radioBtn.setBoxLabel(val.getNom());
210
			radioBtn.setValueAttribute(val.getId());
229
			radioBtn.setValueAttribute(val.getId());
211
			radioBtn.addListener(Events.Change, new Listener<ComponentEvent>() {
230
			radioBtn.addListener(Events.Change, new Listener<ComponentEvent>() {
212
	
231
	
213
				public void handleEvent(ComponentEvent be) {
232
				public void handleEvent(ComponentEvent be) {
214
					//Window.alert(((Radio) be.component).getName());
233
					//Window.alert(((Radio) be.component).getName());
215
					afficherChampSupplementaire(((Radio) be.getComponent()));
234
					afficherChampSupplementaire(((Radio) be.getComponent()));
216
				}
235
				}
217
				
236
				
218
			});
237
			});
219
			
238
			
220
			if (! val.getDescription().equals("NULL")) {
239
			if (! val.getDescription().equals("NULL")) {
221
				radioBtn.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
240
				radioBtn.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
222
			}
241
			}
223
			radioGroupe.add(radioBtn);
242
			radioGroupe.add(radioBtn);
224
		}
243
		}
225
	}
244
	}
226
	
245
	
227
	public void afficherChampSupplementaire(Radio radioBtn) {
246
	public void afficherChampSupplementaire(Radio radioBtn) {
228
		GWT.log("Vous devez redéfinir la méthode afficherChampSupplementaire(Radio radioBtn) dans votre classe formulaire.", null);
247
		GWT.log("Vous devez redéfinir la méthode afficherChampSupplementaire(Radio radioBtn) dans votre classe formulaire.", null);
229
	};
248
	};
230
	
249
	
231
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
250
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
232
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
251
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
233
	 * Ajoute ou pas un champ "Autre".
252
	 * Ajoute ou pas un champ "Autre".
234
	 * 
253
	 * 
235
	 * @return ContentPanel le panneau contenant les cases à cocher
254
	 * @return ContentPanel le panneau contenant les cases à cocher
236
	 */
255
	 */
237
	public static LayoutContainer creerChoixMultipleCp() {
256
	public static LayoutContainer creerChoixMultipleCp() {
238
		LayoutContainer conteneur = new LayoutContainer();
257
		LayoutContainer conteneur = new LayoutContainer();
239
		conteneur.setLayout(creerFormLayout(650, LabelAlign.TOP));
258
		conteneur.setLayout(creerFormLayout(650, LabelAlign.TOP));
240
		return conteneur;
259
		return conteneur;
241
	}
260
	}
242
	
261
	
243
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
262
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
244
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
263
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
245
	 * Ajoute ou pas un champ "Autre".
264
	 * Ajoute ou pas un champ "Autre".
246
	 * 
265
	 * 
247
	 * @param cp panneau conteant le groupe de case à cocher
266
	 * @param cp panneau conteant le groupe de case à cocher
248
	 * @param cacGroup le groupe de case à cocher
267
	 * @param cacGroup le groupe de case à cocher
249
	 * @param listeValeurs la liste de valeurs à transformer en case à cocher
268
	 * @param listeValeurs la liste de valeurs à transformer en case à cocher
250
	 * @param boolAutreChp booléen indiquant si oui ou non le champ autre doit apparaître 
269
	 * @param boolAutreChp booléen indiquant si oui ou non le champ autre doit apparaître 
251
	 * @return
270
	 * @return
252
	 */
271
	 */
253
	public static void creerChoixMultipleCac(LayoutContainer cp, final CheckBoxGroup cacGroupe, ValeurListe listeValeurs, final Field<String> autreChp) {
272
	public static void creerChoixMultipleCac(LayoutContainer cp, final CheckBoxGroup cacGroupe, ValeurListe listeValeurs, final Field<String> autreChp) {
254
		cp.addListener(Events.Hide, new Listener<BaseEvent>() {
273
		cp.addListener(Events.Hide, new Listener<BaseEvent>() {
255
			public void handleEvent(BaseEvent be) {
274
			public void handleEvent(BaseEvent be) {
256
				cacGroupe.reset();
275
				cacGroupe.reset();
257
				autreChp.setValue("");
276
				autreChp.setValue("");
258
			}
277
			}
259
			
278
			
260
		});
279
		});
261
		
280
		
262
		cacGroupe.setAutoWidth(true);
281
		cacGroupe.setAutoWidth(true);
263
		cacGroupe.setStyleAttribute("padding", "3px");
282
		cacGroupe.setStyleAttribute("padding", "3px");
264
		cacGroupe.setData("liste_id", listeValeurs.getId());
283
		cacGroupe.setData("liste_id", listeValeurs.getId());
265
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
284
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
266
			Valeur val = listeValeurs.get(it.next());
285
			Valeur val = listeValeurs.get(it.next());
267
			String nom =  val.get("nom");
286
			String nom =  val.get("nom");
268
			CheckBox cac = new CheckBox();
287
			CheckBox cac = new CheckBox();
269
			cac.setId("val-"+val.getId());
288
			cac.setId("val-"+val.getId());
270
			cac.setData("id", val.getId());
289
			cac.setData("id", val.getId());
271
			cac.setBoxLabel(nom);
290
			cac.setBoxLabel(nom);
272
			if (! val.getDescription().equals("NULL")) {
291
			if (! val.getDescription().equals("NULL")) {
273
				cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
292
				cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
274
			}
293
			}
275
			cacGroupe.add(cac);
294
			cacGroupe.add(cac);
276
		}
295
		}
277
		cp.add(cacGroupe);
296
		cp.add(cacGroupe);
278
		
297
		
279
		if (autreChp != null) {
298
		if (autreChp != null) {
280
			// FIXME : éviter le chevauchement du texte des cases à cocher avec le label "Autre" sur les petits écrans
299
			// FIXME : éviter le chevauchement du texte des cases à cocher avec le label "Autre" sur les petits écrans
281
			LayoutContainer conteneur = new LayoutContainer();
300
			LayoutContainer conteneur = new LayoutContainer();
282
			conteneur.setLayout(creerFormLayout(50, LabelAlign.TOP));
301
			conteneur.setLayout(creerFormLayout(50, LabelAlign.TOP));
283
			autreChp.setId("autre-"+listeValeurs.getId());
302
			autreChp.setId("autre-"+listeValeurs.getId());
284
			autreChp.setFieldLabel("Autre");
303
			autreChp.setFieldLabel("Autre");
285
			autreChp.setLabelStyle("font-weight:normal;");
304
			autreChp.setLabelStyle("font-weight:normal;");
286
			conteneur.add(autreChp, new FormData(500, 0));
305
			conteneur.add(autreChp, new FormData(500, 0));
287
			
306
			
288
			cp.add(conteneur);
307
			cp.add(conteneur);
289
		}
308
		}
290
		cp.layout();
309
		cp.layout();
291
	}
310
	}
292
	
311
	
293
	@SuppressWarnings({"unchecked"})
312
	@SuppressWarnings({"unchecked"})
294
	public static void rafraichirComboBox(aDonneeListe<?> listeValeurs, ComboBox combo) {
313
	public static void rafraichirComboBox(aDonneeListe<?> listeValeurs, ComboBox combo) {
295
		rafraichirComboBox(listeValeurs, combo, "nom");
314
		rafraichirComboBox(listeValeurs, combo, "nom");
296
	}
315
	}
297
	
316
	
298
	@SuppressWarnings({"unchecked"})
317
	@SuppressWarnings({"unchecked"})
299
	public static void rafraichirComboBox(aDonneeListe<?> listeValeurs, ComboBox combo, String champATrier) {
318
	public static void rafraichirComboBox(aDonneeListe<?> listeValeurs, ComboBox combo, String champATrier) {
300
		List<?> liste = listeValeurs.toList();
319
		List<?> liste = listeValeurs.toList();
301
		if (liste.size() > 0) {
320
		if (liste.size() > 0) {
302
			ListStore store = combo.getStore();
321
			ListStore store = combo.getStore();
303
			store.removeAll();
322
			store.removeAll();
304
			store.add(liste);
323
			store.add(liste);
305
			store.sort(champATrier, SortDir.ASC);
324
			store.sort(champATrier, SortDir.ASC);
306
			combo.setStore(store);
325
			combo.setStore(store);
307
		}
326
		}
308
	}
327
	}
309
	
328
	
310
	public static Listener<BaseEvent> creerEcouteurChampObligatoire() {
329
	public static Listener<BaseEvent> creerEcouteurChampObligatoire() {
311
		return new Listener<BaseEvent>() {
330
		return new Listener<BaseEvent>() {
312
			@Override
331
			@Override
313
			public void handleEvent(BaseEvent be) {
332
			public void handleEvent(BaseEvent be) {
314
				Field<?> champ = null;
333
				Field<?> champ = null;
315
				boolean etreVide = true;
334
				boolean etreVide = true;
316
				if (be.getSource() instanceof TextField<?>) {
335
				if (be.getSource() instanceof TextField<?>) {
317
					champ = (TextField<?>) be.getSource();
336
					champ = (TextField<?>) be.getSource();
318
					etreVide = (champ.getRawValue().isEmpty()) ? true : false;
337
					etreVide = (champ.getRawValue().isEmpty()) ? true : false;
319
				} else if (be.getSource() instanceof TextArea) {
338
				} else if (be.getSource() instanceof TextArea) {
320
					champ = (TextArea) be.getSource();
339
					champ = (TextArea) be.getSource();
321
					etreVide = (champ.getRawValue().isEmpty()) ? true : false;
340
					etreVide = (champ.getRawValue().isEmpty()) ? true : false;
322
				} else if (be.getSource() instanceof ChampComboBoxListeValeurs) {
341
				} else if (be.getSource() instanceof ChampComboBoxListeValeurs) {
323
					champ = (ChampComboBoxListeValeurs) be.getSource();
342
					champ = (ChampComboBoxListeValeurs) be.getSource();
324
					etreVide = (champ.getValue() == null) ? true : false;
343
					etreVide = (champ.getValue() == null) ? true : false;
325
				} else if (be.getSource() instanceof ComboBox<?>) {
344
				} else if (be.getSource() instanceof ComboBox<?>) {
326
					champ = (ComboBox<?>) be.getSource();
345
					champ = (ComboBox<?>) be.getSource();
327
					etreVide = (champ.getValue() == null) ? true : false;
346
					etreVide = (champ.getValue() == null) ? true : false;
328
				}
347
				}
329
				champ.removeStyleName(ComposantClass.OBLIGATOIRE);
348
				champ.removeStyleName(ComposantClass.OBLIGATOIRE);
330
				champ.removeStyleName(ComposantClass.OBLIGATOIRE_OK);
349
				champ.removeStyleName(ComposantClass.OBLIGATOIRE_OK);
331
				if (etreVide == false) {
350
				if (etreVide == false) {
332
					champ.addStyleName(ComposantClass.OBLIGATOIRE_OK);
351
					champ.addStyleName(ComposantClass.OBLIGATOIRE_OK);
333
				} else {
352
				} else {
334
					champ.addStyleName(ComposantClass.OBLIGATOIRE);
353
					champ.addStyleName(ComposantClass.OBLIGATOIRE);
335
				}
354
				}
336
			}
355
			}
337
		};
356
		};
338
	}
357
	}
339
}
358
}