Get busy living or get busy dying!
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
1 随笔 :: 13 文章 :: 0 评论 :: 0 Trackbacks
<
2007年6月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我的参与
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2007年6月 (1)
文章分类
ECLIPSE(2)
(rss)
J2EE
(rss)
J2SE(1)
(rss)
life(3)
(rss)
SWT/JFACE(3)
(rss)
VB.NET
(rss)
work(4)
(rss)
文章档案
2007年7月 (2)
2007年6月 (11)
搜索
最新评论
2007年6月17日
#
gef中的policy与command的关系
刚刚看了几篇文档,对GEF中的POLICY的位置有了更清楚的理解。
POLICY有几种类型:NOTEPOLICY,COMPONENTPOLICY,LAYOUTPOLICY;分别对应REQUEST的几种类型,一旦出现REQUEST就在EDITPART里面找相应的POLICY,然后在POLICY中执行COMMAND。当然要给COMMAND传递一定的参数,比如MODEL,CONSTRAINT等等
调用POLICY的GETCOMMAND()函数,得到相应的一个或多个COMMAND,然后分别执行,这样就改变了MODEL。
最后在EDITPART里面添加监听器:
abstract
public
class
EditPartWithListener
extends
AbstractGraphicalEditPart
implements
PropertyChangeListener
{
public
void
activate()
{
super
.activate();
//
It registers with a model by making self into listeners.
((AbstractModel) getModel()).addPropertyChangeListener(
this
);
}
public
void
deactivate()
{
super
.deactivate();
//
It deletes from a model.
((AbstractModel) getModel()).removePropertyChangeListener(
this
);
}
}
然后,HelloEditPart 要派生自这个抽象类,然后在模型改变时刷新视图。注意这里用到了
前面设置的变量P_CONSTRAINT。通过这个变量我们才知道是要改变HelloModel 模型的约束.
public
class
HelloEditorPart
extends
EditPartWithListener
{
public
void
propertyChange(PropertyChangeEvent event)
{
//
the model of change shows change of the position information on a model -- do thing or not?
if
(event.getPropertyName().equals(HelloModel.P_CONSTRAINT))
refreshVisuals();
//
A view is updated.
}
}
这样就能改变VIEW了!
REQUEST-->POLICY-->COMMAND-->MODEL-->VIEW
^_^
posted @
2007-06-17 21:56
一条辉 阅读(286) |
评论 (0)
|
编辑
收藏
Powered by:
BlogJava
Copyright © 一条辉