我正在开发基于Eclipse RCP的应用程序,我们决定不希望任何菜单项在文本旁边显示图标。我们看到的问题是撤消,重做,剪切,复制,粘贴等标准操作都会显示相应操作的默认图标。
有没有办法告诉动作管理基础设施忽略图标?我的强力解决方案是重建SWT,以便MenuItem.setImage()是一个无操作,然后在最终产品中包含我们自己的SWT副本,但似乎应该有一个更轻量级的解决方案
答案 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右键单击并创建一个新菜单。您可以选择使用类路径中图标文件夹中保存的图像更改图像