RCP:利用actionSet在菜单(menu)里添加内容

本篇转载自点击打开链接

eclipse的菜单menu、工具栏toolbar乃至视图的上下文菜单contextmenu都是使用Action或Command实现的。

Action即是

org.eclipse.jface.action.IAction   Command即是 org.eclipse.core.commands.Command   从它们的包名可以看出,Action是UI相关的,除了可执行代码(run方法)以外,还会包含一些UI信息,比如动作名称(Label),描述图片(Image)等等。 而Command则完全是业务代码,它更关注于操作本身,(在编辑器中,一系列被执行了的命令会进入命令栈,以此为依据来实现redo和undo功能)。   本篇文章重点要讨论的是如何在eclipse的Menu栏上注册一个Action。分三种情况讨论: 1、添加一个菜单栏并添加一个菜单项 2、在自定义的菜单栏里添加一个子菜单 3、为eclipse的指定菜单栏的指定的子菜单添加一个子菜单项   所有功能使用org.eclipse.ui.actionSet实现。  

 1、添加一个菜单栏并添加一个菜单项   扩展点定义如下:

<extension
         point='org.eclipse.ui.actionSets'>
      <actionSet
            id='test.my.actionSet'
            label='test.my.actionSet'
            visible='true'>
         <menu
               id='test.my.menu'
               label='我的Menu'>
            <separator
                  name='test.sp'>
            </separator>
         </menu>
         <action
               class='test.my.TestAction'
               id='test.my.action'
               label='我的Action'
               menubarPath='test.my.menu/test.sp'
               style='push'>
         </action>
      </actionSet>
   </extension>

在上述扩展配置中,我们注册了一个ActionSet,为该ActionSet添加了一个Menu,一个Action,为Menu添加了一个Seperator。

然后将Action的menubarPath设置为[Menu ID]/[Sperarot ID]

\

2、在自定义的菜单栏里添加一个子菜单

<extension
         point='org.eclipse.ui.actionSets'>
      <actionSet
            id='test.my.actionSet'
            label='test.my.actionSet'
            visible='true'>
         <menu
               id='test.my.menu'
               label='我的菜单'>
            <separator
                  name='test.sp'>
            </separator>
         </menu>
         <menu
               id='test.my.submenu'
               label='我的子菜单'
               path='test.my.menu/test.sp'>
         </menu>
         <action
               class='test.my.TestAction'
               id='test.my.action'
               label='我的Action'
               menubarPath='test.my.menu/test.my.submenu/additions'
               style='push'>
         </action>
      </actionSet>
   </extension>

插入子菜单的配置和插入菜单项的配置是一样的,为子菜单添加子菜单项则需要知道菜单的ID,子菜单的ID。

在Action配置的menubarPath上填写:[Menu ID]/[SubMenu ID]/additions

即可。效果如下图所示:

\

3、为eclipse的指定菜单栏的指定的子菜单添加一个子菜单项  在RCP开发中有一个常见需求,即是为Eclipse的File菜单的New子菜单中添加一个新的子菜单项。 通过上面的学习,我们知道,只要知道菜单ID和子菜单ID,即可完成需求。 如何知道这两项呢? 我们可以使用Plugin Menu Spy工具,如果你的Eclipse是RCP/RAP版本,或者安装了PDE插件,就会有这个功能。 按快捷键alt+shift+F2 鼠标图标会变成一个放大镜和一张图纸样式,即是Plug-in Menu Spy成功启动。 用鼠标点选File->Close,弹出如下界面:
\
可知菜单ID为file。   用鼠标点选File->New->Project,弹出如下界面:  

\
  可知,子菜单ID为new 于是,添加如下配置:
<extension
      point='org.eclipse.ui.actionSets'>
   <actionSet
         id='test.my.actionSet'
         label='test.my.actionSet'
         visible='true'>
      <action
            class='test.my.TestAction'
            id='test.my.action'
            label='我的Action'
            menubarPath='file/new/additions'
            style='push'>
      </action>
   </actionSet>
</extension>

效果如图所示:

\



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值