`
lggege
  • 浏览: 375461 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GEF实践总结(一)简洁的基础框架

    博客分类:
  • GEF
阅读更多

一. 创建一个插件项目
通过从RCP application with a view 模板创建一个含ViewPart的Eclipse RCP项目。



二. 在MANIFEST.MF 添加对org.eclipse.gef插件的依赖。


三. 创建model
为了方便使用,我们了创建BaseModel和BaseContainerModel这两种基类。


BaseModel :所有模型的最基础类。一定要能够明白里面的PropertyChangeSupport和firePropertyChange的意义。
BaseContainerModel :父模型。
DiagramModel :最底层的模型,就跟jface.TreeViewer中,最底层的模型总是不显示的,从界面上无法直接看到,但却又真实存在。
RectModel :最简单的一个图形相关的模型,用来表示一个矩形。

注意: 我偷了一个懒,一般属性我fire的propertyName都是IPropertyConst.COMMON,只有添加、删除children的时候,对外fire的是IPropertyConst.CHILDREN。


四. 创建model对应的EditPart
同样的,我也创建了BaseEditPart和BaseContainerEditPart两个基础类型。


BaseEditPart :所有EditPart的基础类。extends于AbstractGraphicalEditPart,同时实现了PropertyChangeListener接口。
注意: propertyChange中对于IPropertyConst. CHILDREN IPropertyConst.COMMON 的不同属性改变的不同处理。

BaseContainerEditPart :所有父模型的基础类。作用和BaseContainerModel类似,都是为了处理父子结构。
注意:覆盖了getModelChildren()方法。

DiagramEditPart :DiagramModel对应的EditPart。
RectEditPart :RectModel对应的EditPart。

DiagramEditPartFactory :通过model得知应该创建哪种对应的EditPart。就和jface.TableView一样,知道通过model得到TableItem。和jface.TreeViewer一样,通过model知道生成TreeItem一样的功效。只是在GEF中model和EditPart过多,需要一个工厂类专门处理,而TableViewer和TreeViewer则不需要。

五. 创建EditPart对应的Figure


IBaseFigure :为了后面能方便获得模型而做的接口。
DiagramFigure :与DiagramEditPart对应。
RectFigure :与RectEditPart对应。


六. 在ViewPart中创建GraphicalViewer

 

graphicalViewer = new ScrollingGraphicalViewer();
graphicalViewer.createControl(bottomComposite);

graphicalViewer.setRootEditPart(new ScalableRootEditPart());
graphicalViewer.setEditPartFactory(new DiagramEditPartFactory());

graphicalViewer.setContents(this.buildModel());

 

代码很简洁,没有做任何多余的事情,先create一个GraphicalViewer,在赋予一个Root的EditPart,再指定EditPartFactory,最后,将构建的模型放入GraphicalViewer中。

七. 启动,查看运行效果


注意:

  1. 第一个灰边框:ViewPart的。
  2. 第二个黑边框:DiagramModel对应的DiagramFigure的。
  3. 第三个小框:RestModel对应的RestFigure的。


八. 总结
1. 写的非常简洁,没有Command,没有EditPolicy,没有多余的属性和方法,就基本将一个GEF的项目搭建出来了,完全可以作为通用的GEF框架。当然,前提是纯粹的GEF,而不是EMF,GMF等。
2. GEF中有些概念一定要搞清楚:

  1. PropertyChangeSupport和PropertyChangeListener
  2. Model与EditPart与Figure的一对一
  3. Model、EditPart与EditPartFactory
  4. EditPart与Figure
  5. Root的model(本文中的DiagramModel)
  6. RootEditPart

3. 本文基于Eclipse3.4
4. 后续文章会跟进的,尽量做成一个入门的系列。但是还是需要你能够预先知晓一些GEF的基本概念。并要明白model的变化是如果传递,并最终显示到UI界面的Figure上的。

 

3
0
分享到:
评论
3 楼 rightrat 2012-03-19  
界面上只有一个View,所以可以去掉其边框,感觉那样更美观一些,但不知道怎么处理。。。不知博主有没有办法?
2 楼 lggege 2010-06-12  
最近不做GEF了,改做ExtJS + Grails了。这写文字也是在GEF停了半年以后,静下来总结写出来的。
1 楼 xmind 2010-05-14  
  
泪汪汪啊。终于找到GEF简单入门了。

 

感谢总结GEF。

期待更多GEF精彩内容。
关 注中。

相关推荐

    基于gef框架Demo

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

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

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

    Gef 学习总结

    学习Gef需要耐心和实践,通过不断尝试和理解其背后的机制,可以逐步掌握这个强大的图形编辑框架,为开发出功能丰富的图形工具奠定基础。在实际应用中,结合EMF和其他Eclipse插件开发技术,可以构建出满足特定需求的...

    自己下的GEF资源打包

    描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...

    GEF教程

    GEF,全称为Graphical Editor Framework,是Eclipse平台下一款强大的图形编辑框架,专为开发图形用户界面而设计。它允许开发者创建复杂的图形编辑器,如流程图编辑器、UML类图编辑器等,极大地提升了用户的交互体验...

    emf swt runtime gef

    GEF 是一个用于构建图形编辑器的框架,它基于EMF和SWT,提供了创建可定制的、图形化编辑环境所需的基础设施。开发者可以使用 GEF 创建各种图表、流程图和其他图形表示形式,用于数据建模、软件设计等场景。GEF 提供...

    GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料

    GEF是Eclipse平台上用于构建图形化编辑器框架的开源项目,而Draw2D是它的一个关键组件,专门用于2D图形绘制。这两个组件常被用于创建复杂的图形用户界面,特别是那些需要图形编辑功能的应用,如流程图、网络拓扑图等...

    GEF入门学习例子

    `GEF`(Graphical Editing Framework)是Eclipse开源组织提供的一款强大的图形编辑框架,用于构建图形用户界面(GUI)应用,特别是那些需要进行图形绘制、编辑和操作的软件。这个入门学习例子旨在帮助初学者理解GEF的...

    java gef开发实例

    Java GEF(Graphical Editing Framework)开发实例是一个深入理解并应用GEF框架的优秀实践案例。GEF是Eclipse平台上用于构建图形编辑器的库,它提供了构建图形用户界面(GUI)所需的基础结构,尤其适合创建复杂的...

    eclipse gef ve gmf

    这三者的关系是:GEF提供基础的图形编辑支持,VE是在GEF基础上构建的一个特定领域的可视化编辑器,主要针对Java GUI开发;而GMF则是对GEF的增强,专门用于创建复杂的模型驱动的图形编辑器。在Eclipse 3.2这个版本中...

    GEF初学者开发样例

    **GEF初学者开发样例详解** ...总的来说,GEF为图形编辑器的开发提供了一种标准和灵活的框架,通过"gefpractice"这样的实践项目,初学者可以逐步掌握其核心概念和实际应用,从而提升在图形界面开发领域的技能。

    GEF 入门版中文教程 源码

    GEF提供了基础框架来实现这一转换,允许用户与模型进行交互。 3. **编辑器(Editor)**:在RCP环境中,编辑器是包含视图的工作空间,它处理用户的输入并更新模型。GEF提供了一套机制来创建和管理编辑器。 4. **命令...

    gef的入门例子(13个)

    Gef是GDB(GNU调试器)的一个扩展框架,它提供了许多增强的功能,使得在调试C、C++等程序时更加方便高效。这个压缩包“gef的入门例子(13个)”显然是为初学者设计的,通过一系列逐步进阶的实例,帮助用户了解并掌握...

    GEF开发整合资料大全

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

    GEF典型实现例子

    GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建复杂的图元编辑器。在描述中提到的“博文链接”,我们可以推断这可能是一个关于如何...

    GEF中文教程+代码

    **GEF(Graphical Editing Framework)** 是一个强大的开源框架,用于构建图形化编辑器,主要在Java平台上运行,由Eclipse基金会维护。这个框架提供了一整套工具,帮助开发者创建出具有专业级别的图形用户界面,特别...

    gef工程代码

    在代码生成器骨架方面,gef工程代码可能包含了一套基础框架,用于自动生成特定类型的调试代码或辅助工具。这可能是为了简化调试过程,比如自动设置断点、收集内存映射信息或者动态分析运行时行为。骨架代码通常包含...

    GEF原理的详细介绍+程序实例和程序源码

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台中被广泛使用。GEF提供了一套全面的API和模型,帮助开发者快速构建可定制的、交互式的图形用户界面。该框架的核心...

    GEF_Tutorial.rar(GEF开发指南)

    GEF(Graphical Editing Framework)是Eclipse平台上用于构建图形编辑器的开源框架。它提供了一套全面的API和工具,使得开发者可以方便地创建出复杂的图形用户界面,特别是针对模型驱动工程(MDE)中的图形化建模...

    GEF学习资料

    本文将深入探讨GEF(Graph Edit Framework)的学习资源,这是一个用于创建图形编辑框架的开源项目,广泛应用于开发图形用户界面。针对初学者,我们将重点关注"八进制"和"dudu"教程,这两部分是理解GEF核心概念的关键...

Global site tag (gtag.js) - Google Analytics