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>

效果如图所示:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值