为了提高代码的重用性,以及实现GEF编辑器的功能,GEF采用命令模式提供了对模型的操作方式。
1.命令(Commands)的功能
在EditPolicies中新建了命令,如果返回的命令不为空,GEF框架会执行命令,对模型进行相应的修改。
Command是GEF中的一个抽象类,主要实现了如下的几个方法:
(1)execute:这是命令的执行方法,当请求结束并获得Command后,GEF框架会负责执行此方法。
(2)undo:对模型修改后,可以通过undo进行撤销。
(3)redo:当用户撤销后,能通过redo重复上一次的操作。
2.命令的实现
GEF通过一个命令堆栈(CommandStack)保存Command对象。用户可以通过命令堆栈撤销或重复对模型所做的操作。下面代码是模型位置改变的命令:
java 代码
- package com.example.commands;
-
- import org.eclipse.draw2d.geometry.Point;
- import org.eclipse.gef.commands.Command;
-
- import com.example.model.Node;
-
- public class MoveNodeCommand extends Command {
-
- private Node node;
-
- private Point oldPos;
-
- private Point newPos;
-
- public void setLocation(Point p) {
- this.newPos = p;
- }
-
- public void setNode(Node node) {
- this.node = node;
- }
-
- public void execute() {
-
- oldPos = this.node.getLocation();
- node.setLocation(newPos);
- }
-
- public String getLabel() {
- return "Move Node";
- }
-
- public void redo() {
- this.node.setLocation(newPos);
- }
-
- public void undo() {
- this.node.setLocation(oldPos);
- }
- }
通过命令堆栈(CommandStack),GEF编辑器能轻松完成用户的撤销和重做操作,GEF框架会维护命令堆栈。
分享到:
相关推荐
**GEF原理** 主要包括以下几个关键部分: 1. **模型(Model)**:这是GEF应用程序的基础,包含了业务逻辑和数据。通常由EMF生成的Java类构成,它们定义了图形化元素的数据结构。 2. **视图(View)**:视图是模型在...
6. **命令系统**:介绍GEF的命令架构,允许撤销/重做操作,保持编辑历史的完整性。 7. **自定义编辑策略**:解释如何实现特定的编辑行为,如添加、删除和修改元素的规则。 8. **图元工厂**:学习如何使用MetaFactory...
标题“GEF典型实现例子”指的是使用Graphical Editing Framework (GEF)的示例应用。GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建...
本篇文章将深入探讨GEF中的图形移动与缩放功能的实现。 首先,GEF的核心在于其事件处理机制。当用户在图形视图上执行操作(如点击、拖动等)时,SWT事件会被转换为请求(request),这些请求随后被发送到Controller...
总的来说,理解和实现GEF中的拷贝粘贴功能需要对GEF框架有深入的理解,包括其命令模型、EditPolicy和模型-视图交互。通过这种方式,开发者可以为自己的图形编辑器提供与操作系统一致的拷贝粘贴体验。
**GEF入门系列 PDF 格式资料** GEF(Graphical Editing Framework)是Eclipse开源组织推出的一个图形编辑框架,主要用于构建可视化的图形编辑工具。它为开发人员提供了丰富的API和设计模式,使得创建复杂的图形用户...
**GEF(Graphical Editing Framework)深度解析** GEF,全称为Graphical Editing Framework,是Eclipse平台下用于构建图形编辑器的...通过深入理解GEF的原理和实践,开发者可以更高效地构建出功能丰富的图形编辑应用。
- **Command类**: 对应用户操作的命令实现。 - **Figure类**: 自定义图形元素的外观。 - **Layout类**: 负责元素的布局和排列。 通过阅读和调试DEMO源码,可以理解GEF的各个组件如何协同工作,以及如何扩展和定制...
- `org.eclipse.gef.commands.Command`:命令模式在GEF中用于执行可撤销/重做的操作,如添加、删除或修改图形元素。 - `org.eclipse.gef.requests.Request`:表示用户或系统对编辑域的某种请求,如创建新对象或选择...
在"GEF入门系列宝典"中,我们将深入探讨如何使用GEF进行Eclipse插件开发,以创建自定义的图形编辑器。以下是一些关键知识点: 1. **Eclipse插件体系结构**: - 插件是Eclipse的核心组成部分,它们通过OSGi模块系统...
通过分析这些示例代码,开发者可以更深入地理解GEF的工作原理,学习如何在实际项目中应用。 9. **调试与测试** 学习如何利用Eclipse的调试工具进行GEF应用的调试,以及编写测试用例验证功能的正确性。 10. **扩展...
开发者可以通过实现GEF提供的接口和回调方法,轻松地定制自己的图形编辑器,用于创建流程图、网络拓扑图、UML模型等各种图形表示。 本入门系列将涵盖以下几个主要知识点: 1. **EMF基础**:首先会讲解EMF的核心...
**GEF(Graphical Editing Framework)入门系列** GEF,全称为Graphical Editing Framework,是Eclipse项目中的一个核心组件,主要用于构建图形化编辑器。它提供了一个强大的框架,允许开发者创建可定制、灵活且...
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
4. **移动、删除、撤销/重做**: 这些基本操作通过GEF的命令框架实现。例如,移动操作对应于一个移动命令,删除操作对应于删除命令,这些命令都可以被添加到`CommandStack`中,支持撤销和重做。 5. **大纲视图**: ...
4. **Command**:GEF也使用命令框架,允许撤销/重做操作,并将UI操作与模型状态的更改分离。 5. **Zones and Connections**:区域和连接用于管理图形元素之间的布局和连接线。 通过RCP和GEF结合,开发者可以快速...
在GEF(Graphical Editing Framework)中,属性视图(Property View)的实现是一个关键功能,它允许用户查看和编辑图形模型的属性。属性视图是数据源与用户界面之间的桥梁,确保图形模型和属性视图之间保持同步更新...