本篇转载自点击打开链接
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
即可。效果如下图所示:

可知菜单ID为file。 用鼠标点选File->New->Project,弹出如下界面:
<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>
效果如图所示:


本文介绍如何在Eclipse中通过ActionSet扩展点定制菜单栏、子菜单及其子菜单项,包括创建自定义菜单、子菜单及如何将动作添加到Eclipse预定义的菜单中。

被折叠的 条评论
为什么被折叠?



