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));
}
分享到:
相关推荐
【标题】"GraphicalEditor-Project" 是一个与软件工程学院课程相关的项目,它主要采用 Java 语言进行开发。这个项目可能是一个图形编辑器的实现,让学生或教师能够设计、编辑和理解各种图形,比如流程图、UML图或者...
开发者可以使用GEF提供的编辑器基类,如GraphicalEditor,来快速创建自己的图形编辑器。 5. **图元和连接(Figure and Connection)**:图元是GEF中基本的可视化元素,可以是简单的形状,也可以是复杂的组合。连接...
随后,开发者需要创建一个继承自org.eclipse.gef.ui.parts.GraphicalEditor的类,该类用于定义我们自己的图形编辑器。这个过程涉及到了将EditorPart整合到插件中的步骤,并需要在类中定义EditDomain。 除此之外,...
- **创建GraphicalEditor类**:继承自`org.eclipse.gef.ui.parts.GraphicalEditor`,用于定义自己的图形编辑器。 - **定义EditDomain**:通过构造函数设置编辑域(`EditDomain`),它是处理图形编辑命令的核心组件。 -...
#OCP 如果我们希望添加一个新的... 无需更改 GraphicalEditor。 好处:- • 无需单元测试。 • 无需了解GraphicEditor 的源代码。 • 由于绘图代码已移至具体形状类,因此添加新功能时影响旧功能的风险降低。