`
lggege
  • 浏览: 372826 次
  • 性别: 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学习总结

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

    GEF框架入门学习

    这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。

    基于GEF框架的SVG制作工具设计与实现

    SVG(Scalable Vector Graphics)是一种...本文的目的就是利用Eclipse平台的GEF(Graphic Editor Framework)框架,针对SVG的能聚合多种媒体数据,并能体现其动态性和交互性的特点,设计并实现了一款SVG的可视化制作工具。

    eclipse插件开发框架GEF API文档

    eclipse插件开发框架GEF API文档 eclipse插件开发框架GEF API文档

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

    该资料对GEF这个框架的一些理解,以及自己的一些学习体会,其中大部分是从网上搜到的一些关于GEF框架的质料,这里已经经过了整理,对于一个初学者很有帮助。

    GEF研究总结

    关于gef的一点研究总结

    Gef 学习总结

    Gef 学习总结,Gef 相对资料比较少没有完整的文档都要靠自己学习

    简单gef框架

    使用gef技术做的简单流程设计起

    基于gef框架Demo

    一些应用Eclipse的gef框架的演示程序,欢迎大家交流。

    GEF-ALL-3.2.2

    GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...

    第四章 GEF框架.doc

    第四章 GEF框架.doc 第四章 GEF框架.doc 第四章 GEF框架.doc

    Eclipse GEF 框架原理分析

    通过简单易懂的方式,介绍了Eclipse GEF 框架原理。对GEF开发有极大的好处/

    GEF基础知识

    GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。

    GEF 入门操作

    与 其他一些MVC编辑框架相比,GEF的一个主要设计目标是尽量减少模型和视图之间的依赖,好处是可以根据需要选择任意模型和视图的组合,而不必受开发框架 的局限(不过实际上还是很少有脱离Draw2D的实现)。

    gef框架的自动布局的一个例子

    point="org.eclipse.ui.editors"> class="com.example.ui.PracticeEditor" icon="logo.gif" default="true" contributorClass=... name="Practice Editor" ... extensions="gefpracticeal"/> </extension>

    GEF入门系列.rar

    GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...

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

    GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制

    一个GEF的简单例子

    一个GEF的简单例子,简单的做了一下,包括源码。

Global site tag (gtag.js) - Google Analytics