New file |
0,0 → 1,133 |
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 écrans |
LayoutContainer 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(); |
} |
|
@Override |
public 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); |
} |
} |
|
} |