如何从导航器视图部件检索内容提供程序

时间:2015-09-17 21:57:26

标签: java eclipse eclipse-plugin

我想知道如何从导航器视图部分检索内容提供程序。

我在自定义导航器中的内容是在我的eclipse插件中定义的自定义提供程序:

<extension
      point="org.eclipse.ui.navigator.navigatorContent">
   <navigatorContent
         contentProvider="my.navigator.MyCustomContentProvider"
         id="MyCustomContentProvider"
         name="name">             
         <triggerPoints>
 ...
  <extension
     point="org.eclipse.ui.views">
  <view
        class="org.eclipse.ui.navigator.CommonNavigator"
        id="my.navigator.id"
...

一切正常但当我尝试从代码中的其他位置获取我的自定义内容提供商时,我不知道在哪里可以找到它:

我尝试这样的事情,但它不起作用!为什么:

IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView( "my.navigator.id" );
if(view instanceof CommonNavigator){
   CommonNavigator nav = (CommonNavigator)view;
   IContentProvider icp = nav.getCommonViewer().getContentProvider();
   if(icp instanceof MyCustomContentProvider){
       //it never enters here!

IContentProvider不是我的预期!为什么这不是MyCustomContentProvider?以及如何检索我的自定义内容提供商(MyCustomContentProvider)?

(注意导航器控件是Tree对象,但是从这个Tree对象我也不知道检索保存正确内容提供者的TreeViewer。 。对?) 感谢

1 个答案:

答案 0 :(得分:0)

对于CommonViewer,树内容提供程序始终为org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider。此内容提供商使用INavigatorContentService访问您的内容提供商。我没有看到直接访问您的内容提供商的方法。