RCP开发中,顶级菜单/顶级工具栏多出了一些无关的项?
来源:互联网 发布:支付宝支付端口 编辑:程序博客网 时间:2024/04/20 15:57
怎么办?
一检查,其RCP应用中添加了org.eclipse.ui.ide依赖,很显然,这些项是由此插件产生的。
而且很可能是通过org.eclipse.ui.actionSets扩展点配置的menuBarPath产生的。
我们知道,RCP应用的顶级菜单栏,工具栏,状态栏等都是由ActionBarAdvisor的实现类决定的。
好吧。去看看这个类的实现。
protected void fillMenuBar(IMenuManager menuBar) {
MenuManager mHelp = new MenuManager("Help",IWorkbenchActionConstants.M_HELP);//请注意这里,第二个参数(MenuManger的id)
mHelp.add(aboutAction);
menuBar.add(mHelp);
}
fillCoolBar是空实现。
上面标有注释的MenuManager的id正是Eclipse IDE中内置的帮助菜单的ID(help)。
想想,是不是因为此id与内置id相同,而且,因为此内置的MenuManager中添加了很多点位符(插入点)而造成的呢?
试图将其id修改了一下()MenuManager("Help",IWorkbenchActionConstants.M_HELP + "1")。
运行,发现help下的无关菜单都没有了。
但Search,run以及工具栏上的无关项仍然存在。
想了下,是不是可以在WorkbenchWindow打开后将这些项给删掉呢?
也许是一个方法,立即行动。
重写WorkbenchWindowAdvisor实现类的postWindowOpen方法。
@Override
public void postWindowOpen() {
IMenuManager menuManager = getWindowConfigurer().getActionBarConfigurer().getMenuManager();
IContributionItem[] items = menuManager.getItems();
for(int i=0; i<items.length; i++){
System.out.println(items[i].getId());//先将所有contribution的id枚举出来
}
menuManager.remove("org.eclipse.search.menu");//逐个删除
menuManager.remove("org.eclipse.ui.run");
menuManager.update(true);//核心
//针对CoolBar我采取了同样的方式。
ICoolBarManager coolManager = getWindowConfigurer().getActionBarConfigurer().getCoolBarManager();
IContributionItem[] items2 = coolManager.getItems();
for(int i=0; i<items2.length; i++){
System.out.println(items2[i].getId());
}
问题立解。
实际上,由于Eclipse平台的开放性(允许各个插件contribution),当RCP项目变得比较大时,此类情况还是出现
得比较多的,以前就碰到过在首选项中出现了无关项。这一类问题均可能通过这种先枚举出id,然后删除的方式去
解决。
需要进一步了解的问题,这些无关面是在什么时候给加上去的呢?等研究清楚了再写博文呈上。
- RCP开发中,顶级菜单/顶级工具栏多出了一些无关的项?
- 推荐一些顶级的Android开发书籍
- 哥伦比亚新出的免费顶级玉米
- RCP--菜单,工具栏
- wordpress添加顶级菜单
- add_menu_page(添加顶级菜单)
- 五个顶级GWT开发的框架
- 顶级PHP大师的开发原则
- 程序员常去的顶级开发社区
- 十位顶级PHP大师的开发原则
- 程序员常去的顶级开发社区
- 程序员常去的顶级开发社区
- 5个顶级的Android开发库
- 顶级PHP大师的开发原则
- 程序员常去的个顶级开发社区
- Eclipse RCP 中 Part 和 Site、菜单和工具栏
- RCP菜单工具栏编程详细
- 国外顶级开发网站
- SQL 一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决?
- Qt4.7中,线程,信号,事件的一点理解
- java.lang.OutOfMemoryError:bitmap size exceeds VM budget
- HttpService请求缓存问题的解决
- STL----map
- RCP开发中,顶级菜单/顶级工具栏多出了一些无关的项?
- PHP连接LDAP(OpenLDAP和Wins Active Directory)的用法
- 如何去除”点击此处即可开始在 Google+ 上与他人进行分享“
- OpenCV:SURF算法浅析
- 排序算法(Java实现):Shell排序和归并排序
- AlertDialog和AlertDialog.Builder?两者区别
- 一种很勉强的感觉
- 谜题1.6 操作符的优先级和求值顺序
- Ubuntu 11.10更新源地址列表更改方法及下载