我工作的一个基于Eclipse RCP的应用程序,我们已经决定,我们不希望任何菜单项显示在文本旁边的图标。我们所看到的问题是,等所有标准操作,如撤消,恢复,剪切,复制,粘贴显示默认图标的对应动作。

有没有办法告诉动作管理基础忽视的图标?我的蛮力解决方案,这是重建SWT使MenuItem.setImage()是一个空操作,然后包括我们自己在最终产品中的SWT的副本,但似乎应该有一个轻量级的解决方案

有帮助吗?

解决方案

这被证明是更容易比我所希望的。

创建org.eclipse.ui.application.ActionBarAdvisor的子类。覆盖的方法的寄存器:

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

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

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

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

其他提示

我相信你想进一步检查进入清单,展望 的org.eclipse.ui.views,看是否存在有什么用于去除图标

什么是不包括图标的原因是什么? 很多的努力进入创造一个标准接口,这将是从标准不同的利益?你认为他们的不作为增加可用性?

说了这么多,你可以尝试有助于片段与一些的AspectJ around通知拦截到setImage(呼叫)和否决他们。

您可以通过转到延伸突出plugin.xml.add扩展org.eclipse.ui.menu(如果不存在).Right单击创建新的菜单contribution.again右键做到这一点,创建一个新的菜单。这里u必须改变图像的选项与那些在你的类路径保存在您的图标文件夹

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top