Rev 1513 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.composants;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.configuration.Configuration;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Valeur;import org.tela_botanica.client.modeles.ValeurListe;import org.tela_botanica.client.vues.Formulaire;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 {private Configuration config = null;private Mediateur mediateur = null;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);}public ChampComboBoxListeValeurs(String labelDuChamp, ValeurListe listeDeValeurs, int tabIndex) {initialiserChampComboBox(labelDuChamp, null, tabIndex);rafraichir(listeDeValeurs);}private void initialiserChampComboBox(String labelDuChamp, String codeDeLaliste, int tabIndex) {config = (Configuration) Registry.get(RegistreId.CONFIG);mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);setForceSelection(true);setTriggerAction(TriggerAction.ALL);setDisplayField("nom");setStore(new ListStore<Valeur>());setEditable(false);setTabIndex(tabIndex);if (labelDuChamp == null) {setLabelSeparator("");} else {setFieldLabel(labelDuChamp);}setValidator(new Validator() {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 = Mediateur.i18nC.selectionnerValeurOuNull();}return retour;}});if (codeDeLaliste != null) {setListeCode(codeDeLaliste);mediateur.obtenirListeValeurEtRafraichir(this, getListeCode(), null);}}public String getListeCode() {return listeValeursCode;}public void setListeCode(String code) {listeValeursCode = code;}public String getValeur() {String valeur = "";if (getValue() != null) {valeur = getValue().getId();}return valeur;}public void peupler(String valeur) {if (valeur.matches("[0-9]+")) {valeurDefautId = valeur;actualiserValeurParDefaut();} else {setRawValue(valeur);}}public String getTrie() {String champATrier = "nom";if (nomChampATrier != null) {champATrier = nomChampATrier;}return champATrier;}public void setTrie(String champATrier) {nomChampATrier = champATrier;}public void actualiserValeurParDefaut() {if (valeurDefautId != null && getStore() != null) {setValue(getStore().findModel("id_valeur", valeurDefautId));}}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ValeurListe) {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);}}}