偶尔去GEF网站上看看, 发现在GEF的分类下除了Draw2d外,还加了一个项目:
Zest.
介绍URL: http://www.eclipse.org/gef/zest/
Demo源码URL: http://www.eclipse.org/gef/zest/snippets.php
下面这段是从IBM developerworks抄来的.
总结:
1. Zest是基于Draw2d上的图像化模块.
2. widgets包下只提供了极少量的widgets, 可快速上手.
IContainer 容器的基类.
Graph 容器. 最底层的容器. 类似于GEF里面Diagram的概念,或者SWT中的Shell的概念.
GraphContainer 容器.看名字也知道是一个包含GraphNode的容器. 就像swt里面的Section,可下拉,可收缩. 长像,效果和Section也很像.
GraphItem Node的基类.
GraphNode 节点,就是图上的一个节点.
GraphConnection 连接线,连接2个GraphNode的连线. 当然, GraphNode可以自己连接自己.
具体的效果:
3. Zest简单,能做的事情也比较有限. 如果只需考虑可视化而不需编辑等功能,完全可以使用 Zest。比如:无逻辑的 组织结构图,流程图 等完全可以使用Zest来完成.
注意:
目前提供的 org.eclipse.zest.core 和 org.eclipse.zest.layouts 都不是Eclipse插件, 需要直接加到你项目的ClassPath中.
后记;
基于Zest, Eclipse实现了一个PDE的工具,PDE Incubator Dependency Visualization 插件依赖的分析器.
URL: http://www.eclipse.org/pde/incubator/dependency-visualization/index.php
实例代码:
介绍URL: http://www.eclipse.org/gef/zest/
Demo源码URL: http://www.eclipse.org/gef/zest/snippets.php
下面这段是从IBM developerworks抄来的.
引用
Zest 是一个轻量级可视化工具包,该工具包将在传统 GEF 编辑器顶部提供类似于 JFace 的包装。Zest 已经在 JFace 之后被模型化,并且所有 Zest 视图都与现有的 Eclipse 视图一样遵守相同的标准和约定(认为包括标签和内容提供程序)。这意味着可以在 Zest 中利用现有应用程序中使用的提供程序、操作和侦听程序。此外,Zest 拥有可重用布局,可以轻松地应用到您的可视化结果中。
总结:
1. Zest是基于Draw2d上的图像化模块.
2. widgets包下只提供了极少量的widgets, 可快速上手.
IContainer 容器的基类.
Graph 容器. 最底层的容器. 类似于GEF里面Diagram的概念,或者SWT中的Shell的概念.
GraphContainer 容器.看名字也知道是一个包含GraphNode的容器. 就像swt里面的Section,可下拉,可收缩. 长像,效果和Section也很像.
![](http://www.iteye.com/upload/attachment/68772/5ca12466-1712-3ff0-b5a4-3f19ce601080.jpg)
GraphItem Node的基类.
GraphNode 节点,就是图上的一个节点.
GraphConnection 连接线,连接2个GraphNode的连线. 当然, GraphNode可以自己连接自己.
![](http://www.iteye.com/upload/attachment/68774/cef5c06f-70f4-3c11-b940-198db1ba591f.jpg)
具体的效果:
![](http://www.iteye.com/upload/attachment/68777/24c857ec-188e-3f39-90c9-1bafa6ca91fd.jpg)
3. Zest简单,能做的事情也比较有限. 如果只需考虑可视化而不需编辑等功能,完全可以使用 Zest。比如:无逻辑的 组织结构图,流程图 等完全可以使用Zest来完成.
注意:
目前提供的 org.eclipse.zest.core 和 org.eclipse.zest.layouts 都不是Eclipse插件, 需要直接加到你项目的ClassPath中.
后记;
基于Zest, Eclipse实现了一个PDE的工具,PDE Incubator Dependency Visualization 插件依赖的分析器.
URL: http://www.eclipse.org/pde/incubator/dependency-visualization/index.php
实例代码:
- public class GraphSnippet1 {
- public static void main(String[] args) {
- Display d = new Display();
- Shell shell = new Shell(d);
- shell.setText("GraphSnippet1");
- shell.setLayout(new FillLayout());
- shell.setSize(400, 400);
- Graph g = new Graph(shell, SWT.NONE);
- GraphNode n = new GraphNode(g, SWT.NONE, "Paper");
- GraphNode n2 = new GraphNode(g, SWT.NONE, "Rock");
- GraphNode n3 = new GraphNode(g, SWT.NONE, "Scissors");
- new GraphConnection(g, SWT.NONE, n, n2);
- new GraphConnection(g, SWT.NONE, n2, n3);
- new GraphConnection(g, SWT.NONE, n3, n);
- g.setLayoutAlgorithm(new SpringLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true);
- shell.open();
- while (!shell.isDisposed()) {
- while (!d.readAndDispatch()) {
- d.sleep();
- }
- }
- }
- }
public class GraphSnippet1 {
public static void main(String[] args) {
Display d = new Display();
Shell shell = new Shell(d);
shell.setText("GraphSnippet1");
shell.setLayout(new FillLayout());
shell.setSize(400, 400);
Graph g = new Graph(shell, SWT.NONE);
GraphNode n = new GraphNode(g, SWT.NONE, "Paper");
GraphNode n2 = new GraphNode(g, SWT.NONE, "Rock");
GraphNode n3 = new GraphNode(g, SWT.NONE, "Scissors");
new GraphConnection(g, SWT.NONE, n, n2);
new GraphConnection(g, SWT.NONE, n2, n3);
new GraphConnection(g, SWT.NONE, n3, n);
g.setLayoutAlgorithm(new SpringLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true);
shell.open();
while (!shell.isDisposed()) {
while (!d.readAndDispatch()) {
d.sleep();
}
}
}
}
代码总结:
就是这么简单. 和SWT,JFace在一起, 完全没有任何问题. 可以快速的做出一个效果来.
代码效果图: