¿Cómo puedo añadir artículos a GWT ListBox en la plantilla UiBinder .ui.xml?
Pregunta
¿Cómo agregar los elementos de cuadro de lista utilizando UiBinder?
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);