快速业务通道

[Eclipse]GEF入门系列(七、XYLayout和展开/折叠功能) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
把 ConnectionPart作为监听器,在refreshVisuals()里也没有做任何事情,因为连接线的刷新 是在与它连接的节点的刷新里通过调用refreshSourceConnections()和 refreshTargetConnections()方法完成的。最后,通过覆盖setSelected()方法,我们可以定 义连接线被选中后的外观,上面代码可以让被选中的连接线变粗。

看完了模型和Editpart,现在来说说EditPolicy。我们知道,GEF提供的每种 GraphicalEditPolicy都是与布局有关的,你在容器图形(比如画布)里使用了哪种布局,一 般就应该选择对应的EditPolicy,因为这些EditPolicy需要对布局有所了解,这样才能提供 拖动feedback等功能。使用XYLayout作为布局时,子元素被称为节点(Node),对应的 EditPolicy是GraphicalNodeEditPolicy,在前面NodePart的代码中我们给它安装的角色为 EditPolicy.GRAPHICAL_NODE_ROLE的NodeGraphicalNodeEditPolicy就是这个类的一个子类。 和所有EditPolicy一样,NodeGraphicalNodeEditPolicy里也有一系列getXXXCommand()方法 ,提供了用于实现各种编辑目的的命令:

public class NodeGraphicalNodeEditPolicy extends GraphicalNodeEditPolicy {    protected Command getConnectionCompleteCommand(CreateConnectionRequest request) {      ConnectionCreateCommand command = (ConnectionCreateCommand) request.getStartCommand();      command.setTarget((Node) getHost().getModel());      return command;    }    protected Command getConnectionCreateCommand(CreateConnectionRequest request) {      ConnectionCreateCommand command = new ConnectionCreateCommand();      command.setSource((Node) getHost().getModel());      request.setStartCommand(command);      return command;    }    protected Command getReconnectSourceCommand(ReconnectRequest request) {      return null;    }    protected Command getReconnectTargetCommand(ReconnectRequest request) {      return null;    } }

[Eclipse]GEF入门系列(七、XYLayout和展开/折叠功能)(5)

时间:2011-04-19 cnblogs bjzhanghao

因为是针对节点的,所以这里面都是和连接线有关的方法,因为只有节点才需要连接线。 这些方法名称的意义都很明显:getConnectionCreateCommand()是当用户选择了连接线工具 并点中一个节点时调用,getConnectionCompleteCommand()是在用户选择了连接终点时调用 ,getReconnectSourceCommand()和getReconnectTargetCommand()则分别是在用户拖动一个 连接线的起点/终点到其他节点上时调用,这里我们返回null表示不提供改变连接端点的功能 。关于命令(Command)本身,我想没有必要做详细说明了,基本上只要搞清了模型之间的关 系,命令就很容易写出来,请下载例子后自己查看。

下面应郭奕朋友的要求说一说如何实现容器(Container)的折叠/展开功能。在有些应用 里,画布中的图形还能够包含子图形,这种图形称为容器(画布本身当然也是容器),为了 让画布看起来更简洁,可以让容器具有"折叠"和"展开"两种状态,当折叠时只显示部分信息 ,不显示子图形,展开时则显示完整的容器和子图形,见图2和图3,本例中各模型元素的包 含关系是Diagram->Subject->Attribute。

[Eclipse]GEF入门系列(七、XYLayout和展开/折叠功能) - 编程入门网

图2 容器Subject3处于展开状态

要为Subject增加展开/折叠功能主要存在两个问题需要考虑:一是如何隐藏容器里的子图 形,并改变容器的外观,我采取的方法是在需要折叠/展开的时候改变容器图形,将 contentPane也就是包含子图形的那个图形隐藏起来,从而达到隐藏子图

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号