- 浏览: 979730 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
运乃强谦:
老哥,你确定这个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程序运行
二、新建连接模型
新建连接模型,过程大同小异。此时需要在结点模型上安装Policy,Policy的类型为:GraphicalNodeEditPolicy。
在HelloWorldEditPart的createEditPolicies()方法里追加:
installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new HelloWorldGraphicalNodeEditPolicy());
其中HelloWorldGraphicalNodeEditPolicy是我们的Policy实现类。还是一样,先完成Command,再回过头来完成Policy。
要成功的实现一个连接,首先我们知道至少需要有三个对象:连接线、源结点和目标结点。所以我们的command的可以如下实现: 这时显示出来的效果和上一节一样:能创建,不显示。还是因为没刷新的问题。增加一个刷新事监听即可。如下:
public class AddConnectionCommand extends Command {
private AbstractConnectionModel connection;
public AddConnectionCommand(AbstractConnectionModel connection) {
super();
this.connection = connection;
}
public void setSrc(HelloWorldModel src) {
connection.setSrc(src);
}
public void setTarget(HelloWorldModel target) {
connection.setTarget(target);
}
public void setConnection(AbstractConnectionModel connection) {
this.connection = connection;
}
@Override
public void execute() {
connection.attachSource();
connection.attachTarget();
}
@Override
public void undo() {
connection.deattachTarget();
connection.deattachSource();
}
}
然后我们实现我们的Policy。这里要分两步进行,首先是完成源结点的连接,然后就完成目标结点的连接,代码如下:
@Override
protected Command getConnectionCompleteCommand(
CreateConnectionRequest request) {
AddConnectionCommand command = (AddConnectionCommand) request
.getStartCommand();
command.setTarget((HelloWorldModel) getHost().getModel());
return command;
}
@Override
protected Command getConnectionCreateCommand(CreateConnectionRequest request) {
AddConnectionCommand command = new AddConnectionCommand(
(AbstractConnectionModel) request.getNewObject());
command.setSrc((HelloWorldModel) getHost().getModel());
request.setStartCommand(command);
return command;
}
修改HelloWorldModel里与连接相关的四个方法如下:
public static final String P_SOURCE = "p_source";
public static final String P_TARGET = "p_target";
public void addInput(AbstractConnectionModel model) {
if (!inputs.contains(model)) {
inputs.add(model);
firePropertyChange(P_TARGET, null, model);
}
}
public void addOut(AbstractConnectionModel model) {
if (!outputs.contains(model)) {
outputs.add(model);
firePropertyChange(P_SOURCE, null, model);
}
}
public void removeInput(AbstractConnectionModel model) {
if (inputs.contains(model)) {
inputs.remove(model);
firePropertyChange(P_TARGET, model, null);
}
}
public void removeOut(AbstractConnectionModel model) {
if (outputs.contains(model)) {
outputs.remove(model);
firePropertyChange(P_SOURCE, model, null);
}
}
然后再修改对应的EditPart的propertyChange()方法如下:
public void propertyChange(PropertyChangeEvent evt) {
if(evt.getPropertyName().equals(HelloWorldModel.P_CONSTRAINT)){
refreshVisuals();
}else if(evt.getPropertyName().equals(HelloWorldModel.P_SOURCE)){
refreshSourceConnections();
}else if(evt.getPropertyName().equals(HelloWorldModel.P_TARGET)){
refreshTargetConnections();
}
}
最后试一下效果:
图三
小提示:EditPolicy的getHost()方法返回的是安装这个Policy的那个对象。也就是安装这个Policy的那个EditPart。
发表评论
-
GEF中用鼠标移动画布
2011-12-27 13:37 1327第一步 增加Palette项: moveTool = n ... -
Draw2d的ScrollPane的使用
2011-04-19 15:05 1588ScrollPane scrollpane = ne ... -
GEF的动态变化二
2011-04-13 10:47 1299之前有一篇文件介绍怎么实现GEF Editor中的图元的渐近、 ... -
(译)Eclipse Zest二
2011-01-07 15:41 19155. Zest和JFace的例子 5.1 创建工程 创建一 ... -
(译)Eclipse Zest一
2011-01-07 15:14 28401. Eclipse Zest 1.1 概述 Eclips ... -
增加GEF的动态性
2011-01-06 10:25 1756在一个GEF应用中,最常的操作是移位和缩放。移位和缩放实现本身 ... -
GEF中Palette项的属性页显示
2010-11-04 14:25 1952一般来说我们只需要在GraphicalViewer部分显示在P ... -
定制GEF的Palette
2009-11-23 16:35 2502用GEF框架实现一个Editor时,会有一个默认的palett ... -
GEF增加之连接助手二
2009-10-29 16:01 1009上一篇说过怎么实现悬浮连接助手。一直想要怎么实现悬浮连接助手。 ... -
GEF功能增强之创建助手
2009-09-28 09:09 1675用过GMF就知道,GMF默认生成的editor有一个悬浮的创建 ... -
GEF功能增强之连接助手
2009-09-10 14:45 1780GEF图形编辑器中,通常 ... -
GEF中实现“拷贝为图片”
2009-09-06 09:13 1320在一个GEF的编辑器中,编辑器上是一个个的Figure,从外观 ... -
GEF中扩大、缩小时处理编辑行为
2008-12-30 10:54 1498我们为GEF应用提供了ZoomIn和ZoomOut功能之后,在 ... -
改变GEF的一些默认行为
2008-12-29 14:12 1390一、改变Layer GEF中会根据editpart的类 ... -
GEF中一个模型的多层图的问题
2008-12-26 16:00 1614一般来说,我们在做GEF的时候,通常是一个模型对应一个图,这个 ... -
GEF中增加ContextMenu的支持
2008-12-19 22:32 2609GEF中,增加对EditPart的右键菜单的支持是很普遍的一 ... -
增加Palette的拖放支持
2008-12-19 14:08 1937默认情况下,GEF中要创建一个新的结点都是通点在Palette ... -
给GEF拖放功能
2008-07-17 10:26 1862我们知道SWT支持Native的拖放。GEF使用SWT的拖放来 ... -
修改GEF中Connection的端点
2008-07-14 16:09 1794GEF中,选中一条连接线,默认的端点是两个小黑框,如下: ... -
GEF中导视图的使用
2008-07-10 17:01 2148有时增加一个导视图能给用户很大的方便性,例如在outline视 ...
相关推荐
GEF理解之第三部分,学习gef必备文档资料啊,值得下载
GEF理解之第一部分,学习gef必备文档资料啊,值得下载
GEF理解之第二部分,学习gef必备文档资料啊,值得下载
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
GEF 入门系列 GEF
Eclipse插件开发:GEF入门系列宝典
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
适合gef初学者学习,本人认为是一个很不错的学习材料
emf介绍系列和gef入门介绍打包,适合新人快速掌握。
GEF是公司内部资料,在此提供给大家学习参考。
Eclipse插件开发--gef开发指南与入门系列宝典打包下载。
GEF入门实例代码2《Eclipse插件开发》中实例
安装m2eclipse插件时会依赖gef插件和svn插件,压缩包内包含m2eclipse + gef + svn的全部插件安装包,可以直接离线安装,本人亲测,在Eclipse3.7下安装成功,可以新建Maven项目。 需要注意的是,在离线安装时,切记...
Eclipse的图形编辑框架GEF的参考API,chm格式
GEF-ALL-3.7 GEF-ALL-3.8 官方包。 GEF Draw2d 学习资料
RCP GEF 入门教程,从法语班翻译过来的,自认为是比较全面细致的GEF入门教程,比八进制的《GEF入门系列》要浅显易懂。
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload