一. 目标
在2个不同Table的2个Column间能建立Connection
二. 书写Connection模型
public class ColumnConnectionModel extends BaseModel {
private TableColumnModel target;
private TableColumnModel source;、
public void setTarget(TableColumnModel target) {
this.target = target;
target.addTarget(this);
}
public void setSource(TableColumnModel source) {
this.source = source;
source.addSource(this);
}
三. 修改TableColumn模型
必须修改与Connection相关的其他模型。
public class TableColumnModel extends BaseModel {
private List<ColumnConnectionModel> sources = new ArrayList<ColumnConnectionModel>();
private List<ColumnConnectionModel> targets = new ArrayList<ColumnConnectionModel>();
public void addSource(ColumnConnectionModel source) {
this.sources.add(source);
this.firePropertyChange(IPropertyConst.SOURCE_CONNECTION, null, null);
}
public void addTarget(ColumnConnectionModel target) {
this.targets.add(target);
this.firePropertyChange(IPropertyConst.TARGET_CONNECTION, null, null);
}
四. 书写Connection的EditPart
public abstract class BaseConnectionEditPart extends AbstractConnectionEditPart implements
PropertyChangeListener {
public class ColumnConnectionEditPart extends BaseConnectionEditPart {
@Override
protected void createEditPolicies() {
installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new ConnectionEndpointEditPolicy());
}
@Override
protected IFigure createFigure() {
PolylineConnection connection = new PolylineConnection();
connection.setTargetDecoration(new PolygonDecoration());
connection.setSourceDecoration(new PolylineDecoration());
connection.setForegroundColor(ColorConstants.blue);
return connection;
}
}
注意:
-
先做了一个Connection的基础类,方便以后使用
-
由于Connection的特殊性,需要继承于AbstractConnectionEditPart
-
在ConnectionEditPart中注册了一个ConnectionEndpointEditPolicy
-
connection.setTargetDecoration(new PolygonDecoration()) 设定目标的箭头:--|>
-
connection.setSourceDecoration(new PolylineDecoration()) 设定起源的箭头:-->
五. 启动
六. 总结
- 添加Connection的Model
- 修改和Connection相关的Model
- Connection的EditPart需要继承于AbstractConnectionEditPart
- 了解TargetDecoration和SourceDecoration
- 区分PolygonDecoration和PolylineDecoration的样式区别
分享到:
相关推荐
GEF 全称 Graphical Editor Framework 。它是一个基于 eclipse 的图形化编辑框架。通过它,开发人员可以方便的以图形化的方式(而非文本的方式)展示和编辑模型。
**GEF学习体会与经验总结** GEF,全称Graphical Editing Framework,是Eclipse组织开发的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和工具,使得创建复杂的图形用户界面...
**Gef 学习总结** Gef,全称为 Graph Editor Framework,是一个强大的图形编辑框架,主要用于构建可视化的图形编辑工具。在IT行业中,Gef通常与EMF(Eclipse Modeling Framework)结合使用,用于创建复杂的建模和...
【GEF研究总结】 GEF(Graphical Editor Framework)是一个专为开发图形化编辑应用程序的框架,它使得开发者可以通过图形化方式展示和编辑模型,从而提高用户体验。在各种图形化编辑应用中,如UML类图编辑器、XML...
描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...
### GEF开发实践知识点解析 #### 一、GEF向导与工程创建 **1. 创建GEF工程** GEF(Graphical Editing Framework)是Eclipse提供的一个强大的图形编辑框架,适用于构建复杂图形用户界面的应用程序。创建GEF工程是...
在图形编辑框架(Graphical Editing Framework,简称GEF)中,悬空连线是一种常见的功能,它允许用户在图形画布上创建未连接到任何端点的连接线,以表示潜在的连接关系。这类连线通常在用户尝试建立节点之间的连接时...
这个入门学习例子旨在帮助初学者理解GEF的基本用法和核心概念,通过实例展示如何利用GEF实现工具栏、菜单栏、属性栏以及图形的交互功能,如移动、删除、撤销、连线等,并涵盖了大纲视图和鹰眼功能的实现。...
这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能: 1. 往画布上添加多种节点 2. 节点之间的连线 3. 节点内容的编辑功能 4. 删除连线 5. 删除节点 6. 对节点的拖动以改变...
同样,连线(Connection)、直接编辑(Direct Edit)、变更标记(Dirty)等更高级的功能也在指南中得到了详尽的描述。 总之,GEF开发指南是一份从基础到高级应用,系统介绍GEF框架使用方法的重要文档。它不仅对初学...
**GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架...总的来说,这个压缩包为学习和实践GEF框架提供了一个宝贵的资源,开发者可以通过研究这些示例代码来提升自己的图形编辑工具开发能力。
**GEF教程——实践导向的图形编辑框架解析** 在IT领域,图形编辑框架(Graphical Editing Framework,简称GEF)是用于构建用户界面,特别是图形化编辑器的一种强大的开源工具。本教程着重于实践,旨在帮助开发者...
**GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台上广泛使用,特别是在开发复杂的图形用户界面和工具时。本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF...
4. **开源项目**:查看和研究使用GEF的开源项目,可以从实践中学习其应用。 **开发实践** 在实际开发中,首先要理解模型-视图-控制器(MVC)的设计模式,这是GEF的基础。然后,你需要创建模型类,定义图形元素的...
通过系统的学习和实践,尤其是参考“八进制”Blog上的详尽教程,开发者能够逐渐掌握GEF框架的精髓,从而在实际项目中发挥其最大效能,创造出既美观又实用的图形编辑应用。GEF框架的学习之路虽漫长,但其带来的回报...
**GEF教程及DEMO源码详解** ...总结,GEF教程及DEMO源码的学习,不仅能帮助开发者理解图形编辑框架的设计思想,还能掌握实际开发中的关键技术点。通过实践,可以快速上手并开发出满足特定需求的图形编辑工具。
4. "GEF_Tutorial.pdf" 和 "GEF_zh(1).pdf"、"GEF_zh.pdf" 是GEF的教程,可能包含详细的示例代码和实践指导。 5. "eclipse插件开发快速入门图文教程.pdf" 和 "Eclipse插件开发学习笔记.pdf" 可能是针对Eclipse插件...