GraphicalEditor 添加 undo/redo 工具栏,但是没有undo/redo效果。
编辑器可以显示 undo/redo 按钮,但是拖动模型后,undo/redo 仍然是灰色。 从现象来看,应该是编辑器没有注册undo/redo Action。
原因:编辑器重载了 createActions() 方法,而没有注册 undo/redo Action。
public class ShapesEditor extends GraphicalEditor {
...
@Override
protected void createActions() {
}
...
}
解决方法:
去掉重载的方法createActions(), 让子类直接调用父类的 createActions() 。
我们可以看到,父类的方法注册了部分常用的 ACTION,包括 undo/redo。
protected void createActions()
{
ActionRegistry registry = getActionRegistry();
IAction action = new UndoAction(this);
registry.registerAction(action);
getStackActions().add(action.getId());
action = new RedoAction(this);
registry.registerAction(action);
getStackActions().add(action.getId());
action = new SelectAllAction(this);
registry.registerAction(action);
action = new DeleteAction(this);
registry.registerAction(action);
getSelectionActions().add(action.getId());
action = new SaveAction(this);
registry.registerAction(action);
getPropertyActions().add(action.getId());
registry.registerAction(new PrintAction(this));
}