我构建了一个小型e4 RCP应用程序,其中包含由emf生成的模型代码(使用ComposedAdapterFactory)和“e3属性视图”填充的“e4 xmi”树视图。
尝试使用“dirksmetric教程”在application.e4xmi(共享元素)中显示具有空属性视图的属性视图。
为了获得我的属性表(IItemPropertySource)中显示的树的选定元素,我做了以下事情:
在我的e4 treeviewer端,我使用#createComposite中的e4选择服务:
//将查看器注册为选择提供程序(由属性视图使用...) viewer.addSelectionChangedListener(new ISelectionChangedListener(){ @覆盖 public void selectionChanged(SelectionChangedEvent event){ IStructuredSelection selection =(IStructuredSelection)event.getSelection(); //将选择设置为服务 selectionService.setSelection( selection.size()== 1? selection.getFirstElement():selection.toArray()); } });
在e3“经典”属性表方面,我定义了几个方面:
extension point =“org.eclipse.core.runtime.adapters”> factory adaptableType =“org.eclipse.emf.ecore.EObject” 类= “myappmodeler.properties.ModelPropertiesAdapter” > adapter type =“org.eclipse.ui.views.properties.IPropertySource”>
public Object getAdapter(Object adaptableObject,Class adapterType){ if(adapterType == IPropertySource.class&& adaptableObject instanceof EObject){ emfGlobalFactory = new ComposedAdapterFactory(); emfGlobalFactory.addAdapterFactory(new RepositorystructureItemProviderAdapterFactory()); emfGlobalFactory.addAdapterFactory(new ApplicationItemProviderAdapterFactory()); emfGlobalFactory.addAdapterFactory(new ServiceItemProviderAdapterFactory()); 返回新的AdapterFactoryContentProvider(emfGlobalFactory).getPropertySource(adaptableObject); } return null; }
我的问题是这个适配器甚至没有被执行。
目前正在使用Eclipse neon(它最近更新为同步E3和E4选择服务) https://bugs.eclipse.org/bugs/show_bug.cgi?id=403930
答案 0 :(得分:1)
有多种方法可以解决这个问题,但对于我的情况,这些是步骤
我采取了这些步骤来解决我的问题
EObject
org.eclipse.emf.edit.ui.provider.*
IItemPropertySource
AdapterFactoryContentProvider
)并使用自定义属性源覆盖createPropertySource
ItemProvider
(实现ITableItemLabelProvider
)与ESelectionService
希望这些笔记可以帮助某人