EditPolicy的层次和结构(翻译自GEF Help)http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.gef.doc.isv/reference/api/org/eclipse/gef/EditPolicy.html

接口:org.eclipse.gef.EditPolicyEditPolicies实现EditPart的所有的编辑行为。“编辑行为”定义为下面的一种或几种:

  1. 创建命令(Command Creation)。通过getCommand(Request)返回一Command
  2. 反馈管理Feedback Management。显示或消除源或(和)目标的反馈。
  3. 通告/转发(Delegation/Forwarding)。从其他的EditParts(确切的说应该是其所包含的EditPolicies)收集编辑行为。作为对给定的Request的响应,一个EditPolicy可以创建一个本源的(a derived RequestRequest并将其转发到其他EditPolicies

EditPolicies决定EditPart的编辑能力。使用EditPolicies的方式非常灵活并且面向对象。运用编辑策略,你可以为EditPart挑选编辑行为而不必被其类层次结构所束缚。代码重用性增加,并且代码管理更容易。

重要:此接口并不需要被程序员直接实现,你应该继承AbstractEditPolicy。将来会增加新的方法。

org.eclipse.gef.editpolicies.AbstractEditPolicy实现EditPolicyorg.eclipse.gef.RequestConstants 接口。

ComponentEditPolicy基于模型的EditPolicy,适用于在容器内的组件。组件可以是任何东西,只要在一container内就行。基于模型的EditPolicy仅知道其宿主模型和它所支持的基本操作。默认的,ComponentEditPolicy理解从容器的DELETEORPHAN操作。其子类可加上对该模型指定的额外的行为的操作的支持。

ORPHAN 将被转发到其parent EditPart处理。

DELETE也将被转发到其parent EditPart,但子类可以通过覆载createDeleteCommand(GroupRequest) 自行处理。

ComponentEditPolicy 并非GraphicalEditPolicy,不能被用来显示反馈(Feedback),也不能和宿主的显示(visiuals)进行任何交互。也不能被用作ConnectionEditPartConnection没有容器。

ConnectionEditPolicy基于模型的EditPolicy,适用于ConnectionConnectionEditPolicy仅理解DELETE. 其子类可加上对该模型指定的额外的行为的操作的支持。此EditPolicy并非GraphicalEditPolicy,不能被用来显示反馈(Feedback),也不能和宿主的显示(visiuals)进行任何交互。

 

ContainerEditPolicy用于容器的editpart. Policy用于如addcreateorphan RequestCommand

GraphicalEditPolicyGraphicalEditPart一起使用。所有的GraphicalEditPolicies在一定程度上包含Figure。它们使用Figure解释Request,或者使用图形化反馈(feedback)装饰Figure,如图形的选择。

Policy提供方便的方法来处理宿主的Figure,给GraphicalViewer增加反馈。此Policy并不直接处理任何Request

TreeContainerEditPolicy用于在TreeEditPart中处理ADDS, MOVES, and CREATES

 

评论
发表评论

您还没有登录,请登录后发表评论

metaphy
搜索本博客
我的相册
E4a25167-de99-3f5d-a292-f4dd7f86392a-thumb
theend
共 10 张
最近加入圈子
存档
最新评论