Pregunta

¿Cómo agregar los elementos de cuadro de lista utilizando UiBinder?

¿Fue útil?

Solución

Este es un cuadro de lista de traducciones de una enumeración, supongo que esto también funciona para un cuadro de lista con los valores de cadena (versión de GWT: 2.1.0)

Sólo necesita el procesador para la traducción de los valores de la enumeración.

// interfaz de usuario XML

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

// código 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;
   }

}

Otros consejos

Es posible desde la versión febrero de 2011:

http://code.google.com/ p / google-web-toolkit / temas / detalle? id = 4654

este parche que ahora son capaces de añadir elementos siguiendo esta sintaxis:

<g:ListBox>
  <g:item value='1'>
    first item
  </g:item>
  <g:item value='2'>
    second item
  </g:item>
</g:ListBox>

GWT ValueListbox de otro modo conocido como un ComboBox o componente desplegable. Otro ejemplo que demuestra también poblar 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top