public void valueChanged(ITable source, String key, Object value, boolean isNew) { if (key.equals("~TYPE~") && value instanceof String) { type = TableTableType.getType((String) value); List<WidgetFactory> factories = widgetRegistry.getWidgets(type); for (int i = 0; i < factories.size(); ++i) { WidgetFactory factory = factories.get(i); if (factory instanceof TableWidgetFactory) { TableWidget widget = ((TableWidgetFactory) factory).createWidget(table); setWidget(widget); return; } } } setWidget(null); // TODO print cannot handle type }
public Collection<WidgetMenuItem> getChangeToMenuItems() { List<WidgetMenuItem> changeItems = new ArrayList<WidgetMenuItem>(); List<WidgetFactory> factories = widgetRegistry.getWidgets(type); for (int i = 0; i < factories.size(); ++i) { final WidgetFactory factory = factories.get(i); if (factory instanceof TableWidgetFactory) { changeItems.add( new WidgetMenuItem.Action(factory.getName()) { @Override public void execute() { TableWidget widget = ((TableWidgetFactory) factory).createWidget(table); setWidget(widget); } }); } } return changeItems; }