Rev 954 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.composants;import java.util.Iterator;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Configuration;import org.tela_botanica.client.modeles.Valeur;import org.tela_botanica.client.modeles.ValeurListe;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.event.BaseEvent;import com.extjs.gxt.ui.client.event.Events;import com.extjs.gxt.ui.client.event.Listener;import com.extjs.gxt.ui.client.widget.LayoutContainer;import com.extjs.gxt.ui.client.widget.form.CheckBox;import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;import com.extjs.gxt.ui.client.widget.form.Field;import com.extjs.gxt.ui.client.widget.form.TextField;import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;import com.extjs.gxt.ui.client.widget.layout.FormData;import com.extjs.gxt.ui.client.widget.layout.FormLayout;import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;import com.google.gwt.core.client.GWT;public class ChampCaseACocher extends LayoutContainer implements Rafraichissable {private Configuration config = null;private Mediateur mediateur = null;private CheckBoxGroup groupeCaseACocher = null;private boolean avoirChampAutre = false;private Field<String> champAutre = null;private String listeValeursCode = null;public ChampCaseACocher(String label, String listeCode, boolean avoirChampAutre) {config = (Configuration) Registry.get(RegistreId.CONFIG);mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);setLayout(creerFormLayout(650, LabelAlign.TOP));groupeCaseACocher = new CheckBoxGroup();setLabel(label);setChampAutre(avoirChampAutre);setListeCode(listeCode);mediateur.obtenirListeValeurEtRafraichir(this, getListeCode());}public String getListeCode() {return listeValeursCode;}public void setListeCode(String code) {listeValeursCode = code;}public void setLabel(String label) {groupeCaseACocher.setFieldLabel(label);}public void setChampAutre(boolean avoirChamp) {avoirChampAutre = avoirChamp;if (avoirChampAutre) {champAutre = new TextField<String>();}}private FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {FormLayout formLayout = new FormLayout();if (labelWidth != null) {formLayout.setLabelWidth(labelWidth);}if (labelAlign != null) {formLayout.setLabelAlign(labelAlign);}return formLayout;}private void creerChoixMultipleCac(ValeurListe listeValeurs) {addListener(Events.Hide, new Listener<BaseEvent>() {public void handleEvent(BaseEvent be) {groupeCaseACocher.reset();if (avoirChampAutre) {champAutre.setValue("");}}});groupeCaseACocher.setAutoWidth(true);groupeCaseACocher.setStyleAttribute("padding", "3px");groupeCaseACocher.setData("liste_id", listeValeurs.getId());for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {Valeur val = listeValeurs.get(it.next());String nom = val.get("nom");CheckBox cac = new CheckBox();cac.setId("val-"+val.getId());cac.setData("id", val.getId());cac.setBoxLabel(nom);if (! val.getDescription().equals("NULL")) {cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));}groupeCaseACocher.add(cac);}add(groupeCaseACocher);if (avoirChampAutre) {// FIXME : éviter le chevauchement du texte des cases à cocher avec le label "Autre" sur les petits écransLayoutContainer conteneur = new LayoutContainer();conteneur.setLayout(creerFormLayout(50, LabelAlign.TOP));champAutre.setId("autre-"+listeValeurs.getId());champAutre.setFieldLabel("Autre");champAutre.setLabelStyle("font-weight:normal;");conteneur.add(champAutre, new FormData(500, 0));add(conteneur);}layout();}@Overridepublic void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ValeurListe) {ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;if (listeValeurs.getId().equals(config.getListeId(getListeCode()))) {creerChoixMultipleCac(listeValeurs);}} else {GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);}}}