emf创建一个EditingDomain
时间: 2024-05-05 11:21:55 浏览: 59
EMF.rar_emf
在 EMF 中,可以使用 `EditingDomain` 来管理模型的修改。要创建 `EditingDomain`,可以使用 `AdapterFactory` 和 `AdapterFactoryEditingDomain` 类。
以下是一个简单的示例代码:
```java
// 创建一个 ResourceSet
ResourceSet resourceSet = new ResourceSetImpl();
// 注册所需的 EPackage
EPackage.Registry.INSTANCE.put(MyPackage.eNS_URI, MyPackage.eINSTANCE);
// 注册所需的 AdapterFactory
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
// 创建 EditingDomain
EditingDomain editingDomain = new AdapterFactoryEditingDomain(adapterFactory, new BasicCommandStack(), resourceSet);
```
在这个示例中,我们首先创建了一个 `ResourceSet`,并注册了需要使用的 `EPackage`。然后,我们注册了一个 `AdapterFactory`,并将其添加到 `ResourceSet` 的 `resourceFactoryRegistry` 中。最后,我们使用 `AdapterFactoryEditingDomain` 类创建了一个 `EditingDomain`。
需要注意的是,我们使用了一个 `BasicCommandStack` 作为 `EditingDomain` 的命令堆栈。命令堆栈用于管理模型的修改操作。在实际使用中,可以根据需要使用不同的命令堆栈实现。
另外,如果需要在 UI 环境中使用 `EditingDomain`,可以考虑使用 `AdapterFactoryEditingDomain` 的子类 `TransactionalEditingDomain`,它提供了事务支持和撤销/重做功能。
阅读全文