I have a ListButton in a Form that binds to a String property in my domain object. The String properties are keywords, but I want to display a more describing label to the user in the ListButton dropdown.

This is the solution I came up with. I'm wondering if there is a simpler solution?

public void initialize(Map<String, Object> namespace, URL location, Resources resources) {
    htmlEditor.setItemRenderer(new ItemRenderer());
    htmlEditor.setDataRenderer(new DataRenderer());
    htmlEditor.setListData("['tiny', 'jedit', 'osdefault']");
}

class ItemRenderer extends ListViewItemRenderer {
public void render(Object item, int index, ListView listView, boolean selected, boolean checked, boolean highlighted, boolean disabled) { super.render(item, index, listView, selected, checked, highlighted, disabled);
        alterLabel(label, (String) item);
    }
}

class DataRenderer extends ListButtonDataRenderer {
    public void render(Object data, Button button, boolean highlighted) {
        alterLabel(label, (String) data);
    }
}

private void alterLabel(Label label, String string) {
    if ("jedit".equals(string))
        label.setText("Internal code editor");
    else if ("tiny".equals(string))
        label.setText("Tiny MCE");
    else
        label.setText("Your OS default editor");
}

-- Edvin

Reply via email to