- 浏览: 2473754 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
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实例
不好意思, GEF用的少, 不知道怎么解决
在理想的情况下,命令应当只知道模型。因此应当尽量避免对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架构吗,不知道是不是正确?
发表评论
-
Java程序员25个必备的Eclipse插件
2012-01-12 22:36 21935原文:http://www.fromdev.com/2012/ ... -
关于插件更新安装的错误
2007-12-21 20:12 2216在更新插件的时候出现这样的错误: Unable to comp ... -
最近做eclipse branding, features的一些经验
2007-12-16 01:24 4548知道eclipse的splash怎么做 ... -
SWT布局深入学习
2007-11-30 23:00 7946以下内容是学习"The Definitive Gui ... -
Eclipse Action 深入学习笔记(3)
2007-11-25 17:59 4086filter元素是用来指定当 ... -
Eclipse Action 深入学习笔记(2)
2007-11-25 17:14 5217Object Action 这种Action是跟弹出的上下文菜 ... -
Eclipse Action 深入学习笔记(1)
2007-11-25 17:07 7671以前做插件用到的ActionSet都只是依葫芦画瓢,没有真正理 ... -
JFace Text Editor完全掌握之终极指南(4)
2007-11-24 17:08 5676错误标识(Error Marking) Error Marki ... -
JFace Text Editor完全掌握之终极指南(3)
2007-11-24 16:56 5505内容大纲 之所以要给编 ... -
JFace Text Editor完全掌握之终极指南(2)
2007-11-24 16:53 6733最后一步就是实现各种功能 语法高亮 首先我们要实现的是语法高亮 ... -
JFace Text Editor完全掌握之终极指南(1)
2007-11-24 16:17 9996JFace Text Editor是JFace里面一个功能强大 ... -
最近的Eclipse plugin开发总结
2007-11-24 11:30 4941List控件没有提供addDblClickListener方法 ... -
eclipse3.3关于JavaFileEditorInput兼容性问题的解决
2007-11-24 11:22 4675在eclipse3.3中,JavaFileEditor ... -
Eclipse WTP Projects Facets实战指南(2)
2007-11-21 21:13 5256修饰工作 给facet在选择列表中添加图标 格式如下: xml ... -
Eclipse WTP Projects Facets实战指南(1)
2007-11-21 20:21 9587这个文章基本是"Building Project F ... -
也说关于WizardPage的动态生成
2007-11-05 14:26 5157在Eclipse中一个Wizard=Wiza ... -
关于多页编辑器中不同Editor之间的Redo&Undo冲突的解决
2007-09-03 15:17 4060在我们的插件工具的开 ... -
TextEditor原理分析笔记
2007-08-23 15:48 3382Editor的语法着色原理:Eclipse使用damage , ... -
最近的Eclipse开发总结
2007-08-23 15:46 2119java.lang.IllegalAccessError: t ... -
如何判断一个eclipse的版本的代码
2007-08-23 15:41 2976java 代码 String version = ...
相关推荐
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
**GEF学习资料** 本文将深入探讨GEF(Graph Edit Framework)的学习资源,这是一个用于创建图形编辑框架的开源项目,广泛应用于开发图形用户界面。针对初学者,我们将重点关注"八进制"和"dudu"教程,这两部分是理解...
5. "eclipse插件开发快速入门图文教程.pdf" 和 "Eclipse插件开发学习笔记.pdf" 可能是针对Eclipse插件开发的一般性教程,对于理解GEF和Draw2D的上下文非常有帮助。 6. "jgraphx-1_10_0_6.zip.rar" 是JGraphX的压缩包...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
【标题】"GEF中文教程笔记1" 涉及的知识点主要集中在图形化编辑框架(Graphical Editing Framework,简称GEF)上,这是一款由Eclipse基金会开发的开源工具,用于构建图形用户界面(GUI),特别是用于创建复杂的图形...
这份"eclipse插件开发学习笔记(扫描版15-28章)"涵盖了从基础到高级的多个关键主题,是深入理解并掌握Eclipse插件开发的重要资料。 1. **第12章 视图(Views)**:视图是Eclipse工作台中的一个重要组成部分,用于...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
第一篇介绍Eclipse平台...第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
### Eclipse插件开发知识点解析 #### 一、Eclipse平台简介 **1.1 Eclipse集成开发环境(IDE)** ...通过以上内容的学习,开发者可以全面掌握Eclipse插件开发的基本原理和技术细节,为进一步深入研究打下坚实的基础。
《Eclipse插件开发学习笔记22-24章》是针对Eclipse平台进行插件开发的深入学习资料,涵盖了GEF(Graphical Editing Framework)的介绍与实践,以及具体的插件开发实例。通过这三个章节的学习,开发者可以掌握Eclipse...
本系列学习笔记主要涵盖了Eclipse插件开发的第22至24章,旨在帮助开发者深入理解并掌握如何利用Eclipse平台构建自定义工具和功能。 首先,第22章“GEF介绍与实现”着重讲解了图形编辑框架(Graphical Editor ...
eclipse插件开发学习笔记每章源代码,对学习插件开发很有帮助