Search code examples
gwtlistboxuibinder

How do I add items to GWT ListBox in Uibinder .ui.xml template ?


How to add the listbox items using UiBinder?


Solution

  • This is a listbox of translations of an enumeration, I suppose this also works for a listbox with string values (version of GWT: 2.1.0)

    You only need the renderer for translating the enumeration values.

    //UI XML

     <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;
       }
    
    }