- 浏览: 990765 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
运乃强谦:
老哥,你确定这个wsdl 地址 可以访问?
[CXF] Server与Client实现方式五:HTTPS -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
[CXF] Server与Client实现方式四:JMS -
dengmiao:
JAXB学习三 (验证) -
panamera:
你好。可以提供maven pom配置是怎么配置的?不知道你使用 ...
[CXF] Server与Client实现方式四:JMS -
u010221220:
请问楼主一二三部分的代码都应该放在哪个函数体中。
使用JDI监听Java程序运行
1. Eclipse Zest
1.1 概述
Eclipse Zest是一个可视化的图形工具。它基于SWT/Draw2D。Zest还支持JFace中Viewer的概念,因此允许模型和视图的分离。这篇文章假设你已经熟悉了Eclipse RCP或Eclipse Plugin开发。
(我注:其实也可以在一个普通的SWT程序中使用Zest)
1.2 组件
Eclipse Zest有以下组件:
- GraphNode -- graph中,带属性的结点
- GraphConnections -- graph中,用来连接两个结点的边线
- GraphContainer -- graph中,用来包含其他结点的容器
- Graph -- 根,用来包含所有其他的结点(nodes,connections,container)
1.3 布局
Zest提供了一些布局管理器,用来决定怎么布局graph上的结点。下面列出的就是所提供的一些布局:
表1 布局管理器
TreeLayoutAlgorithm | Graph is displayed in the form of a vertical tree |
HorizontalTreeLayoutAlgorithm | Similar to TreeLayoutAlgorithm, but layout is horizontal |
RadialLayoutAlgorithm | Root is the center, the others nodes are placed around this node |
GridLayoutAlgorithm SpringLayoutAlgorithm |
layout the graph, so that all connections should have approx the same length and that the edges overlap minimal |
HorizontalShift | move overlapping nodes to the right |
CompositeLayoutAlgorithm | combines other layout algorithms, for example, HorizontalShift can be the second layout algorithm to move nodes which were still overlapping if another algorithm is used. |
1.4 Filter
可以通过调用setFilter(filter)方法,在布局上增加过滤器(org.eclipse.zest.layouts.filter),用于决定哪些结点和边线是可见的。filter收到一个LayoutItem对象,实际的graph结点可以通过方法getGraphData()得到。
2. 安装
(我注:好像现在安装完GEF后,自动就有了,所以这里略了)
3 你的第一个Zest工程
3.1 开始
创建一个Eclipse RCP应用“de.vogella.zest.first”。选择模板"Eclipse RCP with a view“。 增加"org.eclipse.zest.core" 和 "org.eclipse.zest.layouts" 依赖项。
修改"View.java"的代码如下,用于创建一个简单的graph和连接它的元素:
package de.vogella.zest.first; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.ui.part.ViewPart; import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm; public class View extends ViewPart { public static final String ID = "de.vogella.zest.first.view"; private Graph graph; private int layout = 1; public void createPartControl(Composite parent) { // Graph will hold all other objects graph = new Graph(parent, SWT.NONE); // Now a few nodes GraphNode node1 = new GraphNode(graph, SWT.NONE, "Jim"); GraphNode node2 = new GraphNode(graph, SWT.NONE, "Jack"); GraphNode node3 = new GraphNode(graph, SWT.NONE, "Joe"); GraphNode node4 = new GraphNode(graph, SWT.NONE, "Bill"); // Lets have a directed connection new GraphConnection(graph, ZestStyles.CONNECTIONS_DIRECTED, node1, node2); // Lets have a dotted graph connection new GraphConnection(graph, ZestStyles.CONNECTIONS_DOT, node2, node3); // Standard connection new GraphConnection(graph, SWT.NONE, node3, node1); // Change line color and line width GraphConnection graphConnection = new GraphConnection(graph, SWT.NONE, node1, node4); graphConnection.changeLineColor(parent.getDisplay().getSystemColor( SWT.COLOR_GREEN)); // Also set a text graphConnection.setText("This is a text"); graphConnection.setHighlightColor(parent.getDisplay().getSystemColor( SWT.COLOR_RED)); graphConnection.setLineWidth(3); graphConnection.addListener(SWT.SELECTED, new Listener() { @Override public void handleEvent(Event event) { System.out.println("Selected"); } }); graph.setLayoutAlgorithm(new SpringLayoutAlgorithm( LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); } public void setLayoutManager() { switch (layout) { case 1: graph.setLayoutAlgorithm(new TreeLayoutAlgorithm( LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); layout++; break; case 2: graph.setLayoutAlgorithm(new SpringLayoutAlgorithm( LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); layout = 1; break; } } /** * Passing the focus request to the viewer's control. */ public void setFocus() { } }
运行以后,得到下图:
3.2 通过command来改变布局
创建一个command,并把以下"de.vogella.zest.first.handler.ChangeLayout"作为它的handler,此handler用于更改布局。最后把这个command加到一个menu上:
package de.vogella.zest.first.handler; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.ui.IViewPart; import org.eclipse.ui.handlers.HandlerUtil; import de.vogella.zest.first.View; public class ChangeLayout extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IViewPart findView = HandlerUtil.getActiveWorkbenchWindow(event) .getActivePage().findView("de.vogella.zest.first.view"); View view = (View) findView; view.setLayoutManager(); return null; } }
运行应用,如果你选择了上面的菜单,视图的布局将会改变
4.Zest和JFace
JFace提供了viewers用于分离数据和展现。请看Eclipse JFace TableViewer 或 Eclipse JFace TreeViewer 。JFace要求一个content provider和一个label provider。Zest提供了一个"GraphViewer“作为一个viewer。content provider则是基于connections或者是nodes的。
标准的Zest content providers有:
IGraphContentProvider | Based on the connections. The connections contain the information which nodes they refer to. Cannot display nodes without connections. |
IGraphEntityContentProvider | Based on the Node which contain the information about which relationship they have. These relationship are available in the label provider as EntityConnectionData objects. |
IGraphEntityRelationshipContentProvider | Node based, the content provider defines getRelationShips(sourceNode, destinationNode) which determines the connections. The advantages compared with IGraphEntityContentProvider is that you decide which objects you return. |
Zest的label provider可以是一个标准的JFace的 ILabelProvider,也可以是Zest特定的IEntityStyleProvider。
发表评论
-
GEF中用鼠标移动画布
2011-12-27 13:37 1370第一步 增加Palette项: moveTool = n ... -
Draw2d的ScrollPane的使用
2011-04-19 15:05 1611ScrollPane scrollpane = ne ... -
GEF的动态变化二
2011-04-13 10:47 1365之前有一篇文件介绍怎么实现GEF Editor中的图元的渐近、 ... -
(译)Eclipse Zest二
2011-01-07 15:41 19895. Zest和JFace的例子 5.1 创建工程 创建一 ... -
增加GEF的动态性
2011-01-06 10:25 1785在一个GEF应用中,最常的操作是移位和缩放。移位和缩放实现本身 ... -
GEF中Palette项的属性页显示
2010-11-04 14:25 2024一般来说我们只需要在GraphicalViewer部分显示在P ... -
定制GEF的Palette
2009-11-23 16:35 2546用GEF框架实现一个Editor时,会有一个默认的palett ... -
GEF增加之连接助手二
2009-10-29 16:01 1053上一篇说过怎么实现悬浮连接助手。一直想要怎么实现悬浮连接助手。 ... -
GEF功能增强之创建助手
2009-09-28 09:09 1716用过GMF就知道,GMF默认生成的editor有一个悬浮的创建 ... -
GEF功能增强之连接助手
2009-09-10 14:45 1808GEF图形编辑器中,通常 ... -
GEF中实现“拷贝为图片”
2009-09-06 09:13 1368在一个GEF的编辑器中,编辑器上是一个个的Figure,从外观 ... -
GEF中扩大、缩小时处理编辑行为
2008-12-30 10:54 1535我们为GEF应用提供了ZoomIn和ZoomOut功能之后,在 ... -
改变GEF的一些默认行为
2008-12-29 14:12 1427一、改变Layer GEF中会根据editpart的类 ... -
GEF中一个模型的多层图的问题
2008-12-26 16:00 1650一般来说,我们在做GEF的时候,通常是一个模型对应一个图,这个 ... -
GEF中增加ContextMenu的支持
2008-12-19 22:32 2642GEF中,增加对EditPart的右键菜单的支持是很普遍的一 ... -
增加Palette的拖放支持
2008-12-19 14:08 1967默认情况下,GEF中要创建一个新的结点都是通点在Palette ... -
给GEF拖放功能
2008-07-17 10:26 1898我们知道SWT支持Native的拖放。GEF使用SWT的拖放来 ... -
修改GEF中Connection的端点
2008-07-14 16:09 1846GEF中,选中一条连接线,默认的端点是两个小黑框,如下: ... -
GEF中导视图的使用
2008-07-10 17:01 2196有时增加一个导视图能给用户很大的方便性,例如在outline视 ... -
(接上篇)关于GEF Feedback的补充
2008-07-10 10:18 1405重复上篇,我们有以下类: 1、模型相关:RouteMap、H ...
相关推荐
总结来说,"maven_eclipse_GEF-zest-3.7.1_m2e-extras_m2e.zip"这个压缩包集合了Maven、Eclipse、GEF-Zest和m2e-extras的关键组件,旨在提供一个完整的、集成了图形化开发和Maven构建的开发环境。通过这个集成,...
1. **安装Maven插件**: Eclipse集成Maven主要依赖Maven Integration for Eclipse (M2E)插件。首先,打开Eclipse的“Help” > “Eclipse Marketplace”,搜索“Maven”,找到"M2E - Maven Integration for Eclipse"并...
Eclipse是一款流行的集成开发环境(IDE),它通过插件系统可以扩展各种功能,包括对Maven的支持。本文将详细介绍如何安装和配置Maven,以及在Eclipse中安装Maven插件。 首先,我们来了解Maven的基本概念。Maven基于...
1. `org.eclipse.zest.core_1.3.0.v20110221-2050.jar`:这是Eclipse Zest核心库的一个版本,Zest是一个用于在Eclipse RCP应用程序中创建图形表示的库,可以用于构建网络图、流程图等。在m2eclipse插件中,可能用于...
9. **Zest 图形库**:作为 GEF 的一部分,Zest 是一个专门用于构建图形图表的库,适用于生成流程图、关系图和其他类型的可视化信息。 综上所述,"org.eclipse.gef" 插件为 Eclipse 开发者提供了一套强大的工具,...
1. **Subclipse**:这是一个用于Eclipse的Subversion客户端,使得用户可以直接在IDE内部管理版本控制系统中的代码。安装Subclipse,你可以访问其更新站点:http://subclipse.tigris.org/update_1.6.x。 2. **m2...
1. **Eclipse插件体系结构**: - 插件是Eclipse的核心组成部分,它们通过OSGi模块系统相互交互。 - 每个插件都是一个独立的Java项目,包含了代码、资源和元数据(plugin.xml)。 - 插件之间通过声明依赖关系来...
旧版本eclipse,比如indigo版本要安装maven,旧的在线安装方式已经失效,因为依赖的zest和m2eclipse的location url都已经无法访问。所以从已经安装这两个包的eclipse中分离出离线的安装包,拷贝到对应的features和...
Eclipse的GEF(Graphical Editing Framework)插件是一个强大的工具,用于在Eclipse集成开发环境中创建、编辑和展示图形用户界面。它为开发者提供了一种框架,支持创建可定制的、交互式的图形编辑器,使得开发人员...
- **Zest图表库**:GEF的一部分,用于创建复杂的图表和图形网络,如流程图、关系图等。 5. **插件安装与集成** 将"GEF-SDK-3.4.0.zip"解压后,开发者可以通过Eclipse的"Install New Software"功能将插件导入到...
1. **org.eclipse.gef.examples.text** 这个部分主要展示了如何在GEF环境中处理文本。它涵盖了添加、编辑和格式化文本的基本功能,以及如何将文本与图形元素结合。开发者可以学习如何创建文本图形编辑部件,并理解...
- **Zest图库**:作为GEF的一部分,Zest提供了用于创建图表的强大库,如树图、网络图等。 - **Marlin 3D绘图**:对于需要三维视图的项目,Marlin是GEF的一个扩展,提供3D图形支持。 总之,Eclipse GEF插件通过其...
5. **Zest图表库**:如果包含,可能会提及Zest,它是GEF的一个扩展,用于创建图表和图形表示。 6. **自定义编辑器**:介绍如何使用GEF创建针对特定领域或技术的图形编辑器。 通过学习这两个文档,开发者不仅可以...
1. 创建Eclipse插件项目:了解如何使用Eclipse的New Plug-in Project向导,配置项目的依赖关系。 2. GEF的基本概念:深入理解模型、表示层、编辑器和控制器的概念。 3. 编辑器的生命周期:学习编辑器的创建、打开、...
GEF还提供了Zest组件,它是GEF的一个子项目,专注于开发图形可视化工具,比如图形化的图表和网络。 开发GEF插件时,开发者需要编写相应的Model、EditPart和EditPolicy类,并将它们关联起来,以构建完整的图形编辑...
5. **Zest图渲染库**:ECLIPSE GEF 5.4.0可能集成了Zest库,这是一个用于绘制图表和图形网络的库,可以创建有吸引力的视觉表示。 6. **插件体系**:Eclipse本身就是一个插件化的开发环境,GEF也是通过插件形式集成...
1. **基本概念**:GEF提供了一个模型-视图-控制器(MVC)架构,用于创建图形编辑器。模型存储数据,视图负责显示数据,控制器处理用户输入和交互。 2. **Draw2D**: Draw2D是GEF的基础,它是一个二维图形绘制库,...
**GEF(Graphical Editing Framework)**是Eclipse平台下的一个图形编辑框架,它为构建图形用户界面(GUI)提供了一种强大的工具,特别适用于创建复杂的图形编辑器。GEF主要用于设计和实现基于模型的图形编辑器,...
标题中的“西数WDC WD3200BPVT固件-80ZEST0-板号1672-WD-WXB1AC064983-01.01A01-0015002M-256-1091-KL”涉及到的是西部数据(Western Digital,简称WD)的一款硬盘,具体型号为WD3200BPVT。固件是硬盘的重要组成部分...
GEF-zest-3.6.1.zipGEF-zest-3.6.1.zipGEF-zest-3.6.1.zipGEF-zest-3.6.1.zipGEF-zest-3.6.1.zipGEF-zest-3.6.1.zip