您的位置:首页 > 产品设计 > UI/UE

GEF Programmers' Guide 中文版(Editpart生命周期)

2010-07-07 18:16 597 查看
生命周期
当我们提到生命周期, 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 不要用来存储一些在撤销时需要使用的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