11,6 → 11,8 |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.widget.form.Field; |
import com.extjs.gxt.ui.client.widget.form.Validator; |
import com.google.gwt.core.client.GWT; |
|
public class ChampComboBoxListeValeurs extends ComboBox<Valeur> implements Rafraichissable { |
19,8 → 21,17 |
|
private String listeValeursCode = null; |
private String nomChampATrier = null; |
private String valeurDefautId = null; |
|
public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste) { |
initialiserChampComboBox(labelDuChamp, codeDeLaliste, 0); |
} |
|
public ChampComboBoxListeValeurs(String labelDuChamp, String codeDeLaliste, int tabIndex) { |
initialiserChampComboBox(labelDuChamp, codeDeLaliste, tabIndex); |
} |
|
private void initialiserChampComboBox(String labelDuChamp, String codeDeLaliste, int tabIndex) { |
config = (Configuration) Registry.get(RegistreId.CONFIG); |
mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
|
30,8 → 41,30 |
setStore(new ListStore<Valeur>()); |
setEditable(false); |
|
setFieldLabel(labelDuChamp); |
setTabIndex(tabIndex); |
|
if (labelDuChamp == null) { |
setLabelSeparator(""); |
} else { |
setFieldLabel(labelDuChamp); |
} |
|
setValidator(new Validator() { |
@Override |
public String validate(Field<?> field, String value) { |
String retour = null; |
if (field.getRawValue().equals("")) { |
field.setValue(null); |
} else if (getStore().findModel("nom", field.getRawValue()) == null) { |
String contenuBrut = field.getRawValue(); |
field.setValue(null); |
field.setRawValue(contenuBrut); |
retour = "Veuillez sélectionner une valeur ou laisser le champ vide"; |
} |
return retour; |
} |
}); |
|
setListeCode(codeDeLaliste); |
mediateur.obtenirListeValeurEtRafraichir(this, getListeCode()); |
} |
43,6 → 76,11 |
listeValeursCode = code; |
} |
|
public void setValeurDefaut(String id) { |
valeurDefautId = id; |
actualiserValeurParDefaut(); |
} |
|
public String getTrie() { |
String champATrier = "nom"; |
if (nomChampATrier != null) { |
54,6 → 92,12 |
nomChampATrier = champATrier; |
} |
|
public void actualiserValeurParDefaut() { |
if (valeurDefautId != null && getStore() != null) { |
setValue(getStore().findModel("id_valeur", valeurDefautId)); |
} |
} |
|
@Override |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof ValeurListe) { |
60,6 → 104,7 |
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees; |
if (listeValeurs.getId().equals(config.getListeId(getListeCode()))) { |
Formulaire.rafraichirComboBox(listeValeurs, this, getTrie()); |
actualiserValeurParDefaut(); |
} |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |