2010-06-14 14 views
17

¿Cómo agregar los elementos del cuadro de lista usando UiBinder?¿Cómo agrego elementos a GWT ListBox en Uibinder .ui.xml template?

+1

http://code.google.com/webtoolkit/doc/ latest/DevGuideUiBinder.html # Hello_Widget_World muestra cómo agregar elementos de ListBox desde el archivo Java, aunque supongo que está preguntando si es posible especificarlos en la plantilla de UiBinder. – aem

+0

yup .... estoy preguntando si podemos dar los artículos en el propio uibinder – Kasturi

Respuesta

17

Se trata de un cuadro de lista de traducciones de una enumeración , Supongo que esto también funciona para un listbox con valores de cadena (versión de GWT: 2.1.0)

Usted solo necesita el procesador para traducir los valores de enumeración.

// IU CÓDIGO XML

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

// JAVA

@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

Amigo ... código genial sniplet ... Fuiste muy generoso. –

+0

Gunnie, ¿cómo casaría su solución con la internacionalización declarativa descrita [aquí] (http://code.google.com/webtoolkit/doc/latest/DevGuideUiBinderI18n.html)? – expert

4

GWT ValueListbox de otro modo conocido como un ComboBox o componente desplegable. Otro ejemplo que también demuestra llenar la lista.

UiBinder ...

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

Editor ...

@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); 
Cuestiones relacionadas