- 浏览: 990820 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
运乃强谦:
老哥,你确定这个wsdl 地址 可以访问?
[CXF] Server与Client实现方式五:HTTPS -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
[CXF] Server与Client实现方式四:JMS -
dengmiao:
JAXB学习三 (验证) -
panamera:
你好。可以提供maven pom配置是怎么配置的?不知道你使用 ...
[CXF] Server与Client实现方式四:JMS -
u010221220:
请问楼主一二三部分的代码都应该放在哪个函数体中。
使用JDI监听Java程序运行
GEF中,选中一条连接线,默认的端点是两个小黑框,如下:
Figure 1
这个可用,不过终究是不太美观。这里介绍一下怎么修改这个选中的端点外观。修改后的效果如下:
Figure 2
首先有一点我们知道:通常要使得连线能够被选中,我们要在连接线对应的EditPart上安装以下Policy:
installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new ConnectionEndpointEditPolicy());
所以,我们知道,要想修改连线端点,我们需要从ConnectionEndpointEditPolicy下手。
ConnectionEndpointEditPolicy里有一个方法:createSelectionHandles()。这个方法就是提供端点选择的方法。其实我们在选中某个结点的时候,结点周围出现在带8个点的边框也是某个Policy提供的一些SelectionHandles。
所以下面我们的任务就是继承ConnectionEndpointEditPolicy,例如我们新写一个类:HomunculeConnectionEndpointPolicy,重写createSelectionHandles()方法。
我们看一下源码:
protected List createSelectionHandles() { List list = new ArrayList(); list.add(new ConnectionEndHandle((ConnectionEditPart)getHost())); list.add(new ConnectionStartHandle((ConnectionEditPart)getHost())); return list; }
可以看到,为了修改端点的显示,我们需要提供自己的ConnectionEndHandle和ConnectionStartHandle。最简单的就是分别写两个继承这两个类的类。然后重写paintFigure(Graphics)方法。
不过,有点可惜的是:ConnectionEndHandle和ConnectionStartHandle都是final的,所以没法继承。所以我们需要转而继承他们的父类了。还好,这个很简单,最后的结果如下:
HomunculeConnectionEndpointPolicy类:
public class HomunculeConnectionEndpointPolicy extends ConnectionEndpointEditPolicy { @Override protected List<ConnectionHandle> createSelectionHandles() { List<ConnectionHandle> list = new ArrayList<ConnectionHandle>(); list.add(new HomunculeConnectionEndHandle((ConnectionEditPart) getHost())); list.add(new HomunculeConnectionStartHandle((ConnectionEditPart) getHost())); return list; } }
HomunculeConnectionStartHandle类:
public class HomunculeConnectionStartHandle extends ConnectionHandle{ public HomunculeConnectionStartHandle(ConnectionEditPart host) { setOwner(host); setLocator(new ConnectionLocator(getConnection(), ConnectionLocator.SOURCE)); } /** * Creates and returns a new {@link ConnectionEndpointTracker}. * @return the new ConnectionEndpointTracker */ protected DragTracker createDragTracker() { if (isFixed()) return null; ConnectionEndpointTracker tracker; tracker = new ConnectionEndpointTracker((ConnectionEditPart)getOwner()); tracker.setCommandName(RequestConstants.REQ_RECONNECT_SOURCE); tracker.setDefaultCursor(getCursor()); return tracker; } @Override public void paintFigure(Graphics g) { Rectangle r = getBounds(); r.shrink(1, 1); try { g.setBackgroundColor(ColorConstants.green); g.fillOval(r); g.setForegroundColor(ColorConstants.darkBlue); g.drawOval(r); } finally { // We don't really own rect 'r', so fix it. r.expand(1, 1); } } }
HomunculeConnectionEndHandle类:
public class HomunculeConnectionEndHandle extends ConnectionHandle { public HomunculeConnectionEndHandle(ConnectionEditPart host) { setOwner(host); setLocator(new ConnectionLocator(getConnection(), ConnectionLocator.TARGET)); } /** * Creates and returns a new {@link ConnectionEndpointTracker}. * * @return the new ConnectionEndpointTracker */ protected DragTracker createDragTracker() { if (isFixed()) return null; ConnectionEndpointTracker tracker; tracker = new ConnectionEndpointTracker((ConnectionEditPart) getOwner()); tracker.setCommandName(RequestConstants.REQ_RECONNECT_TARGET); tracker.setDefaultCursor(getCursor()); return tracker; } @Override public void paintFigure(Graphics g) { Rectangle r = getBounds(); r.shrink(1, 1); try { g.setBackgroundColor(ColorConstants.green); g.fillOval(r); g.setForegroundColor(ColorConstants.darkBlue); g.drawOval(r); } finally { // We don't really own rect 'r', so fix it. r.expand(1, 1); } } }
最后就可以得到我们想要的结果。
多说一句:createDragTracker() 方法是用来重定向连接的!
发表评论
-
GEF中用鼠标移动画布
2011-12-27 13:37 1370第一步 增加Palette项: moveTool = n ... -
Draw2d的ScrollPane的使用
2011-04-19 15:05 1612ScrollPane scrollpane = ne ... -
GEF的动态变化二
2011-04-13 10:47 1365之前有一篇文件介绍怎么实现GEF Editor中的图元的渐近、 ... -
(译)Eclipse Zest二
2011-01-07 15:41 19915. Zest和JFace的例子 5.1 创建工程 创建一 ... -
(译)Eclipse Zest一
2011-01-07 15:14 29191. Eclipse Zest 1.1 概述 Eclips ... -
增加GEF的动态性
2011-01-06 10:25 1785在一个GEF应用中,最常的操作是移位和缩放。移位和缩放实现本身 ... -
GEF中Palette项的属性页显示
2010-11-04 14:25 2025一般来说我们只需要在GraphicalViewer部分显示在P ... -
定制GEF的Palette
2009-11-23 16:35 2546用GEF框架实现一个Editor时,会有一个默认的palett ... -
GEF增加之连接助手二
2009-10-29 16:01 1054上一篇说过怎么实现悬浮连接助手。一直想要怎么实现悬浮连接助手。 ... -
GEF功能增强之创建助手
2009-09-28 09:09 1717用过GMF就知道,GMF默认生成的editor有一个悬浮的创建 ... -
GEF功能增强之连接助手
2009-09-10 14:45 1808GEF图形编辑器中,通常 ... -
GEF中实现“拷贝为图片”
2009-09-06 09:13 1368在一个GEF的编辑器中,编辑器上是一个个的Figure,从外观 ... -
GEF中扩大、缩小时处理编辑行为
2008-12-30 10:54 1537我们为GEF应用提供了ZoomIn和ZoomOut功能之后,在 ... -
改变GEF的一些默认行为
2008-12-29 14:12 1428一、改变Layer GEF中会根据editpart的类 ... -
GEF中一个模型的多层图的问题
2008-12-26 16:00 1652一般来说,我们在做GEF的时候,通常是一个模型对应一个图,这个 ... -
GEF中增加ContextMenu的支持
2008-12-19 22:32 2642GEF中,增加对EditPart的右键菜单的支持是很普遍的一 ... -
增加Palette的拖放支持
2008-12-19 14:08 1968默认情况下,GEF中要创建一个新的结点都是通点在Palette ... -
给GEF拖放功能
2008-07-17 10:26 1898我们知道SWT支持Native的拖放。GEF使用SWT的拖放来 ... -
GEF中导视图的使用
2008-07-10 17:01 2198有时增加一个导视图能给用户很大的方便性,例如在outline视 ... -
(接上篇)关于GEF Feedback的补充
2008-07-10 10:18 1406重复上篇,我们有以下类: 1、模型相关:RouteMap、H ...
相关推荐
在本教程中,我们将深入探讨GEF的基本概念、设计原则以及如何使用它来开发自己的图形编辑器。 **1. GEF简介** GEF的设计目标是将图形编辑器的实现细节抽象化,让开发者能够专注于业务逻辑和模型设计,而不是底层的...
4. **命令(Command)**:GEF中的命令模式用于封装对模型的修改操作,使得撤销/重做功能得以实现。命令对象记录了更改前后的状态,便于执行回滚或重复操作。 5. **图元(Figure)**和**绘图(Drawing)**:GEF通过SWT...
GEF 入门学习资料,简单地介绍了 GEF 使用过程中用到的基本类和函数的用法。 GEF(Graphical Editor Framework)是一种图形化编辑框架,能够提供图形化编辑模型的功能,提高用户体验。典型的应用包括图形化的流程...
- `org.eclipse.gef.commands.Command`:命令模式在GEF中用于执行可撤销/重做的操作,如添加、删除或修改图形元素。 - `org.eclipse.gef.requests.Request`:表示用户或系统对编辑域的某种请求,如创建新对象或选择...
"gefpractice31.zip"则可能是包含了一个或多个实际的GEF项目实例,用户可以解压后运行,通过观察和修改代码来实践和学习GEF的实际运用技巧。这种实践性的学习方式有助于提升开发者对GEF的理解和应用能力。 "GEF-...
GEF(Graphical Editing Framework)是Eclipse平台中的一个核心组件,主要用于构建图形化编辑工具。这个实例代码2是《Eclipse插件开发》教程中的一部分,旨在帮助初学者理解如何利用GEF来创建自定义的图形编辑器。在...
实现后的效果如图所示,满足了系统设计的需求,即点击处理器图形模型时能在属性视图中显示对应的硬件信息,同时在图形模型或属性视图中修改属性,另一端都会实时反映出变化。 在实际应用中,可以根据需求扩展属性...
GEF(Graphical Editing Framework)是Eclipse平台中的一个组件,主要用于创建图形化的编辑器。它提供了一套完整的框架,用于构建可扩展的、交互式的图形编辑应用程序,特别是针对那些需要可视表示的数据模型。GEF为...
在GEF中,通过实现`OutlinePage`和`StructuredSelection`可以将模型数据展示在大纲视图中。 6. **鹰眼(Eyeball)**: 鹰眼功能是一种缩略图视图,让用户能快速查看整个图形区域。在GEF中,可以通过自定义小部件并集成...
**GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的...对于希望在Java和Eclipse环境中提升图形界面开发技能的程序员来说,"GEF入门必读 GEF入门系列 GEF-whole-upload"是一个不可多得的学习资源。
在RCP项目中,**Editor**是最常见的GEF承载对象,它继承自`EditorPart`,提供了图形修改后的自动保存机制,这是View不具备的功能。 为了构建GEF编辑器,需要创建以下三个核心组件: 1. **模型(Model)**:定义数据...
GEF的引入主要是为了支持ADT中的图形化界面设计,使得开发者可以更直观地构建和修改Android应用的用户界面。 Eclipse GEF框架的核心特性包括: 1. **模型-视图-控制器(MVC)架构**:GEF遵循MVC设计模式,将数据...
通过此教程,读者能够理解GEF的基本架构以及如何在Eclipse RCP应用中集成GEF。 ### 前提条件 在开始之前,请确保您的开发环境符合以下要求: - **操作系统**: Windows XP (Windows 2000用户可能遇到问题,将在...
在本示例中,适配器用于扩展属性页配置,这意味着它可以将特定的视图或编辑器的属性展示在属性视图中,允许用户在运行时修改这些属性。适配器通过监听和响应对象的变化,实现了数据与视图的同步更新。 2. **在...
《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...
5. **图元和连接(Figure and Connection)**:图元是GEF中基本的可视化元素,可以是简单的形状,也可以是复杂的组合。连接用于将图元相互连接,以表达数据间的关联。开发者可以通过继承或扩展已有的图元和连接类...
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
在本教程中,GEF_RCP_DEMO展示了如何在RCP应用中集成GEF图形编辑功能。 8. **DEMO源码分析** GEF_RCP_DEMO的源码包含了各种GEF特性的实例,如图元创建、连接线绘制、拖放操作等。通过分析这些示例代码,开发者可以...
同样,连线(Connection)、直接编辑(Direct Edit)、变更标记(Dirty)等更高级的功能也在指南中得到了详尽的描述。 总之,GEF开发指南是一份从基础到高级应用,系统介绍GEF框架使用方法的重要文档。它不仅对初学...