2010-06-14 5 views
17

Comment ajouter les éléments de la liste en utilisant UiBinder?Comment ajouter des éléments à GWT ListBox dans le modèle UIBinder .ui.xml?

+1

http://code.google.com/webtoolkit/doc/ latest/DevGuideUiBinder.html # Hello_Widget_World montre comment ajouter des éléments ListBox à partir du fichier Java, bien que je présume que vous demandez s'il est possible de les spécifier dans le modèle UiBinder. – aem

+0

yup .... je demande si nous pouvons donner les articles dans le uibinder lui-même – Kasturi

Répondre

17

Ceci est une zone de liste des traductions d'une énumération , Je suppose que cela fonctionne également pour une liste avec des valeurs de chaîne (version de GWT: 2.1.0)

Vous seulement besoin du rendu pour traduire les valeurs d'énumération.

// XML UI

<g:ValueListBox ui:field="requesterType"/> 

// JAVA CODE

@UiField(provided = true) 
ValueListBox<RequesterType> requesterType = new ValueListBox<RequesterType>(requesterTypeRenderer); 

static EnumRenderer<RequesterType> requesterTypeRenderer = new EnumRenderer<RequesterType>(); 

public Constructor() { 
    requesterTypeRenderer.setEmptyValue(Translations.translateEmptyValue(RequesterType.class)); 
    requesterType.setAcceptableValues(Arrays.asList(EnumUtil.getRequesterTypes())); 
} 

/** 
    * Translates enum entries. Use setEmptyValue() if you want to have a custom empty value. Default empty value is "". 
    * 
    * @param <T> 
    *   an enumeration entry which is to be registered in {@link Translations} 
    */ 

public class EnumRenderer<T extends Enum<?>> extends AbstractRenderer<T> { 

    private String emptyValue = ""; 

    @Override 
    public String render(T object) { 
     if (object == null) 
      return emptyValue; 
     return Translations.translate(object); 
    } 

    public void setEmptyValue(String emptyValue) { 
     this.emptyValue = emptyValue; 
    } 

} 
+0

Mec ... awesome code sniplet ... Vous étiez très généreux. –

+0

Gunnie, comment voulez-vous marier votre solution avec l'internationalisation déclarative décrite [ici] (http://code.google.com/webtoolkit/doc/latest/DevGuideUiBinderI18n.html)? – expert

4

GWT ValueListbox comme autrement savent ComboBox ou d'un composant Dropdown. Un autre exemple qui illustre également le remplissage de la liste.

UiBinder ...

<g:ValueListBox ui:field="subCategory"/> 

... Editeur

@UiField(provided = true) 
ValueListBox<String> subCategory = new ValueListBox<String>(
    new Renderer<String>() { 

    @Override 
    public String render(String object) { 
     String s = "Cats"; 
     if (object != null) { 
     s = object.toString(); 
     } 
     return s; 
    } 

    @Override 
    public void render(String object, Appendable appendable) 
     throws IOException { 
     render(object); 
    } 

}); 

... Constructor

List<String> values = new ArrayList<String>(); 
values.add("Animal Shelters and Rescues"); 
values.add("Birds"); 
values.add("Cats"); 
values.add("Dogs"); 
values.add("Other Pets"); 
values.add("Rabbits"); 
subCategory.setAcceptableValues(values); 
Questions connexes