Subversion Repositories eFlore/Applications.coel

Rev

Rev 862 | Rev 875 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
854 jpm 1
package org.tela_botanica.client.composants;
2
 
3
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.modeles.Configuration;
7
import org.tela_botanica.client.modeles.Valeur;
8
import org.tela_botanica.client.modeles.ValeurListe;
9
import org.tela_botanica.client.vues.Formulaire;
10
 
11
import com.extjs.gxt.ui.client.Registry;
12
import com.extjs.gxt.ui.client.store.ListStore;
13
import com.extjs.gxt.ui.client.widget.form.ComboBox;
858 jpm 14
import com.extjs.gxt.ui.client.widget.form.Field;
15
import com.extjs.gxt.ui.client.widget.form.Validator;
854 jpm 16
import com.google.gwt.core.client.GWT;
17
 
18
public class ChampComboBoxListeValeurs extends ComboBox<Valeur> implements Rafraichissable {
19
	private Configuration config = null;
20
	private Mediateur mediateur = null;
21
 
22
	private String listeValeursCode = null;
23
	private String nomChampATrier = null;
858 jpm 24
	private String valeurDefautId = null;
854 jpm 25
 
26
	public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste) {
858 jpm 27
		initialiserChampComboBox(labelDuChamp, codeDeLaliste, 0);
28
	}
29
 
30
	public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste, int tabIndex) {
31
		initialiserChampComboBox(labelDuChamp, codeDeLaliste, tabIndex);
32
	}
33
 
862 jpm 34
	public ChampComboBoxListeValeurs(String labelDuChamp, ValeurListe listeDeValeurs, int tabIndex) {
35
		initialiserChampComboBox(labelDuChamp, null, tabIndex);
36
		rafraichir(listeDeValeurs);
37
	}
38
 
858 jpm 39
	private void initialiserChampComboBox(String labelDuChamp, String codeDeLaliste, int tabIndex) {
854 jpm 40
		config = (Configuration) Registry.get(RegistreId.CONFIG);
41
		mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
42
 
43
		setForceSelection(true);
44
		setTriggerAction(TriggerAction.ALL);
45
		setDisplayField("nom");
46
		setStore(new ListStore<Valeur>());
47
		setEditable(false);
48
 
858 jpm 49
		setTabIndex(tabIndex);
854 jpm 50
 
858 jpm 51
		if (labelDuChamp == null) {
52
			setLabelSeparator("");
53
		} else {
54
			setFieldLabel(labelDuChamp);
55
		}
56
 
57
		setValidator(new Validator() {
58
			@Override
59
			public String validate(Field<?> field, String value) {
60
				String retour = null;
61
				if (field.getRawValue().equals("")) {
62
					field.setValue(null);
63
				} else if (getStore().findModel("nom", field.getRawValue()) == null) {
64
					String contenuBrut = field.getRawValue();
65
					field.setValue(null);
66
					field.setRawValue(contenuBrut);
67
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
68
				}
69
				return retour;
70
			}
71
		});
72
 
862 jpm 73
		if (codeDeLaliste != null) {
74
			setListeCode(codeDeLaliste);
75
			mediateur.obtenirListeValeurEtRafraichir(this, getListeCode());
76
		}
854 jpm 77
	}
78
 
79
	public String getListeCode() {
80
		return listeValeursCode;
81
	}
82
	public void setListeCode(String code) {
83
		listeValeursCode = code;
84
	}
85
 
867 jpm 86
	public String getValeur() {
87
		return getValue().getId();
858 jpm 88
	}
89
 
867 jpm 90
	public void peupler(String valeur) {
91
		if (valeur.matches("[0-9]+")) {
92
			valeurDefautId = valeur;
93
			actualiserValeurParDefaut();
94
		} else {
95
			setRawValue(valeur);
96
		}
97
	}
98
 
854 jpm 99
	public String getTrie() {
100
		String champATrier = "nom";
101
		if (nomChampATrier != null) {
102
			champATrier = nomChampATrier;
103
		}
104
		return champATrier;
105
	}
106
	public void setTrie(String champATrier) {
107
		nomChampATrier = champATrier;
108
	}
109
 
858 jpm 110
	public void actualiserValeurParDefaut() {
111
		if (valeurDefautId != null && getStore() != null) {
112
			setValue(getStore().findModel("id_valeur", valeurDefautId));
113
		}
114
	}
115
 
854 jpm 116
	@Override
117
	public void rafraichir(Object nouvellesDonnees) {
118
		if (nouvellesDonnees instanceof ValeurListe) {
119
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
120
			if (listeValeurs.getId().equals(config.getListeId(getListeCode()))) {
121
				Formulaire.rafraichirComboBox(listeValeurs, this, getTrie());
858 jpm 122
				actualiserValeurParDefaut();
854 jpm 123
			}
124
		} else {
125
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
126
		}
127
	}
128
 
129
}