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