`

GraphicalEditor 添加 undo/redo 工具栏,但是没有undo/redo效果

gef 
阅读更多

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

    【标题】"GraphicalEditor-Project" 是一个与软件工程学院课程相关的项目,它主要采用 Java 语言进行开发。这个项目可能是一个图形编辑器的实现,让学生或教师能够设计、编辑和理解各种图形,比如流程图、UML图或者...

    java开发工具插件 GEF

    开发者可以使用GEF提供的编辑器基类,如GraphicalEditor,来快速创建自己的图形编辑器。 5. **图元和连接(Figure and Connection)**:图元是GEF中基本的可视化元素,可以是简单的形状,也可以是复杂的组合。连接...

    GEF开发指南

    随后,开发者需要创建一个继承自org.eclipse.gef.ui.parts.GraphicalEditor的类,该类用于定义我们自己的图形编辑器。这个过程涉及到了将EditorPart整合到插件中的步骤,并需要在类中定义EditDomain。 除此之外,...

    Open-close-principle

    #OCP 如果我们希望添加一个新的... 无需更改 GraphicalEditor。 好处:- • 无需单元测试。 • 无需了解GraphicEditor 的源代码。 • 由于绘图代码已移至具体形状类,因此添加新功能时影响旧功能的风险降低。

Global site tag (gtag.js) - Google Analytics