有时增加一个导视图能给用户很大的方便性,例如在outline视图里使用导视图,可以很方便的看到整体与局部的关系。
GEF中也提供了导视图功能。这里就讨论一下它的使用。
首先我们要知道几个概念:
1、Viewport:视口,也就是当前你能看到的部分,比如一个Editor中的可见部分。
2、Thumbnail:GEF中的导视图是通过Thumbnail的子类来的完成。
看Viewport有三个子类:FocusableViewport、RulerViewport和FreeformViewport。看它们的引用关系可以知道,通常我们用到的是后两个,具体跟你的GEF使用的rootEditPart有关系。例如:
RulerRootEditPart对应于RulerViewport;FreeFormGraphicalRootEditPart和它的子类ScalableFreeformRootEditPart对应于FreeformViewport
因为在使用Thumbnail时,我们需要设置它的viewport,所以如果想提供导视图功能,最好我们设置rootEditpart为RulerRootEditPart或FreeFormGraphicalRootEditPart或ScalableFreeformRootEditPart,这样我们可以方便的得到Viewport对象。
Thumbnail有一个子类:ScrollableThumbnail,通常我们就使用这个子类去提供导视图功能。
使用如下:
ScrollableThumbnail thumbnail = new ScrollableThumbnail(
(Viewport) rootEditPart.getFigure());
上面说过rootEditPart需要是RulerRootEditPart、FreeFormGraphicalRootEditPart、ScalableFreeformRootEditPart三个中的某一个。所以在editor的configureGraphicalViewer() 方法中,我们需要定义:
getGraphicalViewer().setRootEditPart(new ScalableFreeformRootEditPart());
现在就可以如下使用了:
ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) getViewer()
.getRootEditPart();
这里getViewer返回的就是GEF editor中对应的GraphicalViewer。
这里有一点很奇怪,除了上述步骤外,我们还需要加一条:thumbnail.setSource(rootEditPart.getFigure()); 要不就会得到一个异常。
OK,这样我们就完成了一个导视图的创建过程。最后一步就是把它显示到某个地方去,例如显示到一个SWT控制上去,这和写一个普通的draw2d程序没什么分别,例如:
public void createControl(Composite parent) {
parent.setLayout(new GridLayout(1,false));
Canvas canvas = new Canvas(parent, SWT.NONE);
canvas.setLayoutData(new GridData(GridData.FILL_BOTH));
LightweightSystem lightweightSystem = new LightweightSystem(canvas);
ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) getViewer()
.getRootEditPart();
ScrollableThumbnail thumbnail = new ScrollableThumbnail(
(Viewport) rootEditPart.getFigure());
thumbnail.setSource(rootEditPart.getFigure());
lightweightSystem.setContents(thumbnail);
}
最后就可以得到效果了,如下图:
- 大小: 9.7 KB
分享到:
相关推荐
用视图显示在GEF编辑器编辑好的图形 在视图里加入GraphicalViewer viewer = new ScrollingGraphicalViewer(); viewer.createControl(parent);
GEF-II电场仪使用手册
dudu翻译的GEF中文教程,入门最佳资料。附每章代码。
学习GEF的入门资料,简单地介绍了GEF使用过程中用到的基本类和函数的用法。
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
在GEF中property view 页面的实现!介绍了其实现的步骤方法!还结合了实例进行讲解!
著名的IBM红皮书系列,包含原版和中文版 适合不同人群
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
与 其他一些MVC编辑框架相比,GEF的一个主要设计目标是尽量减少模型和视图之间的依赖,好处是可以根据需要选择任意模型和视图的组合,而不必受开发框架 的局限(不过实际上还是很少有脱离Draw2D的实现)。
GEF入门实例代码2《Eclipse插件开发》中实例
这是我参考了一些其他资料,自己写的一个GEF示例...1. 在你的Eclipse中要有GEF, Draw2d的包 2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
RCP GEF 入门教程,从法语班翻译过来的,自认为是比较全面细致的GEF入门教程,配套源码,很有学习价值!!!
GEF简易教程-学习GEF的入门教程,不错的gef入门教程
RCP与GEF的课件,简单的介绍了RCP和GEF中的各组件的功能,已经工作流程
gef 绘图折线的实现方法。 gef API chm 格式
GEF eclipse 插件
对gef中相关内容的描述,这里面我只是个人的理解,描述gef的最基本的功能,若需深入研究,可以从网上查询更多资料,我个人也在继续研究中。
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...