在Eclipse工作台上增加一个菜单是很简单的事情,插件可以使用 org.eclipse.ui.actionSets 扩展点来向工作台菜单和工具栏添加菜单、菜单项和工具栏项。同时,Eclipse工作台的插件开发环境还为实现org.eclipse.ui.actionSets 扩展点提供了Hello World模板,用于向Eclipse工作台的菜单中添加一个“样本操作”菜单和向工具栏增加一个“样本操作”按钮。但这个模板提供的菜单项只有一级,如何实现如下图所示的像Eclipse工作台已经具有的菜单项中多级结构呢?
其实不难,问题的关键在于正确设置菜单和工具栏的属性。下面,我们实现上图中的多级菜单项。
在Eclipse工作台创建一个插件项目,采用Hello World模板,项目名可定为简单的“menuplugin”,此外,我们不对模板生成的代码做任何的修改而只对配置文件plugin.xml做修改。
我们把模板对org.eclipse.ui.actionSets的扩展修改成如下的结构:
现在在同一个操作集下,有一个id为menu的目录项,标签为“目录”,另外有一个id为submenu的目录项,标签为“子目录”,用于当作“目录”这个目录项的子目录项。在“目录”和“子目录”这两个目录项下,我们定义了几个seperator,在名称为“目录”的目录项下,定义了两个seperator,名称分别是“slot1”和“slot2”;在名称为“子目录”的目录项下,定义了一个seperator,名称为“slot3”。此处,我们定义了四个action:“样本操作1”、“样本操作2”、“样本操作3”、“样本操作4”,分别用来放在“目录”目录项和“子目录”目录项下面。“样本操作1”和“样本操作2”这两个action直接放在“目录”目录项下,所以,对于它们的menubarpath,我们只需要类似于模板原来的设置把它设置为menu/slot1。我们来看一下“子目录”这个目录项如何成为“目录”这个目录项的子目录项:
像上图一样,我们设置“子目录”这个目录项的path属性值为menu/slot1。其中,menu是“目录”这个目录项的id,slot1是它所包含的一个seperator。这样就把“子目录”这个目录项当放到了“目录”这个目录项的slot1这个seperator下面了。当然,如果你不在“子目录”这个目录项中放入任何的action,这个目录项并不会显示出来。下面我们在“子目录”这个目录项中放入两个action,“样本操作3”和“样本操作4”。
如上图我们看到,“样本操作3”这个action的menubarpath属性被设置为:menu/submenu/slot3。其中menu是“目录”这个目录项的id,submenu是“子目录”这个目录项的id,而slot3是“子目录”这个目录项下面包含的一个seperator。
这样,“样本操作3”就被放到了“目录”这个目录项下面“子目录”这个子目录项下面的slot3这个seperator中了。
下面给出plugin.xml文件的内容,你可能需要注意一下标有“<---”的地方。
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="样本操作集"
visible="true"
id="menuplugin.actionSet">
<menu
id="menu" <---
label="目录"
>
<separator
name="slot1"> <---
</separator>
<separator
name="slot2"> <---
</separator>
</menu>
<action
class="menuplugin.actions.SampleAction"
icon="icons/sample.gif"
id="Acion1"
label="样本操作1"
menubarPath="menu/slot1" <---
tooltip="Hello,Eclipse world">
</action>
<action
class="menuplugin.actions.SampleAction"
icon="icons/sample.gif"
id="Acion2"
label="样本操作2"
menubarPath="menu/slot1" <---
tooltip="Hello,Eclipse world">
</action>
<menu
id="submenu"
label="子目录"
path="menu/slot2"> <---
<separator
name="slot3">
</separator>
</menu>
<action
class="menuplugin.actions.SampleAction"
icon="icons/sample.gif"
id="Action3"
label="样本操作3"
menubarPath="menu/submenu/slot3" <---
tooltip="Hello,Eclipse world">
</action>
<action
class="menuplugin.actions.SampleAction"
icon="icons/sample.gif"
id="Acion4"
label="样本操作4"
menubarPath="menu/submenu/slot3" <---
tooltip="Hello,Eclipse world">
</action>
</actionSet>
</extension>
</plugin>
对于工具栏的路径的设置应该可以采用类似的方法。关于菜单和工具栏路径的更多信息,你可以查看Eclipse帮助中《平台插件开发者指南》里《高级工作台概念》一章中的《菜单和工具栏路径》这一节。
分享到:
相关推荐
改进的多级树形菜单dtree,eclipse开发。mysql数据库,S2SH架构,有源码和jar包。 共两部分。这是第一部分
改进的多级树形菜单dtree,eclipse开发。mysql数据库,S2SH架构,有源码和jar包。 共两部分。这是第二部分
原生android用ListView做的多级树菜单,可以自定义图标,树菜单已生成 otree.jar,这是对otree.jar的应用的示例源码,IDE是eclipse
struts hibernate树形菜单,只是简单的实现树形菜单,有一种业务逻辑没有考虑,就是当类别目录下同时拥有子目录和具体商品的时候只会显示子目录,而具体商品没显示,只需在标签处理类RecursionTag.java中的...
过滤功能的下拉菜单[类似美团,58同城] 里面包含eclipse和AS的代码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需要的一切易于使用的图形元素,具有漂亮的视觉效果和低内存占用。具有功能强大的单元块,对输入设备支持较完善,同时具有低内存...3、eclipse开发环境搭建方法
该批处理用来调用常用程序,可以在“开始->运行”里通过命令一次启动一个或多个程序,(举例: run eclipse putty ttplayer , 将启动 eclipse,putty和ttplayer三个程序),方便习惯使用命令行的人,为自己的常用软件...
本文实例讲述了Android基于BaseExpandableListAdapter实现的二级列表仿通话记录...开发工具:eclipse 运行环境:htc G9 android2.3.3 不多说,先看效果: 展开后的效果: 继续展开的效果: main.xml: <?xml ver
rbac一个java版本的基于角色的权限管理系统可以用来做公共的cms后台该版本支持多级菜单部署方法将 /src/main/resources/sql/jrbac.sql数据库脚本运行在本地数据库将 src/main/resources/jdbc.properties中 jdbc....
2 项目背景 根据电子公文管理总体要求,在现有信息化OA系统建设的基础上,要求完善电子公 文办理系统和交换系统,建设支持大并发和多级管理模式的协同办公平台,实现高效的 业务协作和信息共享,增强电子文件的完整...
https://github.com/bmelnychuk/AndroidTreeView 多级树形菜单的实现的实现源码 资源分享。github上的源码下载后还需要做很多的配置才可以运行。本代码已经包含所有依赖库。导入eclipse即可运行。有疑问欢迎咨询
2 项目背景 根据电子公文管理总体要求,在现有信息化OA系统建设的基础上,要求完善电子公 文办理系统和交换系统,建设支持大并发和多级管理模式的协同办公平台,实现高效的 业务协作和信息共享,增强电子文件的完整...