如何从基于Eclipse RCP的应用程序中的菜单项中删除图标?

时间:2009-07-08 21:57:12

标签: eclipse-plugin eclipse-rcp rcp

我正在开发基于Eclipse RCP的应用程序,我们决定不希望任何菜单项在文本旁边显示图标。我们看到的问题是撤消,重做,剪切,复制,粘贴等标准操作都会显示相应操作的默认图标。

有没有办法告诉动作管理基础设施忽略图标?我的强力解决方案是重建SWT,以便MenuItem.setImage()是一个无操作,然后在最终产品中包含我们自己的SWT副本,但似乎应该有一个更轻量级的解决方案

4 个答案:

答案 0 :(得分:2)

事实证明这比我希望的要容易。

创建org.eclipse.ui.application.ActionBarAdvisor的子类。像这样重写方法寄存器:

protected void register(IAction action) {
    super.register(action);
    action.setImageDescriptor(null);
}

然后,创建一个覆盖createActionBarAdvisor的org.eclipse.ui.application.WorkbenchWindowAdvisor的子类:

public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
    return new MyActionBarAdvisor(configurer);
}

就是这样。所有操作都将不再有图标。

答案 1 :(得分:0)

我相信你想进一步研究进入清单并进行调查 org.eclipse.ui.views并查看是否有任何内容可以移除图标

答案 2 :(得分:0)

不包含图标的原因是什么? 创建标准接口需要付出很多努力,偏离标准有什么好处?你认为他们的遗漏增加了可用性吗?

说完所有你可以尝试用一些AspectJ提供片段来拦截对setImage()的调用并否决它们。

答案 3 :(得分:0)

您可以通过转到plugin.xml.add中的扩展选项卡扩展org.eclipse.ui.menu(如果不存在)来执行此操作。右键单击创建新菜单contrib.again右键单击并创建一个新菜单。您可以选择使用类路径中图标文件夹中保存的图像更改图像