一、改变Layer
GEF中会根据editpart的类型,把它们放在某个类型的Layer上,例如Scalable Layer, Handle Layer, FeedBack Layer.
根据设置的RootEditPart的类型,得到的Layer的类型和层次也是不同的。例如:
对于ScalableFreeformRootEditPart:
layeredPane.add(getScaledLayers(), SCALABLE_LAYERS);
layeredPane.add(new FreeformLayer(), HANDLE_LAYER);
layeredPane.add(new FeedbackLayer(), FEEDBACK_LAYER);
layeredPane.add(new GuideLayer(), GUIDE_LAYER);
对于ScalableRootEditPart:
layeredPane.add(getScaledLayers(), SCALABLE_LAYERS);
layeredPane.add(new Layer() {
public Dimension getPreferredSize(int wHint, int hHint) {
return new Dimension();
}
}, HANDLE_LAYER);
layeredPane.add(new FeedbackLayer(), FEEDBACK_LAYER);
layeredPane.add(new GuideLayer(), GUIDE_LAYER);
等等。
在GEF中,这些不同的layer处在不同的层级上。例如最上层是Feedback Layer,接下来是Handle Layer, 再下次是
Printable Layer。只有Primary 和Connection是可打印的。
可以通过重写这些RootEditPart的这些与layers相关的方法就可以达到修改layer的层次和可打印的layer。
二、改变Tool执行完后的行为
我们使用一个CreateTool创建一个模型后,有些应用是会保持这个Tool的选择不变,有的应用会重新把SelectionTool设成选择项。
这个可以通过增加一个PaletteListener来修改,如下:
@Override
protected void initializePaletteViewer() {
super.initializePaletteViewer();
getPaletteViewer().addPaletteListener(this);
}
@Override
public void dispose() {
getPaletteViewer().removePaletteListener(this);
super.dispose();
}
public void activeToolChanged(PaletteViewer palette, ToolEntry tool) {
Tool activeTool = getEditDomain().getActiveTool();
if(activeTool instanceof CreationTool){
((CreationTool)activeTool).setUnloadWhenFinished(false);
}
}
其中Editor实现了PaletteListener接口。
分享到:
相关推荐
标题中的“GEF资源打包”指的是一个集合了关于GEF(Graph Edit Framework)的各种学习资料的压缩文件。这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如...
一些关键的API如下: - `org.eclipse.gef.EditPart`:这是GEF的核心组件,它代表了图形模型中的一个元素,并负责将其映射到视图中。 - `org.eclipse.gef.GraphicalEditPart`:是EditPart的一个子类,专门处理图形...
在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标进行交互时。"GEF锚点鼠标定位"这个主题主要探讨的是如何使锚点跟随鼠标移动,从而提供更加灵活和直观的用户操作体验。 1. **GEF框架基础**...
7. **自定义编辑策略**:解释如何实现特定的编辑行为,如添加、删除和修改元素的规则。 8. **图元工厂**:学习如何使用MetaFactory来创建和初始化图形对象,以及如何注册和使用它们。 9. **导出和导入**:讨论如何将...
7. **文件名称列表**: `gef.tutorial.step2`可能代表了一个逐步教程的第二步,通常包含了一些示例代码和配置文件,用于演示上述概念的实现。 学习这个例子,开发者可以了解如何使用GEF创建一个完整的图形编辑环境,...
它允许EditPart根据当前上下文动态改变其行为,增加了系统的灵活性。 7. **RCP(Rich Client Platform)** Eclipse RCP是一个用于构建桌面应用程序的框架,它基于插件系统,可以方便地集成多种功能。在本教程中,...
- **视图**:通过创建和管理Figures来展示模型,当模型改变时,自动更新视图。 - **控制器**:通过EditPolicies监听用户交互,如点击、拖拽,然后更新模型并通知视图刷新。 4. **实例开发步骤**: - **初始化...
这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能: 1. 往画布上添加多种节点 2. 节点之间的连线 3. 节点内容的编辑功能 4. 删除连线 5. 删除节点 6. 对节点的拖动以改变...
- **EditPolicy**: 为EditPart提供特定的行为策略,如连接线的创建和删除。 - **Command类**: 对应用户操作的命令实现。 - **Figure类**: 自定义图形元素的外观。 - **Layout类**: 负责元素的布局和排列。 通过阅读...
- **自定义图形元素**:通过EditParts定义图形的外观与行为。 - **模型绑定**:确保视图中的图形元素与模型数据保持一致。 - **事件处理**:实现图形元素的响应式操作,如拖拽、缩放等。 - **布局与样式**:调整图形...
1. **移动和调整大小**:允许用户自由地改变图形元素的位置和尺寸。 2. **创建和弯曲**:可以创建新的图形元素,或者对现有元素进行形状变换。 3. **连接**:图形元素之间可以通过线条或其他连接方式进行交互。 4. *...
【GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料】是一份综合性的资源包,包含了GEF(Graphical Editing Framework)的3.7和3.8版本以及与其相关的Draw2D库的学习材料。GEF是Eclipse平台上用于构建图形化编辑器框架的...
**GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架,它为开发人员提供了一套全面的库和工具,用于创建基于Eclipse的富客户端平台(RCP)的应用程序,特别是那些涉及图形用户界面(GUI)...
1. **定义拖放行为**:使用GEF提供的拖放API来定义拖放行为。 2. **处理拖放事件**:实现事件处理器来响应拖放过程中的各种事件。 3. **更新模型**:确保拖放操作能够正确地更新模型状态。 #### 十三、剪切和粘贴 ...
有一个非常不错的例子可以帮助我们学习 GEF,这个例子包括六个项目,每一个项目都是在前一个项目的基础上增加一些功能的。这个例子可以帮助我们了解 GEF 的典型功能,如 DirectEdit、Palette 等等。 在学习 GEF 的...
5. **设计视图**:使用GEF提供的API创建视图类,定义图形的显示方式和交互行为。 6. **定义命令**:定义命令类来处理用户的编辑操作,如添加、删除、移动等。 7. **测试与调试**:在Eclipse内部运行并测试编辑器,...
Gef的主要目标是为逆向工程师提供一个统一的平台,以便更好地理解二进制代码的行为。它支持多种操作系统,如Linux、macOS和Windows,并且与GDB的多个版本兼容。 在学习Gef时,首先要掌握如何安装和配置。这通常涉及...
随着对GEF的深入学习,你可能还会接触到更多高级特性,如Zest(用于创建图表和网络图的GEF扩展)、自定义编辑政策(EditPolicies)以控制特定图元的行为,以及自定义图元的绘画策略等。 总之,"GEF_Tutorial.rar"是...
### Eclipse的GEF框架深入解析 #### 一、GEF框架概述 GEF,全称为Graphical Editor Framework,是Eclipse平台下的一款图形编辑框架,主要用于构建图形化编辑器,如流程设计器、UML类图编辑器等。GEF遵循经典的MVC...
- 编辑器继承自`org.eclipse.ui.part.EditorPart`,因此需要实现相应的方法以支持基本的编辑器行为。 ### GEF的基本结构 GEF的基本结构包括三个主要组件:模型(Model)、控制器(Controller)和视图(View)。这些组件...