一. 创建一个插件项目
通过从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中。
七. 启动,查看运行效果
注意:
- 第一个灰边框:ViewPart的。
-
第二个黑边框:DiagramModel对应的DiagramFigure的。
-
第三个小框:RestModel对应的RestFigure的。
八. 总结
1.
写的非常简洁,没有Command,没有EditPolicy,没有多余的属性和方法,就基本将一个GEF的项目搭建出来了,完全可以作为通用的GEF框架。当然,前提是纯粹的GEF,而不是EMF,GMF等。
2.
GEF中有些概念一定要搞清楚:
- PropertyChangeSupport和PropertyChangeListener
- Model与EditPart与Figure的一对一
- Model、EditPart与EditPartFactory
- EditPart与Figure
- Root的model(本文中的DiagramModel)
- RootEditPart
3.
本文基于Eclipse3.4
4.
后续文章会跟进的,尽量做成一个入门的系列。但是还是需要你能够预先知晓一些GEF的基本概念。并要明白model的变化是如果传递,并最终显示到UI界面的Figure上的。
分享到:
相关推荐
总结一下,"基于gef框架Demo"是一个用于学习和实践Eclipse Gef框架的资源集合,它涵盖了Java编程、图形化用户界面设计和Eclipse插件开发等多个方面。通过探索这个Demo,开发者可以深入理解Gef的工作原理,并能够运用...
**GEF学习体会与经验总结** GEF,全称Graphical Editing Framework,是Eclipse组织开发的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和工具,使得创建复杂的图形用户界面...
学习Gef需要耐心和实践,通过不断尝试和理解其背后的机制,可以逐步掌握这个强大的图形编辑框架,为开发出功能丰富的图形工具奠定基础。在实际应用中,结合EMF和其他Eclipse插件开发技术,可以构建出满足特定需求的...
描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...
GEF,全称为Graphical Editor Framework,是Eclipse平台下一款强大的图形编辑框架,专为开发图形用户界面而设计。它允许开发者创建复杂的图形编辑器,如流程图编辑器、UML类图编辑器等,极大地提升了用户的交互体验...
GEF 是一个用于构建图形编辑器的框架,它基于EMF和SWT,提供了创建可定制的、图形化编辑环境所需的基础设施。开发者可以使用 GEF 创建各种图表、流程图和其他图形表示形式,用于数据建模、软件设计等场景。GEF 提供...
GEF是Eclipse平台上用于构建图形化编辑器框架的开源项目,而Draw2D是它的一个关键组件,专门用于2D图形绘制。这两个组件常被用于创建复杂的图形用户界面,特别是那些需要图形编辑功能的应用,如流程图、网络拓扑图等...
`GEF`(Graphical Editing Framework)是Eclipse开源组织提供的一款强大的图形编辑框架,用于构建图形用户界面(GUI)应用,特别是那些需要进行图形绘制、编辑和操作的软件。这个入门学习例子旨在帮助初学者理解GEF的...
Java GEF(Graphical Editing Framework)开发实例是一个深入理解并应用GEF框架的优秀实践案例。GEF是Eclipse平台上用于构建图形编辑器的库,它提供了构建图形用户界面(GUI)所需的基础结构,尤其适合创建复杂的...
这三者的关系是:GEF提供基础的图形编辑支持,VE是在GEF基础上构建的一个特定领域的可视化编辑器,主要针对Java GUI开发;而GMF则是对GEF的增强,专门用于创建复杂的模型驱动的图形编辑器。在Eclipse 3.2这个版本中...
**GEF初学者开发样例详解** ...总的来说,GEF为图形编辑器的开发提供了一种标准和灵活的框架,通过"gefpractice"这样的实践项目,初学者可以逐步掌握其核心概念和实际应用,从而提升在图形界面开发领域的技能。
GEF提供了基础框架来实现这一转换,允许用户与模型进行交互。 3. **编辑器(Editor)**:在RCP环境中,编辑器是包含视图的工作空间,它处理用户的输入并更新模型。GEF提供了一套机制来创建和管理编辑器。 4. **命令...
Gef是GDB(GNU调试器)的一个扩展框架,它提供了许多增强的功能,使得在调试C、C++等程序时更加方便高效。这个压缩包“gef的入门例子(13个)”显然是为初学者设计的,通过一系列逐步进阶的实例,帮助用户了解并掌握...
GEF(Graphical Editing Framework)是Eclipse平台下的一款用于构建图形化编辑器的框架,它为开发者提供了一套全面的工具和API,使得创建复杂的图形用户界面(GUI)变得简单。GEF主要用于开发基于模型的图形编辑器,...
GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建复杂的图元编辑器。在描述中提到的“博文链接”,我们可以推断这可能是一个关于如何...
**GEF(Graphical Editing Framework)** 是一个强大的开源框架,用于构建图形化编辑器,主要在Java平台上运行,由Eclipse基金会维护。这个框架提供了一整套工具,帮助开发者创建出具有专业级别的图形用户界面,特别...
在代码生成器骨架方面,gef工程代码可能包含了一套基础框架,用于自动生成特定类型的调试代码或辅助工具。这可能是为了简化调试过程,比如自动设置断点、收集内存映射信息或者动态分析运行时行为。骨架代码通常包含...
**GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台中被广泛使用。GEF提供了一套全面的API和模型,帮助开发者快速构建可定制的、交互式的图形用户界面。该框架的核心...
GEF(Graphical Editing Framework)是Eclipse平台上用于构建图形编辑器的开源框架。它提供了一套全面的API和工具,使得开发者可以方便地创建出复杂的图形用户界面,特别是针对模型驱动工程(MDE)中的图形化建模...
本文将深入探讨GEF(Graph Edit Framework)的学习资源,这是一个用于创建图形编辑框架的开源项目,广泛应用于开发图形用户界面。针对初学者,我们将重点关注"八进制"和"dudu"教程,这两部分是理解GEF核心概念的关键...