`

gef 的command笔记

 
阅读更多

gef 的command 是用于执行具体操作的,一般在类的属性中保有要操作的对象,  这些对象是在EditPolicy创建这个类时通过setter注入的,一般是在EditPolicy的相关方法中创建一个command类 ,通过注入相应的要操作的组件信息, 这些信息可能是从request中获得,也可能通过相应的EditPolicy的父类的方法获得,然后注入到command里, 最后通过execute方法执行操作,执行之前还重写canExecute方法判断一下是否可以执行,如果false就不允许execute

 

command里还有undo ,redo,redo就是默认执行execute,一般不用去管他, undo就是取消操作,一般要重写,而且在command中要保有之前的属性以便undo操作,  这里就涉及一个顺序问题,一般先是执行了某个操作之后再来回滚,所以是先执行execute方法之后才会去执行,undo 。    所以command中那些用来保留的属性应该是在execute方法中设置的,然后在undo方法中再拿来用

 

 

public class MoveBendpointCommand extends Command {
    //操作的对象
    private AbstractConnectionModel connection;
    //保留的属性
    private Point oldLocation;
    //操作的相关属性
    private Point newLocation;
  //操作的相关属性
    private int index;

    public AbstractConnectionModel getConnection() {
        return connection;
    }

    public Point getOldlLocation() {
        return oldLocation;
    }

    public Point getNewLocation() {
        return newLocation;
    }

    public int getIndex() {
        return index;
    }

    public void setConnection(Object connection) {
        this.connection = (AbstractConnectionModel) connection;
    }

    public void setOldlLocation(Object oldlLocation) {
        this.oldLocation = (Point) oldlLocation;
    }

    public void setNewLocation(Object newLocation) {
        this.newLocation = (Point) newLocation;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    @Override
    public void execute() {
        oldLocation=(Point)connection.getBendpoints().get(index);
        connection.replaceBendpoint(index, newLocation);
    }

    @Override
    public void undo() {
        connection.replaceBendpoint(index, oldLocation);
    }
}

 

分享到:
评论

相关推荐

    GEF中文教程笔记1

    【标题】"GEF中文教程笔记1" 涉及的知识点主要集中在图形化编辑框架(Graphical Editing Framework,简称GEF)上,这是一款由Eclipse基金会开发的开源工具,用于构建图形用户界面(GUI),特别是用于创建复杂的图形...

    GEF教程及demo源码

    GEF主要由三部分组成:MVC(Model-View-Controller)、Command和Zest。MVC模式用于分离数据模型、视图和控制器,使得代码结构清晰,易于维护。Command模块则实现了撤销/重做功能,使得用户操作可逆。Zest是GEF的图表...

    Eclipse的GEF学习

    通过将复杂的编辑操作抽象为请求(Request)、角色(Role)、策略(EditPolicy)和命令(Command),GEF提供了一套灵活且强大的机制,让开发者可以专注于业务逻辑,而不必担心图形界面的具体实现细节。 #### 五、GEF在实际...

    GEF入门必读 GEF入门系列 GEF-whole-upload

    1. **基本概念**:介绍GEF的关键概念,如Figure、EditPart、Command、Model等,以及它们在图形编辑中的角色。 2. **图形组件**:讲解如何创建和操作图形元素,如矩形、圆形、文本等,以及如何添加连接线和组合图形。...

    自己下的GEF资源打包

    标题中的“GEF资源打包”指的是一个集合了关于GEF(Graph Edit Framework)的各种学习资料的压缩文件。这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如...

    GEF教程及demo源码GEF_RCP_DEMO.zip

    GEF的核心是其五层架构,包括Model(模型)、View(视图)、EditPart(编辑部件)、Figure(图形)和Command(命令)。模型负责存储数据,视图负责显示数据,EditPart作为模型和视图之间的桥梁,Figure处理图形绘制...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    - `org.eclipse.gef.commands.Command`:命令模式在GEF中用于执行可撤销/重做的操作,如添加、删除或修改图形元素。 - `org.eclipse.gef.requests.Request`:表示用户或系统对编辑域的某种请求,如创建新对象或选择...

    GEF实现拷贝粘贴

    1. **定义CopyCommand和PasteCommand**:你需要创建自定义的CopyCommand和PasteCommand类,继承自GEF提供的基础命令类,如DirectEditCommand或EditCommand。这些命令类应该封装复制和粘贴的具体操作。 2. **实现...

    GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料

    5. "eclipse插件开发快速入门图文教程.pdf" 和 "Eclipse插件开发学习笔记.pdf" 可能是针对Eclipse插件开发的一般性教程,对于理解GEF和Draw2D的上下文非常有帮助。 6. "jgraphx-1_10_0_6.zip.rar" 是JGraphX的压缩包...

    GEF入门学习例子

    GEF的命令框架(Command Framework)使得操作可撤销/重做。 5. **连接器(Connectors)**: 连接器用于创建和管理图形元素之间的连接。在GEF中,`ConnectionEditPart`负责绘制和编辑连接线。 6. **适配器(Adapter)**:...

    GEF-Update-3.7.1.zip

    GEF提供了丰富的API和设计模式,如MVC(模型-视图-控制器)、Command模式和AdapterManager,以支持图形元素的创建、编辑和交互。 在3.7.1版本中,GEF可能包含了对性能的优化、API的改进、新特性的添加以及已知问题...

    GEF入门实例代码2《Eclipse插件开发》中实例

    GEF包含了一系列的类和接口,如Command、Model、View、EditPart、Figure等,它们共同构成了图形编辑的基础架构。Command代表可撤销/重做的操作,Model表示数据模型,View负责显示图形,EditPart作为模型和视图之间...

    GEF理解系列三

    总之,GEF通过将图形操作分解为请求、Policy和Command,实现了灵活且可扩展的图形编辑环境。理解这一机制有助于开发者更高效地构建自己的图形编辑应用,包括实现图形的移动、缩放以及更多复杂的交互功能。通过不断...

    java gef开发实例

    Java GEF(Graphical Editing Framework)开发实例是一个深入理解并应用GEF框架的优秀实践案例。GEF是Eclipse平台上用于构建图形编辑器的库,它提供了构建图形用户界面(GUI)所需的基础结构,尤其适合创建复杂的...

    GEF教程

    它内置了丰富的工具和机制,如Command模式支持的Undo/Redo功能,使得开发图形编辑器变得更加高效和便捷。此外,GEF框架还充分利用了诸如MVC(Model-View-Controller)架构等经典设计模式,确保了代码的清晰性和可...

    GEF框架入门学习

    这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。

    GEF开发整合资料大全

    **GEF(Graphical Editing Framework)开发整合资料大全** **GEF是什么?** GEF(Graphical Editing Framework)是Eclipse平台下的一款用于构建图形化编辑器的框架,它为开发者提供了一套全面的工具和API,使得创建...

    GEF-ALL-3.3.zip

    8. **学习和理解GEF架构**:GEF的核心组件包括Model(模型)、View(视图)、EditPart(编辑部件)和Command(命令)。理解这些组件之间的关系和交互方式是成功开发的关键。 9. **实践与调试**:使用GEF开发图形...

Global site tag (gtag.js) - Google Analytics