GEF实践总结(六)Connection连线

一. 目标
在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;
}
}

 


注意:

  1. 先做了一个Connection的基础类,方便以后使用
  2. 由于Connection的特殊性,需要继承于AbstractConnectionEditPart
  3. 在ConnectionEditPart中注册了一个ConnectionEndpointEditPolicy
  4. connection.setTargetDecoration(new PolygonDecoration()) 设定目标的箭头:--|>
  5. connection.setSourceDecoration(new PolylineDecoration()) 设定起源的箭头:-->


五. 启动
添加Connection后运行

 

六.    总结

  1. 添加Connection的Model
  2. 修改和Connection相关的Model
  3. Connection的EditPart需要继承于AbstractConnectionEditPart
  4. 了解TargetDecoration和SourceDecoration
  5. 区分PolygonDecoration和PolylineDecoration的样式区别

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值