目标

Eclipse插件(RCP)自定义工作台主菜单栏解决了主菜单栏的问题,本节讲述如何自定义工作台快捷菜单栏(MenuToolBar)。快捷栏也叫工具菜单条(MenuToolBar),其位置如下图所示:

分析

默认情况下新建的Plugin项目是不显示快捷菜单栏的,需要在窗口打开前进行配置。可在ApplicationWorkbenchWindowAdvisor构造方法处配置,也可在重写方法preWindowOpen中配置,还可以在重写方法postWindowOpen中配置。

快捷菜单显示后先去除自带的快捷栏菜单。

快捷菜单应在 ApplicationActionBarAdvisorfillCoolBar 方法中配置。

实现

显示

首先使得工作台展示快捷菜单栏。

  • 构造方法中配置
public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {super(configurer);configurer.setInitialSize(new Point(800, 600));// 默认为falseconfigurer.setShowCoolBar(true); }
  • preWindowOpen 中配置
@Override
public void preWindowOpen() {getWindowConfigurer();IWorkbenchWindowConfigurer windowConfigurer = getWindowConfigurer();configurer.setInitialSize(new Point(800, 600));//默认为falseconfigurer.setShowCoolBar(true);
}
  • postWindowOpen 中配置
@Override
public void postWindowOpen() {getWindowConfigurer();IWorkbenchWindowConfigurer windowConfigurer = getWindowConfigurer();configurer.setInitialSize(new Point(800, 600));//默认为falseconfigurer.setShowCoolBar(true);
}

去除

去除快捷菜单栏中不需要的菜单,本例中去掉所有非自定义的。

@Overridepublic void postWindowOpen() {IWorkbenchWindowConfigurer windowConfigurer = getWindowConfigurer();IActionBarConfigurer actionBarConfigurer = windowConfigurer.getActionBarConfigurer();// 将不是自定义的CoolBar去掉ICoolBarManager coolBarManager = actionBarConfigurer.getCoolBarManager();IContributionItem[] coolitems = coolBarManager.getItems();for(int i = 0;i < coolitems.length; i++) {IContributionItem item = coolitems[i];String id = item.getId();if (id == null) {menuManager.remove(item);continue;}if(!id.startsWith(MenuConst.COOL_MENU_ID_PREFIX)) {coolBarManager.remove(item);}}}

其中MenuConst中定义如下:

package com.xzbd.constants;public class MenuConst {// 主菜单ID前缀public static final String MAIN_MENU_ID_PREFIX = "xzbd.epx.main.menu";// CoolBar 菜单ID前缀public static final String COOL_MENU_ID_PREFIX = "xzbd.epx.cool.menu";
}

自定义菜单项

如分析在 ApplicationActionBarAdvisor中重写 fillCoolBar 即可。

@Overrideprotected void fillCoolBar(ICoolBarManager coolBar) {super.fillCoolBar(coolBar);// 添加文件相关快捷菜单coolBar.add(buildFileCoolBarMenus());// 添加分享相关菜单coolBar.add(buildShareFileCoolBarMenus());}/*** 构建File菜单* @return*/private ToolBarContributionItem buildFileCoolBarMenus() {ToolBarContributionItem fileToolBar = buildToolBarContributionItem();fileToolBar.setId(CoolMenu.FILE.getId());IToolBarManager fileMenu = fileToolBar.getToolBarManager();fileMenu.add(new Separator());closeAction.setText("关闭");fileMenu.add(closeAction);closeAllAction.setText("关闭所有");fileMenu.add(closeAllAction);fileMenu.add(new Separator());fileMenu.add(saveAction);fileMenu.add(saveAsAction);fileMenu.add(saveAllAction);fileMenu.add(new Separator());fileMenu.add(printAction);fileMenu.add(new Separator());fileMenu.add(getAction(ActionFactory.IMPORT.getId()));fileMenu.add(getAction(ActionFactory.EXPORT.getId()));return fileToolBar;}private ToolBarContributionItem buildToolBarContributionItem() {return new ToolBarContributionItem(new ToolBarManager(SWT.FLAT | SWT.LEFT));} /*** 构建File菜单* @return*/private ToolBarContributionItem buildShareFileCoolBarMenus() {ToolBarContributionItem fileToolBar = buildToolBarContributionItem();fileToolBar.setId(CoolMenu.SHIRE.getId());IToolBarManager fileMenu = fileToolBar.getToolBarManager();fileMenu.add(new NavMenuAction01());fileMenu.add(new NavMenuAction02());fileMenu.add(new NavMenuAction03());return fileToolBar;}

效果

更多代码见项目: epx

Eclipse插件(RCP)自定义工作台快捷菜单栏相关推荐

  1. 使用基于 Eclipse 插件框架的 ODA(Open Data Access)进行自定义数据驱动开发

    ODA 之所以能够有如此强的灵活性,是因为: 它提供了一套完整的接口,开发者可以自己去实现数据源的访问逻辑,使得数据源对数据使用者变得透明.只要开发者遵循编程规范,就可以对任何数据进行驱动. 它基于 ...

  2. Eclipse插件(RCP)项目搭建

    文章Eclipse插件(RCP)开发环境搭建 和 Eclipse插件(RCP)开发环境搭建(二)介绍了RCP项目开发环境搭建.本文将使用前面打的环境进行第一个RCP项目搭建及运行 目标 搭建一个RCP ...

  3. 编写Eclipse插件教程–第1部分

    Eclipse是三个最受欢迎的Java开发IDE之一. 其成功的原因之一是其可扩展性. 对于任何知道该怎么做并且已经做到的人来说,编写eclipse插件都可以非常轻松快捷. 不幸的是,第一次在Ecli ...

  4. eclipse插件说明

     Properties Editor Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 更多Properties Editor 信息  Colorer T ...

  5. Eclipse插件大全。

    Eclipse的应用需要众多的插件,但是Eclipse的插件大家又知道多少呢?"Eclipse最牛的30个插件"不知道看官们是否了解. 1.PyDev – Eclipse的Pyth ...

  6. 设置ECLIPSE插件注意目录的结构

    1path=F:\\hongjun\\myPlugins\\language 下载的插件文件大多数书压缩文件,解压后得到包含 eclipse 的文件夹(里面有 plugins 和 features 文 ...

  7. 好用的Eclipse 插件

    Eclipse提供了一个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合适的Eclipse插件是非常重要的 ...

  8. Eclipse插件安装的三种方式

    Eclipse插件安装总结通过个人的学习体会,将目前Eclipse插件安装的三种方式,总结如下: 第一种方法很简单,在Eclipse的主目录(%ECLIPSE_HOME%)下有一个plugins目录和 ...

  9. 以links方式安装eclipse插件

    以Links方式来安装插件,安装快捷,升级.移植.管理都很方便.. 一.Links安装插件方法 下面以RSE为例,介绍一下如何用links方式来安装eclipse插件. 假设Eclipse的安装路径是 ...

最新文章

  1. AI市场扩大催生多样化标注需求
  2. JavaScript初学者编程题(4)
  3. if for while until case select 命令
  4. ida动态调试apk(so层)
  5. Swagger UI 与SpringMVC的整合 II
  6. 批处理定时mysql备份数据库_定时备份mysql数据库的批处理
  7. 前端学习(3207):js中的事件绑定
  8. 如何禁止掉root登录,使用key密钥登录
  9. Apache JMeter 测试 HTTP接口
  10. 速进,双十一内购通道!
  11. 基于Springboot+mybatis+lyaui实现学科竞赛管理系统【详细设计--附完整源码】
  12. Windows 7语言包下载
  13. 阿里云短信验证码接口
  14. 极坐标格式下的二维傅里叶变换与逆变换推导
  15. 发布npm包 登录报错 E409 Conflict
  16. jQuery 3D图片切换动画
  17. 语言-汉语-官话-中原官话:中原官话
  18. 某厂机试算法刷题一览
  19. 任务卡_05-数据库_-MySql 高级任务
  20. 本人新书上市 《分布式系统与一致性》

热门文章

  1. 【sklearn报错解决方案】UndefinedMetricWarning: Precision is ill-defined and being set to 0.0
  2. yoga 使用 鼠标设置
  3. 小米盒子3 增强版 体验
  4. Typecho主题Fantasy幻想动漫风格UI模板
  5. 解决STM32 PWM有输出波形,但是舵机(DS3115)不动问题
  6. 【Linux0.11代码分析】02 之 bootsect.s 启动流程
  7. 小米AI音箱发布,但它哪里不对?
  8. bigquant量化平台数据精准吗?
  9. 丽笙酒店集团2020年亚太区新签84间酒店;复星旅文集团旗下潮流度假品牌进驻中国 | 美通企业日报...
  10. 1520:厦大百年校庆-2