GEF中同时使用两个Router

       gef中经常会有很多连线,这些连线如何和每个node连接,允不允许交叉等等都是用router来控制的.网上有篇文章对这个做了一些介绍:
http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-gef/part2/
       我现在做的这个项目需要在两个node之间同时存在多根线,如果不使用router的话就只能看见一根,在diagram的 figure里面set一个FanRouter作为缺省的router就可以解决这个问题.两个node之间如果存在多根连线的话,FanRouter会把它们分布成扇形,每根连线都可以看见.但是FanRouter好像只能在diagram的figure里面设置,如果每根connection你都设置成FanRouter,反而不会启效果,这可能跟它的handlecollision方法的算法有关.
        但是设置成FanRouter之后有一个问题:我的项目中还有那种自连接的connection(该connection的source和target是同一个node),原先我是把这种connection的router设置为bendconnectionrouter,但是后来设置了FanRouter之后BendConnectionRouter好像就失效了,不管你的connection上面有多少个bendpoint都看不出来效果.
        后来终于找到了让这两张router和平共处的办法,只要加一行:fanRouter.setNextRouter(new BendPointConnectionRouter());setNextRouter这个方法有点怪,按照字面的理解,应该是fanrouter的下一个router,按理说应该是先用fanrouter来layout 连线,然后再使用BendPointConnectionRouter来layout 连线,但是它实际上是先用BendPointConnectionRouter来layout 连线,然后再使用fanRouter.

posted on 2008-08-12 18:06 小牛小虾 阅读(1776) 评论(2)  编辑  收藏

评论

# re: GEF中同时使用两个Router 2008-08-12 20:37 Always BaNg.

其实在Logic Example就有这个实例。

参见 LogicDiagramEditPart.refreshVisuals

protected void refreshVisuals() {
Animation.markBegin();
ConnectionLayer cLayer = (ConnectionLayer) getLayer(CONNECTION_LAYER);
if ((getViewer().getControl().getStyle() & SWT.MIRRORED ) == 0)
cLayer.setAntialias(SWT.ON);

if (getLogicDiagram().getConnectionRouter().equals(LogicDiagram.ROUTER_MANUAL)) {
AutomaticRouter router = new FanRouter();
router.setNextRouter(new BendpointConnectionRouter());
cLayer.setConnectionRouter(router);
} else if (getLogicDiagram().getConnectionRouter().equals(LogicDiagram.ROUTER_MANHATTAN))
cLayer.setConnectionRouter(new ManhattanConnectionRouter());
else
cLayer.setConnectionRouter(new ShortestPathConnectionRouter(getFigure()));
Animation.run(400);
}

}  回复  更多评论   

# re: GEF中同时使用两个Router 2008-08-13 17:24 yes1983

@Always BaNg.
不好意思,没有完整的看过logic那个例子的源码,这些都是平常做GEF项目的时候慢慢积累的一些经验,贻笑大方了,赫赫  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(6)

随笔档案

文章档案

eclipse

搜索

最新评论

阅读排行榜

评论排行榜