Eclipse plugin 获取编辑域

Eclipse plugin 获取编辑域,eclipse-plugin,editing,emf,Eclipse Plugin,Editing,Emf,我在Eclipse插件中创建了一个EMF模型。我想在Nebula网格中显示模型内容(使用GridTreeViewer进行显示,使用选项卡式属性表进行编辑) Gridviewer 我已经编写了一个自定义标签和内容提供者,因为我没有让EMF生成的标签和内容提供者使用所有的Nebula网格功能(复选框、工具提示) 公共类概览LabelProvider扩展了ColumnLabelProvider{ [...] 公共无效更新(ViewerCell单元格){ AbstractEntry=(AbstractE

我在Eclipse插件中创建了一个EMF模型。我想在Nebula网格中显示模型内容(使用GridTreeViewer进行显示,使用选项卡式属性表进行编辑)

Gridviewer

我已经编写了一个自定义标签和内容提供者,因为我没有让EMF生成的标签和内容提供者使用所有的Nebula网格功能(复选框、工具提示)

公共类概览LabelProvider扩展了ColumnLabelProvider{
[...]
公共无效更新(ViewerCell单元格){
AbstractEntry=(AbstractEntry)cell.getElement();
GridItem=(GridItem)cell.getItem();
开关(cell.getColumnIndex()){…}
}
}
在主视图类中设置选择提供程序

public类OverviewPart扩展了ViewPart实现了ITabedPropertySheetPageContributor{
[...]
this.getSite().setSelectionProvider(this.viewer);
[...]
公共对象getAdapter(类适配器){
if(适配器==IPropertySheetPage.class){
返回新的TabbedPropertySheetPage(本页);
}
返回super.getAdapter(adapter);
}
公共字符串getContributorId(){
返回TaxEditorPlugin.PLUGIN\u ID;
}
选项卡式属性表

这与EMF数据绑定很好地结合在一起,下面只是一个字段的示例:

this.descriptionText.setText(this.entry.getDescription());
this.descriptionText.setData(this.entry);
emfDataBindingContext.bindValue(
WidgetProperties.text(SWT.Modify).observe(this.descriptionContext),
emfproperty.value(ModelPackage.Literals.ABSTRACT\u ENTRY\u DESCRIPTION).观察(this.ENTRY)
);
更新适配器和模型

公共类概览UpdateDapter扩展EContentAdapter{
公共无效通知已更改(通知){
super.notifyChanged(通知);
this.viewer.refresh();
}
}
现在我想使用编辑域和命令堆栈,但我失败得很惨。

在模型工厂,我做:

Editing domain=TransactionalEditingDomain.Registry.INSTANCE.getEditingDomain(“at.liebhart.tax.editor.domain”);
Resource Resource=domain.getResourceSet().createResource(URI.createURI(taxModel.toString()+“.taxgui”);
resource.getContents().add(taxModel);
我还尝试:

this.domain=new AdapterFactoryEditingDomain(new AdapterFactoryImpl(),this.stack);
两者都不起作用。 有谁能帮我在没有整个model.edit的情况下获得一个工作编辑域,它似乎不支持nebula小部件

TransactionalEditingDomain.Registry.INSTANCE.getEditingDomain(String)
用于检索与特定ID关联的EditingDomain(通常是因为您希望重用现有编辑器的EditingDomain等)

我猜你想用:

org.eclipse.emf.transaction.TransactionalEditingDomain.Factory.createEditingDomain(ResourceSet)