Eclipse zest绘图

偶尔去GEF网站上看看, 发现在GEF的分类下除了Draw2d外,还加了一个项目: Zest.
介绍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也很像.


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

实例代码:
Java代码 复制代码 收藏代码
  1. public class GraphSnippet1 {
  2. public static void main(String[] args) {
  3. Display d = new Display();
  4. Shell shell = new Shell(d);
  5. shell.setText("GraphSnippet1");
  6. shell.setLayout(new FillLayout());
  7. shell.setSize(400, 400);
  8. Graph g = new Graph(shell, SWT.NONE);
  9. GraphNode n = new GraphNode(g, SWT.NONE, "Paper");
  10. GraphNode n2 = new GraphNode(g, SWT.NONE, "Rock");
  11. GraphNode n3 = new GraphNode(g, SWT.NONE, "Scissors");
  12. new GraphConnection(g, SWT.NONE, n, n2);
  13. new GraphConnection(g, SWT.NONE, n2, n3);
  14. new GraphConnection(g, SWT.NONE, n3, n);
  15. g.setLayoutAlgorithm(new SpringLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true);
  16. shell.open();
  17. while (!shell.isDisposed()) {
  18. while (!d.readAndDispatch()) {
  19. d.sleep();
  20. }
  21. }
  22. }
  23. }
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在一起, 完全没有任何问题. 可以快速的做出一个效果来.


代码效果图:

转载自:http://lggege.iteye.com/blog/316218

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值