Subversion Repositories eFlore/Applications.coel

Rev

Rev 1383 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1383 Rev 1737
1
package org.tela_botanica.client.composants;
1
package org.tela_botanica.client.composants;
2
 
2
 
3
import org.tela_botanica.client.Mediateur;
3
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.RegistreId;
4
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.configuration.Configuration;
5
import org.tela_botanica.client.configuration.Configuration;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.modeles.Valeur;
7
import org.tela_botanica.client.modeles.Valeur;
8
import org.tela_botanica.client.modeles.ValeurListe;
8
import org.tela_botanica.client.modeles.ValeurListe;
9
import org.tela_botanica.client.vues.Formulaire;
9
import org.tela_botanica.client.vues.Formulaire;
10
 
10
 
11
import com.extjs.gxt.ui.client.Registry;
11
import com.extjs.gxt.ui.client.Registry;
-
 
12
import com.extjs.gxt.ui.client.Style.SortDir;
12
import com.extjs.gxt.ui.client.store.ListStore;
13
import com.extjs.gxt.ui.client.store.ListStore;
13
import com.extjs.gxt.ui.client.widget.form.ComboBox;
14
import com.extjs.gxt.ui.client.widget.form.ComboBox;
14
import com.extjs.gxt.ui.client.widget.form.Field;
15
import com.extjs.gxt.ui.client.widget.form.Field;
15
import com.extjs.gxt.ui.client.widget.form.Validator;
16
import com.extjs.gxt.ui.client.widget.form.Validator;
16
import com.google.gwt.core.client.GWT;
17
import com.google.gwt.core.client.GWT;
17
 
18
 
18
public class ChampComboBoxListeValeurs extends ComboBox<Valeur> implements Rafraichissable {
19
public class ChampComboBoxListeValeurs extends ComboBox<Valeur> implements Rafraichissable {
19
	private Configuration config = null;
20
	private Configuration config = null;
20
	private Mediateur mediateur = null;
21
	private Mediateur mediateur = null;
21
 
22
 
22
	private String listeValeursCode = null;
23
	private String listeValeursCode = null;
23
	private String nomChampATrier = null;
24
	private String nomChampATrier = null;
24
	private String valeurDefautId = null;
25
	private String valeurDefautId = null;
25
	
26
	
26
	public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste) {
27
	public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste) {
27
		initialiserChampComboBox(labelDuChamp, codeDeLaliste, 0);
28
		initialiserChampComboBox(labelDuChamp, codeDeLaliste, 0);
28
	}
29
	}
29
	
30
	
30
	public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste, int tabIndex) {
31
	public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste, int tabIndex) {
31
		initialiserChampComboBox(labelDuChamp, codeDeLaliste, tabIndex);
32
		initialiserChampComboBox(labelDuChamp, codeDeLaliste, tabIndex);
32
	}
33
	}
33
	
34
	
34
	public ChampComboBoxListeValeurs(String labelDuChamp, ValeurListe listeDeValeurs, int tabIndex) {
35
	public ChampComboBoxListeValeurs(String labelDuChamp, ValeurListe listeDeValeurs, int tabIndex) {
35
		initialiserChampComboBox(labelDuChamp, null, tabIndex);
36
		initialiserChampComboBox(labelDuChamp, null, tabIndex);
36
		rafraichir(listeDeValeurs);
37
		rafraichir(listeDeValeurs);
37
	}
38
	}
38
	
39
	
39
	private void initialiserChampComboBox(String labelDuChamp, String codeDeLaliste, int tabIndex) {
40
	private void initialiserChampComboBox(String labelDuChamp, String codeDeLaliste, int tabIndex) {
40
		config = (Configuration) Registry.get(RegistreId.CONFIG);
41
		config = (Configuration) Registry.get(RegistreId.CONFIG);
41
		mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
42
		mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
42
		
43
		
43
		setForceSelection(true);
44
		setForceSelection(true);
44
		setTriggerAction(TriggerAction.ALL);
45
		setTriggerAction(TriggerAction.ALL);
45
		setDisplayField("nom");
46
		setDisplayField("nom");
46
		setStore(new ListStore<Valeur>());
47
		setStore(new ListStore<Valeur>());
47
		setEditable(false);
48
		setEditable(false);
48
 
49
 
49
		setTabIndex(tabIndex);
50
		setTabIndex(tabIndex);
50
		
51
		
51
		if (labelDuChamp == null) {
52
		if (labelDuChamp == null) {
52
			setLabelSeparator("");
53
			setLabelSeparator("");
53
		} else {
54
		} else {
54
			setFieldLabel(labelDuChamp);
55
			setFieldLabel(labelDuChamp);
55
		}
56
		}
56
		
57
		
57
		setValidator(new Validator() {
58
		setValidator(new Validator() {
58
			public String validate(Field<?> field, String value) {
59
			public String validate(Field<?> field, String value) {
59
				String retour = null;
60
				String retour = null;
60
				if (field.getRawValue().equals("")) {
61
				if (field.getRawValue().equals("")) {
61
					field.setValue(null);
62
					field.setValue(null);
62
				} else if (getStore().findModel("nom", field.getRawValue()) == null) {
63
				} else if (getStore().findModel("nom", field.getRawValue()) == null) {
63
					String contenuBrut = field.getRawValue();
64
					String contenuBrut = field.getRawValue();
64
					field.setValue(null);
65
					field.setValue(null);
65
					field.setRawValue(contenuBrut);
66
					field.setRawValue(contenuBrut);
66
					retour = Mediateur.i18nC.selectionnerValeurOuNull();
67
					retour = Mediateur.i18nC.selectionnerValeurOuNull();
67
					
68
					
68
				}
69
				}
69
				return retour;
70
				return retour;
70
			}
71
			}
71
		});
72
		});
72
		
73
		
73
		if (codeDeLaliste != null) {
74
		if (codeDeLaliste != null) {
74
			setListeCode(codeDeLaliste);
75
			setListeCode(codeDeLaliste);
75
			mediateur.obtenirListeValeurEtRafraichir(this, getListeCode(), null);
76
			mediateur.obtenirListeValeurEtRafraichir(this, getListeCode(), null);
76
		}
77
		}
77
	}
78
	}
