Eclipse插件(RCP)自定义工作台快捷菜单栏
目标
Eclipse插件(RCP)自定义工作台主菜单栏解决了主菜单栏的问题,本节讲述如何自定义工作台快捷菜单栏(MenuToolBar)。快捷栏也叫工具菜单条(MenuToolBar),其位置如下图所示:
分析
默认情况下新建的Plugin项目是不显示快捷菜单栏的,需要在窗口打开前进行配置。可在ApplicationWorkbenchWindowAdvisor
构造方法处配置,也可在重写方法preWindowOpen
中配置,还可以在重写方法postWindowOpen
中配置。
快捷菜单显示后先去除自带的快捷栏菜单。
快捷菜单应在 ApplicationActionBarAdvisor
的 fillCoolBar
方法中配置。
实现
显示
首先使得工作台展示快捷菜单栏。
- 构造方法中配置
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)自定义工作台快捷菜单栏相关推荐
- 使用基于 Eclipse 插件框架的 ODA(Open Data Access)进行自定义数据驱动开发
ODA 之所以能够有如此强的灵活性,是因为: 它提供了一套完整的接口,开发者可以自己去实现数据源的访问逻辑,使得数据源对数据使用者变得透明.只要开发者遵循编程规范,就可以对任何数据进行驱动. 它基于 ...
- Eclipse插件(RCP)项目搭建
文章Eclipse插件(RCP)开发环境搭建 和 Eclipse插件(RCP)开发环境搭建(二)介绍了RCP项目开发环境搭建.本文将使用前面打的环境进行第一个RCP项目搭建及运行 目标 搭建一个RCP ...
- 编写Eclipse插件教程–第1部分
Eclipse是三个最受欢迎的Java开发IDE之一. 其成功的原因之一是其可扩展性. 对于任何知道该怎么做并且已经做到的人来说,编写eclipse插件都可以非常轻松快捷. 不幸的是,第一次在Ecli ...
- eclipse插件说明
Properties Editor Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 更多Properties Editor 信息 Colorer T ...
- Eclipse插件大全。
Eclipse的应用需要众多的插件,但是Eclipse的插件大家又知道多少呢?"Eclipse最牛的30个插件"不知道看官们是否了解. 1.PyDev – Eclipse的Pyth ...
- 设置ECLIPSE插件注意目录的结构
1path=F:\\hongjun\\myPlugins\\language 下载的插件文件大多数书压缩文件,解压后得到包含 eclipse 的文件夹(里面有 plugins 和 features 文 ...
- 好用的Eclipse 插件
Eclipse提供了一个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合适的Eclipse插件是非常重要的 ...
- Eclipse插件安装的三种方式
Eclipse插件安装总结通过个人的学习体会,将目前Eclipse插件安装的三种方式,总结如下: 第一种方法很简单,在Eclipse的主目录(%ECLIPSE_HOME%)下有一个plugins目录和 ...
- 以links方式安装eclipse插件
以Links方式来安装插件,安装快捷,升级.移植.管理都很方便.. 一.Links安装插件方法 下面以RSE为例,介绍一下如何用links方式来安装eclipse插件. 假设Eclipse的安装路径是 ...
最新文章
- AI市场扩大催生多样化标注需求
- JavaScript初学者编程题(4)
- if for while until case select 命令
- ida动态调试apk(so层)
- Swagger UI 与SpringMVC的整合 II
- 批处理定时mysql备份数据库_定时备份mysql数据库的批处理
- 前端学习(3207):js中的事件绑定
- 如何禁止掉root登录,使用key密钥登录
- Apache JMeter 测试 HTTP接口
- 速进,双十一内购通道!
- 基于Springboot+mybatis+lyaui实现学科竞赛管理系统【详细设计--附完整源码】
- Windows 7语言包下载
- 阿里云短信验证码接口
- 极坐标格式下的二维傅里叶变换与逆变换推导
- 发布npm包 登录报错 E409 Conflict
- jQuery 3D图片切换动画
- 语言-汉语-官话-中原官话:中原官话
- 某厂机试算法刷题一览
- 任务卡_05-数据库_-MySql 高级任务
- 本人新书上市 《分布式系统与一致性》
热门文章
- 【sklearn报错解决方案】UndefinedMetricWarning: Precision is ill-defined and being set to 0.0
- yoga 使用 鼠标设置
- 小米盒子3 增强版 体验
- Typecho主题Fantasy幻想动漫风格UI模板
- 解决STM32 PWM有输出波形,但是舵机(DS3115)不动问题
- 【Linux0.11代码分析】02 之 bootsect.s 启动流程
- 小米AI音箱发布,但它哪里不对?
- bigquant量化平台数据精准吗?
- 丽笙酒店集团2020年亚太区新签84间酒店;复星旅文集团旗下潮流度假品牌进驻中国 | 美通企业日报...
- 1520:厦大百年校庆-2