- 浏览: 978355 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
运乃强谦:
老哥,你确定这个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 1320第一步 增加Palette项: moveTool = n ... -
Draw2d的ScrollPane的使用
2011-04-19 15:05 1585ScrollPane scrollpane = ne ... -
GEF的动态变化二
2011-04-13 10:47 1292之前有一篇文件介绍怎么实现GEF Editor中的图元的渐近、 ... -
(译)Eclipse Zest二
2011-01-07 15:41 19045. Zest和JFace的例子 5.1 创建工程 创建一 ... -
(译)Eclipse Zest一
2011-01-07 15:14 28331. Eclipse Zest 1.1 概述 Eclips ... -
增加GEF的动态性
2011-01-06 10:25 1743在一个GEF应用中,最常的操作是移位和缩放。移位和缩放实现本身 ... -
GEF中Palette项的属性页显示
2010-11-04 14:25 1945一般来说我们只需要在GraphicalViewer部分显示在P ... -
定制GEF的Palette
2009-11-23 16:35 2498用GEF框架实现一个Editor时,会有一个默认的palett ... -
GEF增加之连接助手二
2009-10-29 16:01 1000上一篇说过怎么实现悬浮连接助手。一直想要怎么实现悬浮连接助手。 ... -
GEF功能增强之创建助手
2009-09-28 09:09 1672用过GMF就知道,GMF默认生成的editor有一个悬浮的创建 ... -
GEF功能增强之连接助手
2009-09-10 14:45 1772GEF图形编辑器中,通常 ... -
GEF中实现“拷贝为图片”
2009-09-06 09:13 1318在一个GEF的编辑器中,编辑器上是一个个的Figure,从外观 ... -
GEF中扩大、缩小时处理编辑行为
2008-12-30 10:54 1494我们为GEF应用提供了ZoomIn和ZoomOut功能之后,在 ... -
改变GEF的一些默认行为
2008-12-29 14:12 1387一、改变Layer GEF中会根据editpart的类 ... -
GEF中一个模型的多层图的问题
2008-12-26 16:00 1611一般来说,我们在做GEF的时候,通常是一个模型对应一个图,这个 ... -
GEF中增加ContextMenu的支持
2008-12-19 22:32 2604GEF中,增加对EditPart的右键菜单的支持是很普遍的一 ... -
增加Palette的拖放支持
2008-12-19 14:08 1931默认情况下,GEF中要创建一个新的结点都是通点在Palette ... -
给GEF拖放功能
2008-07-17 10:26 1859我们知道SWT支持Native的拖放。GEF使用SWT的拖放来 ... -
GEF中导视图的使用
2008-07-10 17:01 2144有时增加一个导视图能给用户很大的方便性,例如在outline视 ... -
(接上篇)关于GEF Feedback的补充
2008-07-10 10:18 1375重复上篇,我们有以下类: 1、模型相关:RouteMap、H ...
相关推荐
dudu翻译的GEF中文教程,入门最佳资料。附每章代码。
在GEF中property view 页面的实现!介绍了其实现的步骤方法!还结合了实例进行讲解!
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
GEF入门实例代码2《Eclipse插件开发》中实例
这是我参考了一些其他资料,自己写的一个GEF示例...1. 在你的Eclipse中要有GEF, Draw2d的包 2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
RCP GEF 入门教程,从法语班翻译过来的,自认为是比较全面细致的GEF入门教程,配套源码,很有学习价值!!!
RCP与GEF的课件,简单的介绍了RCP和GEF中的各组件的功能,已经工作流程
GEF简易教程-学习GEF的入门教程,不错的gef入门教程
GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很多,例如:UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化...
gef 绘图折线的实现方法。 gef API chm 格式
学习GEF的入门资料,简单地介绍了GEF使用过程中用到的基本类和函数的用法。
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
GEF eclipse 插件
GEF.rar GEF.rar GEF.rar
eclipse中emf,gef,ve的安装
Agenda Start things off What is GEF? GEF Demo Draw2d Overview Example GEF Overview Break Hands-on Activity: Shapes Example
GEF理解之第三部分,学习gef必备文档资料啊,值得下载