1

我正在开发一个基于 Eclipse RCP 的应用程序,我们决定不希望任何菜单项在文本旁边显示图标。我们看到的问题是,Undo、Redo、Cut、Copy、Paste 等标准操作都显示相应操作的默认图标。

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

4

4 回答 4

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);
}

而已。所有操作将不再有图标。

于 2009-08-04T21:01:23.967 回答
0

我相信您想进一步检查清单并查看 org.eclipse.ui.views 并查看其中是否有用于删除图标的内容

于 2009-07-08T22:05:32.093 回答
0

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

说了这么多,您可以尝试使用一些 AspectJ 围绕建议提供一个片段,以拦截对 setImage() 的调用并否决它们。

于 2009-07-10T10:56:19.227 回答
0

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

于 2011-08-03T13:53:03.980 回答