private class LayoutEditor implements TableEditor {
public Widget getEditor(Table table, Object value, TableRow row, String key) throws GUIException {
Panel panel = new Panel(null, null);
ComboBox comboBox = new ComboBox(panel, null);
final Button button = new Button(panel, null);
final MapDataModel dataModel = new MapDataModel();
dataModel.setValue("userobject", ((PropertyTableRow) row).getUserObject());
dataModel.setValue("frame", table.getParentWidgetByClass(Frame.class));
dataModel.setValue("node", ((PropertyTableRow) row).getPropertyNode());
button.setProperty("text", "...");
button.addListener("clicked", "modify", LayoutAdapter.this);
panel.addChild(comboBox, "Center");
panel.addChild(button, "East");
comboBox.setProperty("valuekey", "value");
comboBox.setListDataModel(layoutModel);
panel.recursiveSetDataModel(dataModel);
dataModel.addModelChangeListener(new ModelChangeListener() {
public void modelChanged(ModelChangeEvent e) throws GUIException {
button.setEnabled("hig".equals(dataModel.getValue("value")));
}
});
dataModel.setValue("value", value);
return panel;
}