使用eclipse自带的Navigator

        Eclipse 的资源浏览器很强大,可以很方便的查看工作空间中可供适配的资源,并且提供了对排序、过滤等功能的支持。Eclipse的RCP项目组不赞成我们在富客户端应用程序中使用ResourceNavigator,原因是ResourceNavigator的实现代码位于Eclipse IDE中,如果使用资源浏览器,生成的RCP产品将会增加二十多兆的空间,而且会增加许多我们的产品中并不使用的功能,很浪费磁盘和系统资源。他们赞成我们根据需要,为应用程序量身定做树形浏览器视图,但是,基于方便和对强大功能的追求,以及对Eclipse代码优良性的肯定,插件开发者们仍然希望将资源浏览器直接加入到我们的RCP程序中。为了满足广大Eclipse开发者强烈的要求,本文对在Eclipse RCP中使用ResourceNavigator的方法做较为全面的介绍。

 

        这是很多博客中都写到的。这里再总结一下。

 

        有两种方式的使用:第一 ,直接使用eclipse自带的(不作修改)。

 

        首先,在plugin.xml的dependencies页中加入 org.eclipse.ui.ide org.eclipse.ui.views(这也就是为什么不提倡在RCP中应用,这样就会增加20多M的空间)

     其次,在plugin.xml的Extensions页中加入相应的扩展,也可以直接在plugin.xml中加入下面的代码:

1      < extension
2           point = " org.eclipse.ui.views " >
3         < view
4               class = " org.eclipse.ui.views.navigator.ResourceNavigator "
5              icon = " icons/filenav_nav.gif "
6              id = " org.eclipse.ui.views.ResourceNavigator "
7              name = " 导航器 " >
8         </ view >
9      </ extension >

 

       最后,在Perspective类中的createInitialLayout方法中加入下面的代码:

1         IFolderLayout leftFolder  =  layout.createFolder( " leftFolderLayout " // $NON-NLS-1$
2                 IPageLayout.LEFT,  0.25f , editorArea);
3         leftFolder.addPlaceholder( " org.eclipse.ui.views.ResourceNavigator " + " :* " );
4         leftFolder.addView( " org.eclipse.ui.views.ResourceNavigator " );

 

    解释: 第1、2两行创建一个IFolderLayout实例,表示在编辑器区域左侧创建一个FolderLayout。第3行为ResourceNavigator添加一个占位符,使用的是ResourceNavigator的ID,后面的“:*”表示还可以有更多的内容,即可以同更多的视图共享这个位置。第4行将ResourceNavigator加入这个布局中,从而在应用程序启动,默认透视图打开时,导航器出现在页面的左侧。

 

 

        第二种 使用方法就是继承ResourceNavigator类以实现自己需要的功能。

 

一,创建自己的视图类
public class NavigatorView extends ResourceNavigator,

这个类会在后面详细介绍,并在RCP的透视图类的createInitialLayout方法中

创建加入,具体代码如下:



layout.addView(NavigatorView.ID, IPageLayout.LEFT, 0.2f , IPageLayout.ID_EDITOR_AREA);




但是如果你这样就运行是会出错的,因为你还没有定义view 的Extensions,具体方法在

Plugin.xml文件的extensions里面新建一个ui.view的扩展,并设置名字和id及class(NavigatorView)


二,制订你的需求--NavigatorView class。


如果你看ResourceNavigator类的代码,你会发现ResourceNavigator的所有action创建都是在


MakeAction里面由一个MainActionGroup类的对象完成的。


所以我们就在NavigatorView里面重载makeActions方法,


并写自己的ActionGroup类--NavigatorActionGroup。

public   class  NavigatorView  extends  ResourceNavigator

   
public   static   final  String ID  =   " com.ibm.crl.bok.ui.ui.NavigatorView "
   
private  NavigatorActionGroup navigatorActionGroup;     
   
protected   void  makeActions() {     
        navigatorActionGroup 
=   new  NavigatorActionGroup( this );        
        setActionGroup(navigatorActionGroup);    
    }      
}

三,NavigatorActionGroup类

完全copy MainActionGroup类的代码,然后接下来就是你自己按需求更改了,假设你想把右键菜单里面的



性一栏去掉,

那么你就在NavigatorActionGroup类里面propertyDialogAction对象相关代码都删掉就可

以了。

这里需要说明一下,MainActionGroup类管理的是Action group,就是说一组action要不你都要要么都不要,

但是假设有人

想在open组里面把openwith action拿掉怎么办呢?这时,你就要在你的NavigatorActionGroup

里面使用自己的openAction类了,

这个类写起来也很简单,就是仿照openaction类做,然后把你不要的action

对象及相应的代码去掉就可以了,

原理和我们重新写MainActionGroup一样。

        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值