首页 技术 正文
技术 2022年11月15日
0 收藏 885 点赞 3,697 浏览 2120 个字

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]

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

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

即可。效果如下图所示:

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

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

效果如图所示:

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,996
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,510
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,353
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,137
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848