我构建了一个小的e4 RCP应用程序,其中包含由emf生成的模型代码(使用ComposedAdapterFactory)和"e3属性视图"填充的"e4 xmi"树视图.
尝试使用"dirksmetric教程"在application.e4xmi(共享元素)中显示具有空属性视图的属性视图.
为了获得在我的属性表(IItemPropertySource)中显示的树的选定元素,我做了以下事情:
在我的e4 treeviewer端,我使用#createComposite中的e4选择服务:
//将查看器注册为选择提供程序(由属性视图使用...)viewer.addSelectionChangedListener(new ISelectionChangedListener(){@ Override 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"class ="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