`
liugang594
  • 浏览: 981951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GEF中导视图的使用

    博客分类:
  • GEF
 
阅读更多

有时增加一个导视图能给用户很大的方便性,例如在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
3
0
分享到:
评论

相关推荐

    RCP 视图显示GEF图

    用视图显示在GEF编辑器编辑好的图形 在视图里加入GraphicalViewer viewer = new ScrollingGraphicalViewer(); viewer.createControl(parent);

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

    GEF入门学习例子

    GEF中的视图由`GraphicalViewer`类实现,它管理着画布上的所有图形元素。 3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`...

    GEF中文教程+代码

    在本教程中,我们将深入探讨GEF的基本概念、设计原则以及如何使用它来开发自己的图形编辑器。 **1. GEF简介** GEF的设计目标是将图形编辑器的实现细节抽象化,让开发者能够专注于业务逻辑和模型设计,而不是底层的...

    GEF 入门版中文教程 源码

    在GEF中,模型通常由EMF(Eclipse Modeling Framework)来定义和管理,可以将业务逻辑和视图分离。 2. **视图(View)**:视图是模型的可视化表示,它将模型数据呈现为用户界面。GEF提供了基础框架来实现这一转换,...

    GEF入门学习资料,简单地介绍了GEF使用过程中用到的基本类和函数的用法

    GEF 入门学习资料,简单地介绍了 GEF 使用过程中用到的基本类和函数的用法。 GEF(Graphical Editor Framework)是一种图形化编辑框架,能够提供图形化编辑模型的功能,提高用户体验。典型的应用包括图形化的流程...

    GEF中属性页面的实现

    本文将深入探讨如何在GEF中实现属性视图,并通过一个处理器(Processor)模型的例子来阐述具体步骤。 1. **属性视图的概述** - 属性视图用于展示图形模型的相关属性,如处理器的温度、IP地址和类型等。 - 当图形...

    [翻译]Eclipse图形化编辑框架(GEF)/更新第7章:层和视图

    在本篇博文中,我们将深入探讨GEF中的“层”和“视图”这两个核心概念。 **层的概念** 在GEF中,“层”是一个重要的组织机制,用于管理图形元素的绘制顺序和交互行为。层允许开发者将图形元素分组,每个组在一个...

    GEF入门必读 GEF入门系列 GEF-whole-upload

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台上广泛使用,特别是在开发复杂的图形用户界面和工具时。本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF...

    GEF_Tutorial.rar(GEF开发指南)

    在GEF中,你需要首先定义你的数据模型,这可能涉及使用EMF(Eclipse Modeling Framework)来创建Ecore模型。Ecore模型是元模型的一种表示,可以用于生成Java类,这些类将成为你的数据模型的基础。 **4. 实现图元和...

    GEF中文帮助实例

    在GEF中,模型是数据结构的抽象,用于存储和管理图形化编辑器所显示的信息。开发者需要定义自己的模型类,这些类通常继承自GEF提供的基础类,如`org.eclipse.gef.mvc.models.Model`。模型类中的属性和方法反映了图形...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    在gef中,转折线的实现涉及到PathFigure和Segment类的使用。PathFigure用于定义一个图形的轮廓,而Segment则代表了轮廓中的一段线段。通过添加和调整Segment实例,我们可以构建出具有转折点的线条。 实现gef转折线...

    GEF典型实现例子

    这两篇文章可能分别由CSDN博主和博客园博主分享了他们在使用GEF和相关技术,如Draw2D(用于在GEF中绘制2D图形的库)时的经验和技巧。 在深入理解GEF时,我们需要关注以下几个核心概念: 1. **模型-视图-控制器(MVC...

    GEF_Demo_Code20170307

    这个项目旨在演示如何利用GEF进行图形界面开发,并且特别关注了通过适配器(Adapter)扩展点来实现属性页配置以及在非Editor的ViewPart中使用GEF。 GEF是Eclipse平台下的一个开源库,专门用于构建可自定义的、图形...

    GEF学习资料.zip

    1. **模型(Model)**:在GEF中,模型是数据结构的抽象,它定义了编辑器所操作的对象和它们之间的关系。模型独立于视图和控制器,是应用程序的核心部分。 2. **视图(View)**:视图是模型的可视化表示,由GEF提供...

    GEF入门实例代码2《Eclipse插件开发》中实例

    此外,理解MVC(模型-视图-控制器)模式和MVC在GEF中的应用对于提升开发效率至关重要。 总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的...

    java gef开发实例

    3. **MVC在GEF中的应用**: - **模型**:可以是一个自定义的Java类,包含业务数据,不直接与视图或控制器交互。 - **视图**:通过创建和管理Figures来展示模型,当模型改变时,自动更新视图。 - **控制器**:通过...

    GEF教程及demo源码GEF_RCP_DEMO.zip

    **GEF教程与DEMO源码解析** GEF(Graphical Editing Framework)是...通过学习这个教程和分析DEMO源码,开发者将能够熟练掌握如何在Java环境中使用GEF和SWT构建高效、灵活的图形编辑工具,提升开发复杂GUI应用的能力。

    GEF-II电场仪使用手册.pdf

    GEF-II电场仪使用手册

    GEF-SDK-3.7.0

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台中被广泛使用。**GEF-SDK-3.7.0** 是这个框架的一个特定版本,提供了开发人员构建图形用户界面(GUI)和可视化编辑...

Global site tag (gtag.js) - Google Analytics