`
haijun.xu
  • 浏览: 7280 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

GEF开发入门要点

    博客分类:
  • GEF
 
阅读更多

般来说,Eclipse插件开发用到GEF的机会并不是很多,大概也就是结构设计,数据管理,流程控制等应用罢了。看了一下网上的例子,大部分都是基于数据库管理的,我想这应该是因为数据库设计的Dataset Joint是程序开发最常见的吧。

GEF的一个简单Example可以参加GEF自带的例子Logic,功能非常强大,了解了Logic,就能够了解相应的GEF开发。在网上这方面的教程并不多,我也基本上没开,我个人始终认为看书不如看代码。当然我以前也没有接触过GEF,毕竟要完全掌握这个东西并非一日之功,要想在上面有所造诣不通过一个大型项目的加强是不可能的。上面的这个小东西也是我花了半个月,还请教了一些人帮忙debug才研究出来的,还是花费了相当功夫。

不过GEF是一套框架,上面的这个小东西,麻雀虽小,五脏俱全,而且基本上可以算一个不依赖于Eclipse平台的小应用程序。不过GEF(Ver 3.3)这个项目依赖于Eclipse OSGI,如果想完全独立于Eclipse,需要自己做一些小小的改变,也不算太麻烦。最后基本上SWT+JFACE+GEF基本上就可以自己做应用了。

独立于Eclipse的GEF简单教程可以参见:
http://www13.plala.or.jp/observe/GEF/GEF_StandAlone.html
http://www13.plala.or.jp/observe/GEF/GEF_Tool_StandAlone.html

日文写的,我看不懂,只看代码。

这里我只说几点:
1、如果面板需要滚动条,并且能够自由伸缩,显示的话,请选择ScrollingGraphicalViewer,相应的RootEditPart请选择ScalableFreeformRootEditPart。

2、GraphicalViewer是通过EditPartFactory拿到子EditPart的,有些类似于JFace TreeViewer的ContentProvider,根据特定的Element拿到对应的EditPart,不同于TreeViewer的是,GEF的getChildren方式是写在EditPart里的,每一个EditPart都要实现 protected List getModelChildren( ) 方法,而TreeViewer的getChilder是在ContentProvider内部实现的。因此EditPart更为灵活,因为EditPart还可以通过EditPartFactory拿到上下文环境,而TreeViewer ContentProvider脱离了Viewer本身,只能通过Model来取,这样当Model和Viewer不一致的时候,GEF游刃有余,而TreeViewer却举步维艰。

3、EditPart的FeedBack Figure的背景颜色是和它的背景取异或操作的,因次再拖动EditPart的时候,如果FeedBack Figure覆盖EditPart的时候,Figure的颜色很难看,解决这个问题的办法就是设置GraphicalViewer的背景颜色为白色。

4、希望EditPart能够拖动,需要实现getDragTracker( )方法:

    public DragTracker getDragTracker( Request req )
    {
        DragEditPartsTracker track 
= new DragEditPartsTracker( this );
        
return track;
    }


5、刷新EditPart的显示需要覆写protected void refreshVisuals( )方法,当Model的模型改变,需要刷新View的时候可以通过事件监听来显示的调用该方法。

6、设置EditPart在父亲EditPart的位置调用( (GraphicalEditPart) getParent( ) ). setLayoutConstraint(EditPart arg0, IFigure arg1, Object arg2)方法。 

7、如果是XYLayoutEditPolicy,内部EditPart位置的改变会调用XYLayoutEditPolicy的protected Command createChangeConstraintCommand( EditPart child,
   Object constraint )方法,需要记录EditPart位置可以在这里进行。

8、EditPart的Selection事件需要注册SelectionEditPolicy,你可以针对不同的EditPart实现不同的SelectionEditPolicy。

9、内部有自由布局的EditPart需要注册LayoutEditPolicy的子类。而该EditPart的Figure需要设置对应的LayoutManager。

10、GraphicalViewer监听Key操作需要setKeyHandler(new KeyHandler(viewer))。

11、进行连接操作的源EditPart需要实现protected List getModelSourceConnections( )方法,目标EditPart需要实现protected List getModelTargetConnections( )方法,创建一个连接需要使用ConnectionDragCreationTool。连接图形的EditPart必须继承AbstractConnectionEditPart。实际上每个连接会被创建出2个EditPart,只有这2个EditPart的Model相等的时候,一个连接才会成立。

12、如果需要连接,需要注册GraphicalNodeEditPolicy,并且实现protected org.eclipse.gef.commands.Command getConnectionCompleteCommand(
   CreateConnectionRequest request )和protected org.eclipse.gef.commands.Command getConnectionCreateCommand(
   CreateConnectionRequest request )方法。注册代码:

installEditPolicy( EditPolicy.GRAPHICAL_NODE_ROLE,
                
new ConnectionCreationEditPolicy( ) );

 

出处:http://www.blogjava.net/cnfree/archive/2007/04/30/114841.html

分享到:
评论

相关推荐

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

    总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的设计,还包括视图的绘制、用户交互的处理以及可撤销/重做机制的实现。通过实践,开发者可以...

    GEF新手入门必备资料

    Gef入门开发,详细解析。 Gef入门开发,详细解析 Gef入门开发,详细解析

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

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的...对于希望在Java和Eclipse环境中提升图形界面开发技能的程序员来说,"GEF入门必读 GEF入门系列 GEF-whole-upload"是一个不可多得的学习资源。

    Eclipse插件开发:GEF入门系列宝典_gef_

    由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。

    Eclipse插件开发--gef开发指南与入门系列宝典

    "GEF入门系列宝典.doc"可能更侧重于实践,提供逐步的教程和实例,帮助初学者快速上手。它可能包含一些实际的代码示例,教你如何构建一个简单的图形编辑器,例如绘制流程图或网络拓扑图。 通过学习这两份资料,你将...

    Eclipse插件开发:GEF入门系列宝典

    在"GEF入门系列宝典"中,我们将深入探讨如何使用GEF进行Eclipse插件开发,以创建自定义的图形编辑器。以下是一些关键知识点: 1. **Eclipse插件体系结构**: - 插件是Eclipse的核心组成部分,它们通过OSGi模块系统...

    GEF 入门版中文教程 源码

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

    GEF开发整合资料大全

    **GEF(Graphical Editing Framework)开发整合资料大全** **GEF是什么?** GEF(Graphical Editing Framework)是Eclipse平台下的一款用于构建图形化编辑器的框架,它为开发者提供了一套全面的工具和API,使得创建...

    GEF快速入门教程和EMF教程

    ### GEF快速入门教程与EMF教程概览 #### GEF HelloWorld 示例详解 本文将详细介绍如何使用Graphical Editing Framework (GEF)实现一个简单的“Hello World”示例,并结合Eclipse Modeling Framework (EMF)进行扩展...

    GEF 开发简单示例

    0. 必须要有一个Eclipse RCP的开发环境 1. 在你的Eclipse中要有GEF, Draw2d的包 2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor

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

    ### GEF开发指南——插件开发关键知识点解析 #### 一、概述 本文将详细介绍《GEF开发指南—插件开发》中涉及的关键知识点。该书深入浅出地讲解了如何利用GEF(Graphical Editing Framework)进行插件开发,特别适合...

    EMF_GEF_入门系列

    通过这个入门系列的学习,新手开发者将能够熟练运用EMF和GEF构建高效、直观的图形用户界面和模型驱动的应用程序,提升软件开发的效率和质量。同时,这也为深入研究更高级的MDD(Model Driven Development)技术打下...

    GEF简易教程-学习GEF的入门教程

    #### 五、GEF编辑器的逐步开发 创建Editor后,接下来是对Editor进行定制化开发。这包括但不限于: - **自定义图形元素**:通过EditParts定义图形的外观与行为。 - **模型绑定**:确保视图中的图形元素与模型数据...

    GEF框架入门学习

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

    gef的入门例子(13个)

    这个压缩包“gef的入门例子(13个)”显然是为初学者设计的,通过一系列逐步进阶的实例,帮助用户了解并掌握gef的使用方法。 首先,让我们来理解一下什么是GDB。GDB是GNU项目的一部分,是一个强大的源代码级调试器,...

    GEF入门系列 pdf 格式资料

    **GEF入门系列 PDF 格式资料** GEF(Graphical Editing Framework)是Eclipse开源组织推出的一个图形编辑框架,主要用于构建可视化的图形编辑工具。它为开发人员提供了丰富的API和设计模式,使得创建复杂的图形用户...

    GEF入门学习例子

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

    GEF开发指南

    GEF(Graphical Editing Framework)图形...它不仅对初学者有着很强的入门指导性,对于有经验的开发者而言,也是一份很好的参考手册,有助于更深入地了解和掌握GEF框架的高级特性,提高图形编辑应用的开发效率和质量。

Global site tag (gtag.js) - Google Analytics