eclipse自带的功能树 Common Navigator Framework

来源:互联网 发布:淘宝司法拍卖房子 编辑:程序博客网 时间:2024/05/22 00:11

 使用eclipse进行开发的人肯定对Project Explorer不陌生,这个view能够让你对你的工程进行管理,同时配有强大的排序和过滤功能,那么在一个RCP程序中,该如何来使用eclipse自带的资源导航器呢?

      在eclipse3.2之前,ResourceNavigator就是这个资源导航器的实现,然后eclipse的开发者们并不希望RCP开发者直接使 用,因为它会使得你的rcp程序一下子变得庞大而臃肿,不仅容量增大了20M+,而且还会引入很多你并不需要的功能。但是本着方便及对Eclipse代码 健壮性肯定的原则,还是有不少开发者讲其使用在自己的程序中,Eclipse3.2之后,Eclipse的开发者们为了满足广大开发者的需求,开发了 Common Navigator Framework,让其代替Eclipse Resource Navigator,现在我们在Eclipse3.4上使用ResourceNavigator就会看到一条横线,代表不推荐使用,在下一个版本将会去 掉。

      本文讲简要介绍如何使用Common Navigator Framework:

      第一步,需要在我们的程序中导入以下需要依赖的插件:

  1. org.eclipse.ui.navigator
  2. org.eclipse.ui.navigator.resources
  3. org.eclipse.ui.ide
  4. org.eclipse.core.resources

       第二步,在org.eclipse.ui.views扩展点上新增一个view,其class选择org.eclipse.ui.navigator.CommonNavigator

     <extension

               point="org.eclipse.ui.views">

          <view

               name="View"

               class="org.eclipse.ui.navigator.CommonNavigator"

               id="example.view">

         </view>

      </extension>

      第三步,在你的Perspective里面增加view的显示,方便我们查看显示效果,代码如下:

      public void createInitialLayout(IPageLayout layout) {

                String editorArea = layout.getEditorArea();

                layout.setEditorAreaVisible(false);

                layout.addStandaloneView("example.view", true /* show title */, IPageLayout.LEFT, 1.0f, editorArea);

                //your code

      }

      到这里就可以看到我们的Navigator已经出来了,只不过还没有任何的内容,action也是仅有的两个。

      为了看到内容,我们可以将工作区里的工程导入进Navigator来显示,所以你需要在你的WorkbenchAdvisor里重写getDefaultPageInput方法,代码如下:

       public IAdaptable getDefaultPageInput() {

                  IWorkspace workspace = ResourcesPlugin.getWorkspace();

                  return workspace.getRoot();

       }

      上面的方法需要返回一个IAdaptable的接口,这个接口定义一个适配对象,能够动态地被扩展来提供不同的接口;我们需要将其和RCP平台挂钩上,我们需要在initialize方法里面增加以下代码:

       WorkbenchAdapterBuilder.registerAdapters();

       我们会注意到,这个WorkbenchAdapterBuilder .registerAdapers()方法是一个内部方法,而不是eclipse API的一部分,有可能在下一个release被替换掉,但是会有新的API来代替它。

       现在我们运行一下我们的RCP程序,我们就可以看到我们这个程序的workspace下的工程的目录情况。

       如果需要添加一个自带的Action,比如导入,新建工程等,我们可以添加 org.eclipse.ui.navigator.viewer 扩展点,建立viewerActionBinding和viewerContentBinding,均指向上面的view。

       在 viewerActionBinding中将include org.eclipse.ui.navigator.resources

       在 viewerContentBinding中将include

  • org.eclipse.ui.navigator.resources
  • org.eclipse.ui.navigator.resourceContent
  • org.eclipse.ui.navigator.resources.filters
  • org.eclipse.ui.navigator.resources.linkHelper
  • org.eclipse.ui.navigator.resources.workingSets

       <extension

                  point="org.eclipse.ui.navigator.viewer">

            <viewerActionBinding

                  viewerId="example.view">

                      <includes>

                              <actionExtension pattern="org.eclipse.ui.navigator.resources.*" />

                      </includes>

           </viewerActionBinding>

           <viewerContentBinding

                 viewerId="example.view">

                      <includes>

                              <contentExtension pattern="org.eclipse.ui.navigator.resourceContent" />

                              <contentExtension pattern="org.eclipse.ui.navigator.resources.filters.*"/>

                              <contentExtension pattern="org.eclipse.ui.navigator.resources.linkHelper"/>

                              <contentExtension pattern="org.eclipse.ui.navigator.resources.workingSets"/>

                      </includes>

           </viewerContentBinding>

        </extension>

       那么现在运行一下,看看效果吧,是不是有点eclipse的里的感觉了?

原创粉丝点击