java - 如何在编辑器操作中使用 EMF 命令?

标签 java eclipse-emf eclipse-emf-ecore

摘要
我正在开发一个基于 emf 的编辑器。到目前为止,我还没有使用 EMF 命令,但现在我想重构我的代码以使用它们。

当前状态
我使用树查看器作为编辑器的主要部分。我通过 org.eclipse.ui.popupMenus 扩展点添加了各种操作。这些操作直接干扰模型,添加和删除对象。

问题
使用这种方法,我必须在删除模型中的对象时手动删除每个引用,这很容易引入错误。此外,编辑器中的撤消/重做操作不起作用。

目标
重构操作,以便它们正确使用 EMF 命令来修改模型。

<小时/>

在 EMF 文档中,我找到了以下代码片段:

  Department d = ...
  EditingDomain ed = ...
  Command cmd = RemoveCommand.create(ed, d);
  ed.getCommandStack().execute(cmd);

...看起来像是我必须使用的代码。但我不知道从哪里可以获得 EditingDomain

所以这些是我的问题:

  • 这是我想在 Action 中使用的方法吗?
  • 我可以从哪里获取EditingDomain

最佳答案

有一种简单的方法可以访问当前编辑域。只需将此代码添加到 Action 类即可。

private EditingDomain domain;

public void setActivePart(IAction action, IWorkbenchPart workbenchPart) {
    if (workbenchPart instanceof IEditingDomainProvider) {
        domain = ((IEditingDomainProvider) workbenchPart).getEditingDomain();
    }
}

方法setActivePart将自动从Eclipse框架中调用。通过这种技术,您应该始终可以访问编辑域。

请注意,只有当您的编辑器基于大部分未修改的生成代码时,这才是正确的。如果您自己管理EditingDomains,您应该使用自己的方法。

关于java - 如何在编辑器操作中使用 EMF 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9601819/

相关文章:

java - 序列化 EMF 模型实例的最佳方法是什么?

validation - 更改默认验证消息

eclipse - 关于 Eclipse EMF 通用框架

eclipse - 在 Eclipse 之外运行 Ecore 模型的 EMF 验证

java - 接口(interface)中赋值的语义是什么?

java - 如何以编程方式将通用类型参数添加到属性?

java - POST 到 Spring MVC Controller 结果为 "HttpMessageNotReadableException: Could not read JSON: No suitable constructor found"

java - 将 String 转换为 int 或 MySQL 中的默认整数

java - Play framework 2.x - 如何为生产部署自动化版本更改和发布

java - 访问抽象测试类中接口(interface)的私有(private)字段