如何在GEF中单一拖放创建两个数字?

时间:2012-08-22 21:03:34

标签: eclipse-gef

我喜欢在单个拖放窗口上创建两个图形,即在单个拖放时,应创建两个具有单独的EditPart和Model类的图形。

提前致谢

1 个答案:

答案 0 :(得分:2)

有多种方法可以实现这一点:最简单的方法是让你使用creationFactory返回 数组或对象列表。然后,在你

protected Command getCreateCommand(final CreateRequest request) {
   if (request.getNewObject() instanceof List<?>/Object[]) {
     ...
   }
}

或者,另一种方法是将CreationTool转换为创建工厂列表。然后,创建自定义请求类型,例如

public class MultiCreateRequest extends Request {
    ...    
}

并覆盖它将处理该情况的getCommand(请求请求)调度方法:

public Command getCommand(Request request) {
   if (REQ_MULTI_CREATE.equals(request.getType()))
      return getMultiCreateCommand((MultiCreateRequest) request);
}

在创建工具子类时,您应该注意:

Constructor
createTargetRequest() (return MultiCreateRequest)
getCommandName() (return REQ_MULTI_CREATE)
getCreateRequest() (specify)
selectAddedObject(EditPartViewer viewer) (to select all created that way objects)
updateTargetRequest() (specify)

哦,我实际想出了这个想法,创建新的工具子类化TargetingTool是一个更好的主意,然后继承CreationTool。相反,您可以只复制实现(实际上很容易)并根据需要进行更改。