[GEF原理]个人理解
来源:互联网 发布:head first for java 编辑:程序博客网 时间:2024/05/20 18:03
前言:学了两个多星期的GEF,GEF这款图形编辑器开发框架当然可以基于RCP或者eclipse插件开发,这里谈的是插件开发,如有错误,请大家在评论指出我会努力更改。
我所理解的GEF框架可以分为静态创建图形和动态创建图形,先说静态创建图形原理
静态:首先在GraphicalViewer的setContents这个方法中传入一个模型,框架为根据Model转为Editpart(所以这里就是需要为框架配置工厂的原因),将editpart添加为rooteditpart的儿子,得到editpart的figure设置到rooteditpart的figure上(所以这里就是需要重写editpart的createfigure方法的原因),将model与editpart,figure与editpart,映射成hashmap存入框架。下次方便查找。调用refreshVisual和refreshChildren。refreshChildren中有getModelChildren方法会被调用。得到该editpart中有多少children model 根据model得到editpart然后,继续递归调用addChild()。从而达到创建子editpart(注册,刷新VIEW,刷新连接),一句话就是根据第一个editpart的childrenmodel找到第一个editpart的儿子们,给儿子们进行刷新view,注册Map,等工作。从而实现图形上的展示。
动态:鼠标点击某个swt控件根据lws转化为draw2d事件传到graphicalviewer传到editdomain传到tool转换为request,这个request就需要程序员进行捕获调用了,可以根据type在editpart的performRequest方法中捕获,或者安装编辑策略进行捕获。最终转化为command操作model,model改变。通知editpart,调用各种refresh从而刷新view(这就解释了为什么要对Model实现监听,完全是为了刷新view)。
提一点,为何要在连线model中设置src,target,因为我会为src,target中的list做绑定,而src,target这两个model会被对应的editpart中的getsourceconnection,gettargetconnection调用获取他们的list,abstractgrahpicaleditpart又会获取list拿出连线model,与连线model的Editpartl建立联系,调用refresh方法进行刷新view.
- [GEF原理]个人理解
- 个人理解反射原理
- LVS原理个人理解
- 个人理解的触摸屏原理
- JAVA NIO原理个人理解
- 进制->原理本质(个人理解)
- GEF原理及实现系列(一、GEF概述)
- GEF开发入门要点(个人经验)
- 数据库索引原理的个人理解
- 对Flush原理的个人理解
- 哈希表的原理个人理解与浅析
- EGOTableViewPullRefresh个人理解代码原理和使用
- 计算机原理-(个人理解-未完善)
- 常见排序原理(基于个人理解)
- XGBoost原理介绍------个人理解版
- gef
- [转]关于内存地址的个人理解和操作原理
- Java编程语言跨平台的原理 之个人理解
- 使用JMX监控Kafka
- 【学习笔记】设计模式-组合模式
- springMVC接收日期类型参数的自定义转换
- Python 大战 Java
- 7 主成成分分析(PCA)降维算法
- [GEF原理]个人理解
- DrawBlank第一个工程实战总结
- Java开发快递物流项目(3)
- window下的虚拟机linux系统,windows系统ping不通linux下的ip,但是linux系统可以ping通windows下的ip
- 面试知识点--常见的8种排序算法
- handlebars模板引擎
- 利用Java制作计算器的界面
- 在HTML中target目标的四个参数的用法(知识点复习)
- 在linux下安装phpMyAdmin