GEF中常用策略

来源:互联网 发布:淘宝需要3c认证类目 编辑:程序博客网 时间:2024/06/05 08:15

1.删除某个结点一般是继承ComponentEditPolicy策略。实现其createDeleteCommand方法。
eg:
protected Command createDeleteCommand(GroupRequest deleteRequest) {
   DeleteCommand command = new DeleteCommand();
   command.setParentModel(getHost().getParent().getModel());
   command.setTargetModel(getHost().getModel());
   return command;
}
然后我们安装策略时installEditPolicy(EditPolicy.COMPONENT_ROLE,
    new AttributeComponentEditPolicy());
注意角色名为EditPolicy.COMPONENT_ROLE

2.直接编辑
需要继承DirectEditPolicy策略,并实现其getDirectEditCommand访求。
eg:
protected Command getDirectEditCommand(DirectEditRequest directeditrequest) {
   ClassNameDirectEditCommand command = new ClassNameDirectEditCommand();
   command.setName((String) directeditrequest.getCellEditor().getValue());
   return command;
  }
  
安装策略,installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ClassNameDirectEditPolicy());

3.对于模型中有子元素的EditPart,一般都会安装一个EditPolicy.Layout_ROLE角色的EditPolicy,后者多为LayoutEditPolicy的子类。
比如创建新对象,一般继承XYLayoutEditPolicy,实现其getCreateCommand方法即可。然后安装EditPolicy.Layout_ROLE策略即可。

原创粉丝点击