78
	
79
	
79
	public String getListeCode() {
80
	public String getListeCode() {
80
		return listeValeursCode;
81
		return listeValeursCode;
81
	}
82
	}
82
	public void setListeCode(String code) {
83
	public void setListeCode(String code) {
83
		listeValeursCode = code;
84
		listeValeursCode = code;
84
	}
85
	}
85
	
86
	
86
	public String getValeur() {
87
	public String getValeur() {
87
		String valeur = "";
88
		String valeur = "";
88
		if (getValue() != null) {
89
		if (getValue() != null) {
89
			valeur = getValue().getId(); 
90
			valeur = getValue().getId(); 
90
		}
91
		}
91
		return valeur;
92
		return valeur;
92
	}
93
	}
93
	
94
	
94
	public void peupler(String valeur) {
95
	public void peupler(String valeur) {
95
		if (valeur.matches("[0-9]+")) {
96
		if (valeur.matches("[0-9]+")) {
96
			valeurDefautId = valeur;
97
			valeurDefautId = valeur;
97
			actualiserValeurParDefaut();
98
			actualiserValeurParDefaut();
98
		} else {
99
		} else {
99
			setRawValue(valeur);
100
			setRawValue(valeur);
100
		}
101
		}
101
	}
102
	}
102
	
103
	
103
	public String getTrie() {
104
	public String getTrie() {
104
		String champATrier = "nom";
105
		String champATrier = "nom";
105
		if (nomChampATrier != null) {
106
		if (nomChampATrier != null) {
106
			champATrier = nomChampATrier;
107
			champATrier = nomChampATrier;
107
		}
108
		}
108
		return champATrier;
109
		return champATrier;
109
	}
110
	}
-
 
111
 
-
 
112
	/**
-
 
113
	 * Définit le nom du champ selon lequel trier, et si trierJusteApres vaut true, trie
-
 
114
	 * @param champATrier
-
 
115
	 */
110
	public void setTrie(String champATrier) {
116
	public void setTrie(String champATrier, boolean trierJusteApres) {
111
		nomChampATrier = champATrier;
117
		nomChampATrier = champATrier;
-
 
118
		if (trierJusteApres) {
-
 
119
			trier();
-
 
120
		}
-
 
121
	}
-
 
122
 
-
 
123
	/**
-
 
124
	 * Définit le nom du champ selon lequel trier, et trie juste après
-
 
125
	 * @param champATrier
-
 
126
	 */
-
 
127
	public void setTrie(String champATrier) {
-
 
128
		setTrie(champATrier, true);
112
	}
129
	}
113
	
130
	
114
	public void actualiserValeurParDefaut() {
131
	public void actualiserValeurParDefaut() {
115
		if (valeurDefautId != null && getStore() != null) {
132
		if (valeurDefautId != null && getStore() != null) {
116
			setValue(getStore().findModel("id_valeur", valeurDefautId));
133
			setValue(getStore().findModel("id_valeur", valeurDefautId));
117
		}
134
		}
-
 
135
	}
-
 
136
 
-
 
137
	/**
-
 
138
	 * Trie le contenu de la comboboîte selon le nomChampATrier défini. S'il n'y en a aucun, échoue silencieusement (niark niark)
-
 
139
	 */
-
 
140
	public void trier() {
-
 
141
		if (! this.nomChampATrier.isEmpty()) {
-
 
142
			this.getStore().sort(this.nomChampATrier, SortDir.ASC);
-
 
143
		}
118
	}
144
	}
119
	
145
	
120
	public void rafraichir(Object nouvellesDonnees) {
146
	public void rafraichir(Object nouvellesDonnees) {
121
		if (nouvellesDonnees instanceof ValeurListe) {
147
		if (nouvellesDonnees instanceof ValeurListe) {
122
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
148
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
123
			if (listeValeurs.getId().equals(config.getListeId(getListeCode()))) {
149
			if (listeValeurs.getId().equals(config.getListeId(getListeCode()))) {
124
				Formulaire.rafraichirComboBox(listeValeurs, this, getTrie());
150
				Formulaire.rafraichirComboBox(listeValeurs, this, getTrie());
125
				actualiserValeurParDefaut();
151
				actualiserValeurParDefaut();
126
			} 
152
			} 
127
		} else {
153
		} else {
128
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
154
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
129
		}
155
		}
130
	}
156
	}
131
 
157
 
132
}
158
}