`
suifongqi
  • 浏览: 55588 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GEF总结(一)

    博客分类:
  • GEF
阅读更多
总结文档计划为五篇,后三篇为项目总结
——————————————————————————————

GEF,图形编辑框架,以draw2d为基础的图形表现,类同POJO的数据模型,GEF中的editpart组成GEF mvc设计模式。其设计模式决定了我们在开发中需要遵守MVC的规则



一,GEF提供两类EditPart
1 GraphcalEditPart,以figure为其view显示
2 SWT的treeEditPart,以treeItem显示

二,EditPart是MVC中的控制,控制改变模型,改变图形显示,图形V与模型M间无直接联系,



那么editPart需具备:
1 创建和维护视图
2 创建和维护children editparts
3 创建和维护connection editpart
4 支持编辑模型

三,假设我们已经有了模型和一些图形的时候,应该怎么显示它们呢?

首先我们知道GEF用于显示的是基于draw2d的图形,那么draw2d的图形是怎么显示的?不错,是用canvas,这里figurecanvas,在GEF中我们通常用ScrollingGraphicalViewer做为图形显示的画板。当然你也可以不使用它,除非你不想要滚动条。

四,有了显示的画板,我们需要把模型,控制,图形整合在一起,这就需要一个rootEditPart.GEF提供了ScalableRootEditPart与scalableFreeformRootEditPart




从上图我们可以看到viewer中包含了editPart与figure,其中有一个factory,它负责对应生产相应模型对应的editpart与图形,这个工厂我们把他安装在rootEditPart中。

四,我们知道一个数据对象可以包含其它数据对象,例如一个柜子里可以放不同的办公用品,不同的模型对应不同的editpart,我们的代码需要表明这一特点,我们可以把柜子理解成contentsEditPart其它办公用品理解成children Editpart.当然它们都是graphicaleditpart的子类,我们需要重写什么方法呢?

1 图形经常发生变化,这里的变化是从头创建新的,那么必须重写createFigure()方法,如果使用了scalableFreeformRootEditPart作为rootEditpart,那么实现的图形必须实现freeform api
通常contents editpart,使用FreeformLayer,它的布局是xylayout,另外需重写
List getModelChildren()方法
children editparts通常也叫节点nodes,我们常重写refreshVisuals(),当模型改变时,触发该方法,刷新图形。

五,connection editpart
一个特殊的editpart,它的管理在souce与target editparts中确定,其它功能类同。我们常重写的方法:getModelSourceConnections(),getModelTargetConnctions(),连接的figure必须是draw2d的connection,而源与目标editpart必须是NodeEditPart

小节:
我们在editpart中重写的方法:
createFigure()创建view但不反映模型的改变
refreashVisuals()与上相反
getModeChildren()
getModelSourceConnections(),getModelTargetConnctions()

六,有了显示的画板,并且装上了editpart,model,figure可以实现图形的编辑工作吗?gef里面还不行,这应该是GEF从设计上的考虑把,为了能让editpart做更多的事,并且还不重复,GEF设计出了策略,你可以把它理解成一组行为组件,这些组件可以挂接到任何editpart中重复使用,节省了劳动力。外国人口少没办法。。。如下图:editpart是一个齿轮,各种策略是小齿轮,editpart代理干着各小齿轮的工作。


那么图形与模型是如何被更改的呢?这个流程又是怎么样的?
在editpart上安装好策略后,当draw2d发送事件request到editpart,editpart根据request带动相应的策略齿轮做事,策略中的N组command修改模型与图形回显(feedback),模型修改后通知editpart重绘图形,整个编辑结束。



—————————————————————————————————————————
整篇为感念整理,借鉴GEF英文指南,图片直接拿来。先发出来以后再改错,请指正
下一篇主要内容介绍:editpart生命周期,Tools and the Palette,ROLE
  • 大小: 13.9 KB
  • 大小: 23 KB
  • 大小: 20.5 KB
  • 大小: 9.8 KB
  • 大小: 8.6 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    GEF学习体会与经验总结(.doc)

    **GEF学习体会与经验总结** GEF,全称Graphical Editing Framework,是Eclipse组织开发的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和工具,使得创建复杂的图形用户界面...

    GEF学习总结

    GEF 全称 Graphical Editor Framework 。它是一个基于 eclipse 的图形化编辑框架。通过它,开发人员可以方便的以图形化的方式(而非文本的方式)展示和编辑模型。

    GEF研究总结

    【GEF研究总结】 GEF(Graphical Editor Framework)是一个专为开发图形化编辑应用程序的框架,它使得开发者可以通过图形化方式展示和编辑模型,从而提高用户体验。在各种图形化编辑应用中,如UML类图编辑器、XML...

    Gef 学习总结

    **Gef 学习总结** Gef,全称为 Graph Editor Framework,是一个强大的图形编辑框架,主要用于构建可视化的图形编辑工具。在IT行业中,Gef通常与EMF(Eclipse Modeling Framework)结合使用,用于创建复杂的建模和...

    GEF-SDK-3.6.2 jar

    总结起来,"GEF-SDK-3.6.2 jar"是一个用于图形化编辑的Java库,它是Eclipse平台下开发图形界面的重要工具,特别是在Android ADT中,它极大地简化了Android应用的界面设计工作。通过理解并熟练运用GEF,开发者能够...

    GEF开发指南---插件开发

    - **GEF的基本结构**:一个典型的GEF项目包括三个核心组成部分:模型(Model)、控制器(Controller)和视图(View)。文档提到了这些组成部分对应的包结构。 #### 五、创建Editor - **创建Editor**:文档详细描述...

    GEF快速入门教程和EMF教程

    本文将详细介绍如何使用Graphical Editing Framework (GEF)实现一个简单的“Hello World”示例,并结合Eclipse Modeling Framework (EMF)进行扩展。通过此教程,读者能够理解GEF的基本架构以及如何在Eclipse RCP应用...

    基于gef框架Demo

    总结一下,"基于gef框架Demo"是一个用于学习和实践Eclipse Gef框架的资源集合,它涵盖了Java编程、图形化用户界面设计和Eclipse插件开发等多个方面。通过探索这个Demo,开发者可以深入理解Gef的工作原理,并能够运用...

    GEF教程及demo源码

    **GEF教程及DEMO源码详解** ...总结,GEF教程及DEMO源码的学习,不仅能帮助开发者理解图形编辑框架的设计思想,还能掌握实际开发中的关键技术点。通过实践,可以快速上手并开发出满足特定需求的图形编辑工具。

    gef版本的helloworld

    总结来说,本文件详细说明了如何在GEF环境下创建一个简单的HelloWorld应用程序,包括RCP工程的建立、GEF结构的创建、Editor的实现等关键步骤。同时,还强调了使用合适JDK版本的重要性,以及对Windows平台用户的特定...

    GEF开发整合资料大全

    GEF(Graphical Editing Framework)是Eclipse平台下的一款用于构建图形化编辑器的框架,它为开发者提供了一套全面的工具和API,使得创建复杂的图形用户界面(GUI)变得简单。GEF主要用于开发基于模型的图形编辑器,...

    GEF 入门版中文教程 源码

    总结来说,"GEF入门版中文教程 源码"是一个面向初学者的宝贵资源,它涵盖了GEF的主要概念和技术,结合源码实践,可以帮助开发者快速掌握图形化编辑器的开发技术,并为后续的RCP应用开发打下坚实基础。无论你是希望...

    eclipse emf&gef

    Graphical Editing Framework (GEF) 是Eclipse项目中的另一个重要组成部分,主要用于构建图形化编辑器。 **3.1 GEF概述** GEF提供了创建复杂图形化编辑器所需的所有基本组件,包括绘图工具、布局管理器和事件...

    GEF-Update-5.3.3.zip

    总结起来,`GEF-Update-5.3.3.zip`是一个针对Eclipse 4.18的GEF增强插件离线安装包,它包含了新的特性、优化和改进,通过安装这个更新,开发者可以提升Eclipse的图形编辑体验,进一步提高开发效率。这个压缩包内的`...

    gef工程代码

    总结来说,gef工程代码是一个强大的学习资源,对于想要提升调试技能和深入理解代码运行机制的开发者来说,是不可多得的宝藏。通过深入研究和实践,你将能够掌握gef的精髓,从而在日常开发和调试工作中更加游刃有余。

    GEF-ALL-3.9.101.zip

    总结一下,这个"GEF-ALL-3.9.101.zip"是一个用于扩展Eclipse IDE的图形编辑框架插件包,通过解压并将其内容移动到Eclipse安装目录,然后重启Eclipse,开发者就能够使用GEF来创建和编辑复杂的图形用户界面。...

    GEF 入门操作

    总结来说,GEF是一个强大的图形化编辑框架,它通过MVC模式和一系列设计策略,如请求和命令模式,降低了开发图形界面的复杂性。同时,模型和视图的解耦使得系统具有更高的灵活性,使得开发者可以专注于业务逻辑的实现...

    GEF- runtime

    总结来说,GEF-runtime是Eclipse平台上用于图形化编辑的强大工具,而GEF-runtime-3.6.2版本带来了性能提升、稳定性增强以及可能的新功能,为开发者提供了更完善的开发体验。结合"Eclipse"环境,开发者可以高效地构建...

Global site tag (gtag.js) - Google Analytics