GEF Programmers' Guide 中文版(Editpart生命周期)
来源:互联网 发布:mysql错误日志在哪里 编辑:程序博客网 时间:2024/05/16 05:18
生命周期
当我们提到生命周期, EditPart 最典型的就是激活 (activation) 和停用 (deactivation) 操作,激活过程中它将添加模型属性监听器,而停用时它会移除监听器。但是我们仍然有必要了解一下 EditPart 完整的生命周期。
1) 创建
最先的总是创建过程,绝大多数的 EditPart 会在 Viewer 的 EditPartFactory 中被创建出来。在创建以后,将执行以下方法:
setModel() – 如果 EditPart 的构造方法没有将模型对象作为参数传递进来,那么 setModel() 将会被执行,以确保 EditPart 知道它维护的模型。
2) 添加到图形
setParent() – 设置 EditPart 的父 EditPart ,它提供了一个用于索引它的路径,这个路径可能会用来进行 EditPart 的注册和访问,通过 EditPart Registry 。
createFigure() – 创建视图 (Figure) ,注意此时父 EditPart 和模型都已经设置完毕,可以使用这些信息。
addNotify() -- 通知子 EditPart 添加完毕,这时子 EditPart 将进行以下操作:
1. 在 Viewer 的 Registry 中注册自己
2. 创建编辑策略
3. 刷新显示自己,然后初始化它自己的子节点或者连接 ( 如果存在的话 )
activate() – 激活 EditPart ,表明它已经做好了编辑的准备。父 EditPart 在自己被激活后再激活它的子 EditPart , Root EditPart 在 Viewer 被创建后激活。在激活的过程中:
1. 开始监听模型。子类应当重写这个方法,以添加必要的监听器
2. 激活所有的编辑策略
3. 激活所有的子 EditPart 和源连接的 ConnectionEditPart
3) 正常使用
这时候 EditPart 处于正常使用状态,它开始进行一系列的处理,直到它被从 Viewer 中移除或者 Viewer 关闭。
4) 停用
deactivate() – 停用 EditPart ,与 activate() 相反。 记得移除激活时添加的模型监听器。
在 EditPart 被移除以后还会有一些操作继续进行,但是如果是 Viewer 被关闭 ( 正常或者非正常 ) ,那么只保证执行 deactivate() 。因此, activate() 和 deactivate() 通常需要重写而其他的方法可以忽略。
removeNofity() – 通知此 EditPart 将要被移除,在此期间, EditPart 仍然可以访问上下文环境,它会进行以下操作:
1. 确定 EditPart 没有被选中或使用
2. 调用子 EditPart 的 removeNofify() 方法
3. 从 Viewer 的 Registry 中注销自己 .
4. 移除任何以自己为源或者目的的连接 ,一般地,连接只有在源和目的都被删除以后才会自动删除,所以此处要显示的移除相关连接,以免出现只有一个端点的无效连接
setParent(null) – 移除操作的最后一步,将父 EditPart 设置为 null 。
EditPart 不会死而复生, 在撤销删除时,将会产生新的 EditPart 。 因此命令最好不要引用 EditPart , 同时 EditPart 不要用来存储一些在撤销时需要使用的信息。
- GEF Programmers' Guide 中文版(Editpart生命周期)
- GEF Programmers' Guide 中文版(GEF 交互操作)
- GEF Programmers' Guide 中文版(编辑和策略)
- GEF Programmers' Guide 中文版(工具和绘图板)
- GEF Programmer‘s Guide 中文版(概述)
- ANDROID A PROGRAMMERS GUIDE
- GEF源码分析(三) GEF 的树状构架 ___ Model/EditPart/Figure
- Java: Practical Guide for Programmers
- cocos2dx Programmers guide v3.12
- GEF源码分析(五) GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事
- C# 2.0 : Practical Guide for Programmers
- Pro T-SQL 2008 Programmers Guide
- 1st_uC/OS-II Basic Programmers’Guide
- Cocos2d-x Programmers Guide v3.12
- GEF源码分析(六) GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事 二
- Spark Programming Guide 中文版
- WTL for MFC Programmers, 中文版序言
- gef
- SharpDevelop源码分析 (一、序+基本概念) 收藏
- dedecms 模板 教程 有点老
- FormatMessage 的用法
- 小讨论。。 在实际应用中给数据库加外键的约束好不好?
- android调用Google搜索框
- GEF Programmers' Guide 中文版(Editpart生命周期)
- 删除MSSQL数据库text字段中恶意脚本的方法
- GEF Programmers' Guide 中文版(工具和绘图板)
- Spring.Net -- 如何使用用户自定义类型转换器 (Custom Type Converter )
- 去掉水晶报表的数据库验证界面
- 让你的代码有更好的扩展性
- 给按钮、菜单等添加弹出提示
- TCP关闭全状态记录
- URL编码