`
liugang594
  • 浏览: 990793 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

改变GEF的一些默认行为

    博客分类:
  • GEF
 
阅读更多

一、改变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接口。

分享到:
评论
1 楼 shine5566 2009-03-11  
有例子吗?有的话能发到我的邮箱吗?万分感谢
我的邮箱是heilan5566@126.com

相关推荐

    自己下的GEF资源打包

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

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

    一些关键的API如下: - `org.eclipse.gef.EditPart`:这是GEF的核心组件,它代表了图形模型中的一个元素,并负责将其映射到视图中。 - `org.eclipse.gef.GraphicalEditPart`:是EditPart的一个子类,专门处理图形...

    GEF锚点鼠标定位

    在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标进行交互时。"GEF锚点鼠标定位"这个主题主要探讨的是如何使锚点跟随鼠标移动,从而提供更加灵活和直观的用户操作体验。 1. **GEF框架基础**...

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

    7. **自定义编辑策略**:解释如何实现特定的编辑行为,如添加、删除和修改元素的规则。 8. **图元工厂**:学习如何使用MetaFactory来创建和初始化图形对象,以及如何注册和使用它们。 9. **导出和导入**:讨论如何将...

    GEF入门学习例子

    7. **文件名称列表**: `gef.tutorial.step2`可能代表了一个逐步教程的第二步,通常包含了一些示例代码和配置文件,用于演示上述概念的实现。 学习这个例子,开发者可以了解如何使用GEF创建一个完整的图形编辑环境,...

    GEF教程及demo源码GEF_RCP_DEMO.zip

    它允许EditPart根据当前上下文动态改变其行为,增加了系统的灵活性。 7. **RCP(Rich Client Platform)** Eclipse RCP是一个用于构建桌面应用程序的框架,它基于插件系统,可以方便地集成多种功能。在本教程中,...

    java gef开发实例

    - **视图**:通过创建和管理Figures来展示模型,当模型改变时,自动更新视图。 - **控制器**:通过EditPolicies监听用户交互,如点击、拖拽,然后更新模型并通知视图刷新。 4. **实例开发步骤**: - **初始化...

    GEF 开发简单示例

    这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能: 1. 往画布上添加多种节点 2. 节点之间的连线 3. 节点内容的编辑功能 4. 删除连线 5. 删除节点 6. 对节点的拖动以改变...

    GEF教程及demo源码

    - **EditPolicy**: 为EditPart提供特定的行为策略,如连接线的创建和删除。 - **Command类**: 对应用户操作的命令实现。 - **Figure类**: 自定义图形元素的外观。 - **Layout类**: 负责元素的布局和排列。 通过阅读...

    GEF简易教程-学习GEF的入门教程

    - **自定义图形元素**:通过EditParts定义图形的外观与行为。 - **模型绑定**:确保视图中的图形元素与模型数据保持一致。 - **事件处理**:实现图形元素的响应式操作,如拖拽、缩放等。 - **布局与样式**:调整图形...

    IBM GEF 推广资料

    1. **移动和调整大小**:允许用户自由地改变图形元素的位置和尺寸。 2. **创建和弯曲**:可以创建新的图形元素,或者对现有元素进行形状变换。 3. **连接**:图形元素之间可以通过线条或其他连接方式进行交互。 4. *...

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

    【GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料】是一份综合性的资源包,包含了GEF(Graphical Editing Framework)的3.7和3.8版本以及与其相关的Draw2D库的学习材料。GEF是Eclipse平台上用于构建图形化编辑器框架的...

    GEF Example Source Code

    **GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架,它为开发人员提供了一套全面的库和工具,用于创建基于Eclipse的富客户端平台(RCP)的应用程序,特别是那些涉及图形用户界面(GUI)...

    GEF 入门教程 中文版

    1. **定义拖放行为**:使用GEF提供的拖放API来定义拖放行为。 2. **处理拖放事件**:实现事件处理器来响应拖放过程中的各种事件。 3. **更新模型**:确保拖放操作能够正确地更新模型状态。 #### 十三、剪切和粘贴 ...

    GEF入门学习资料,简单地介绍了GEF使用过程中用到的基本类和函数的用法

    有一个非常不错的例子可以帮助我们学习 GEF,这个例子包括六个项目,每一个项目都是在前一个项目的基础上增加一些功能的。这个例子可以帮助我们了解 GEF 的典型功能,如 DirectEdit、Palette 等等。 在学习 GEF 的...

    GEF-SDK-3.7.0

    5. **设计视图**:使用GEF提供的API创建视图类,定义图形的显示方式和交互行为。 6. **定义命令**:定义命令类来处理用户的编辑操作,如添加、删除、移动等。 7. **测试与调试**:在Eclipse内部运行并测试编辑器,...

    gef学习文档+学习源码

    Gef的主要目标是为逆向工程师提供一个统一的平台,以便更好地理解二进制代码的行为。它支持多种操作系统,如Linux、macOS和Windows,并且与GDB的多个版本兼容。 在学习Gef时,首先要掌握如何安装和配置。这通常涉及...

    GEF_Tutorial.rar(GEF开发指南)

    随着对GEF的深入学习,你可能还会接触到更多高级特性,如Zest(用于创建图表和网络图的GEF扩展)、自定义编辑政策(EditPolicies)以控制特定图元的行为,以及自定义图元的绘画策略等。 总之,"GEF_Tutorial.rar"是...

    Eclipse的GEF学习

    ### Eclipse的GEF框架深入解析 #### 一、GEF框架概述 GEF,全称为Graphical Editor Framework,是Eclipse平台下的一款图形编辑框架,主要用于构建图形化编辑器,如流程设计器、UML类图编辑器等。GEF遵循经典的MVC...

    GEF快速入门教程和EMF教程

    - 编辑器继承自`org.eclipse.ui.part.EditorPart`,因此需要实现相应的方法以支持基本的编辑器行为。 ### GEF的基本结构 GEF的基本结构包括三个主要组件:模型(Model)、控制器(Controller)和视图(View)。这些组件...

Global site tag (gtag.js) - Google Analytics