`

GEF学习笔记

阅读更多
GEF以前学习过, 而且还按照Dudu的教程做了一遍, 在网上也找了不少资料, 不错的文章也转载了不少,只不过当时对插件开发还只是一知半解, 对图形开发更是没有什么概念,导致的直接后果就是:现在基本上全部忘记光了,于是不得不从头开始,不过这次不仅要知其然, 而且还要知其所以然, 不过理解起来还是比较快的, 不知是拖以前学习的底子的福, 还是因为这么长时间做Eclipse开发来的基础


在理想的情况下,命令应当只知道模型。因此应当尽量避免对EditPart和图形的引用。

图形(Figure)不应该去访问EditPart和Model, 即使Figure要引用EditPart, EditPart也只是作为一个Listner来被应用,而不是直接去引用一个EditPart

一个Model实例会对应一个EditPart, 因为EditPart会随着Model的存在而存在, 而model随时可能被删除, 所以在EditPart中应尽量少包含一些长效信息,而且应该避免Command去引用EditPart

EditPart的refreshVisuals()方法只会在其初始化的时候被自动调用,如果model发生变化,需要更新图形界面时,必须手动调用refreshVisuals()方法.

连接(connection)是通过source和target连接点来获取的, 而且connection的EditPart只会创建一次, connection也是一种图形,它必须通过ConnectionAnchor挂在另外两个图形上面,因此必须告诉connection它所需要的两个anchor在哪里, 默认情况GEF会通过给连接图形的EditPart实现NodeEditPart接口来提供所需要的anchor, 这样做一个是因为anchor是与连接图形关联的,而连接在开始的时候是不知道anchor在哪里的, 另一个原因是, 当用户创建一个connnection的时候, Connection EditPart还没有被创建

EditPart通过监听器来获得模型的修改,并提供方法去刷新视图, 比如子节点被删除,将调用refreshChildren()方法去删除子节点对应的图形和EditPart, 如果只是属性发生变化,那么将调用refreshVisuals()方法, 因为该方法会频繁调用,因此在调用前应该做一些判断来避免不必要的刷新

一般在active()方法中添加listener, deactive()中删掉这些添加的listener,

在EditPart中, 由图形修改导致模型修改是通过command来实现, 而模型修改导致图形修改则是通过listener来实现

EditPart是GEF的核心, 对于一个可编辑的模型元素都必须有一个对应的EditPart类对应, 在EditPart中有两个容易混淆的方法:getModelChildren()返回包含在当前模型中的子模型, getChildren()返回子模型对应的EditPart

如果父图形不是子图形的直接父亲, 那么需要实现AbstractGraphicalEditPart.getContentPane()方法, 得到的对象将用来存放所有的子图形

当用户在图形编辑器中执行操作的时候, GEF在内部会创建相应的Request, 比如新建一个对象将生成CreateRequest, 它包含了新建对象的模型实例, 用来存放该Request的EditPart

对于我们的EditPolicy实现来说, 我们要做的大部分工作就是根据request创建一个Comamnd对象, Command子类一般要实现execute和undo方法,execute方法就是用来将图形的改变更新到模型上, Command更多的是对模型的依赖, 而跟GEF其他的组件没有什么关系, 比如绝对不会去引用EditPart和EditPolicy实例
分享到:
评论
6 楼 xmind 2010-11-20  
EditPolicy
5 楼 ywjun 2008-07-16  
  
4 楼 macrochen 2008-01-13  
引用
请教老师们一个问题:编辑器中内容超过了屏幕尺寸、有了滚动条,请问如何能够获取滚动的方向和值。

不好意思, GEF用的少, 不知道怎么解决
3 楼 nnnn 2008-01-09  
请教老师们一个问题:编辑器中内容超过了屏幕尺寸、有了滚动条,请问如何能够获取滚动的方向和值。
2 楼 macrochen 2008-01-03  
差不多是这样
1 楼 nuoda 2008-01-03  
GEF是个好东西,综合你的相关blog和“八进制”的相关blog,还是可以透彻理解的。按照我的理解,模型可以看做数据库、命令可以看做是数据库操作程序、编辑器可以看做是浏览器、画布可以看做是表单、每一个figure可以看做是表单的字段,控制这些相互关联的editpart相当于struct的action。毕竟也是MVC架构吗,不知道是不是正确?

相关推荐

    Eclipse插件开发学习笔记 第三四篇(26-28)+原代码.rar

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...

    GEF学习资料

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

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

    5. "eclipse插件开发快速入门图文教程.pdf" 和 "Eclipse插件开发学习笔记.pdf" 可能是针对Eclipse插件开发的一般性教程,对于理解GEF和Draw2D的上下文非常有帮助。 6. "jgraphx-1_10_0_6.zip.rar" 是JGraphX的压缩包...

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...

    GEF中文教程笔记1

    【标题】"GEF中文教程笔记1" 涉及的知识点主要集中在图形化编辑框架(Graphical Editing Framework,简称GEF)上,这是一款由Eclipse基金会开发的开源工具,用于构建图形用户界面(GUI),特别是用于创建复杂的图形...

    eclipse插件开发学习笔记(扫描版15-28章)

    这份"eclipse插件开发学习笔记(扫描版15-28章)"涵盖了从基础到高级的多个关键主题,是深入理解并掌握Eclipse插件开发的重要资料。 1. **第12章 视图(Views)**:视图是Eclipse工作台中的一个重要组成部分,用于...

    《Eclipse插件开发学习笔记》源码

    第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...

    eclipse rcp 插件开发学习笔记.pdf 15-24章

    在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...

    Eclipse插件开发学习笔记 第三四篇(22-25).rar

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...

    Eclipse+插件开发学习笔记

    第一篇介绍Eclipse平台...第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例

    Eclipse插件开发学习笔记(第一章)

    第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...

    Eclipse插件开发 学习笔记 第二篇 核心技术(17-21).rar

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...

    Eclipse插件开发+学习笔记(完整 清晰) part1

    第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...

    Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...

    Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar

    Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...

    eclipse插件开发学习笔记_教程2

    第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...

    eclipse插件开发学习笔记

    ### Eclipse插件开发知识点解析 #### 一、Eclipse平台简介 **1.1 Eclipse集成开发环境(IDE)** ...通过以上内容的学习,开发者可以全面掌握Eclipse插件开发的基本原理和技术细节,为进一步深入研究打下坚实的基础。

    Eclipse插件开发学习笔记22-24章.rar

    《Eclipse插件开发学习笔记22-24章》是针对Eclipse平台进行插件开发的深入学习资料,涵盖了GEF(Graphical Editing Framework)的介绍与实践,以及具体的插件开发实例。通过这三个章节的学习,开发者可以掌握Eclipse...

    Eclipse插件开发学习笔记(ch22-24)

    本系列学习笔记主要涵盖了Eclipse插件开发的第22至24章,旨在帮助开发者深入理解并掌握如何利用Eclipse平台构建自定义工具和功能。 首先,第22章“GEF介绍与实现”着重讲解了图形编辑框架(Graphical Editor ...

    eclipse插件开发学习笔记_源码

    eclipse插件开发学习笔记每章源代码,对学习插件开发很有帮助

Global site tag (gtag.js) - Google Analytics