我们的Eclipse RCP应用程序最初是在3.1/3.2时代构建的,并且在3.2版本上运行,直到我们最近切换到3.6。其IApplication
通过PlatformUI.createAndRunWorkbench(...)
运行。我们传递给该函数的WorkbenchAdvisor
将覆盖createWorkbenchWindowAdvisor(...)
以返回WorkbenchWindowAdvisor
,其createActionBarAdvisor(...)
返回ActionBarAdvisor
。如何使Eclipse RCP应用程序的键盘快捷键(加速器)在启动后立即工作?
这ActionBarAdvisor
的makeActions(...)
创建和register()
是个一串的org.eclipse.jface.action.Action
S,其中很多做这样的事情在它们的构造setAccelerator(SWT.CTRL | 'O');
。随后将Action
安装在ActionBarAdvisor
的fillMenuBar(...)
和fillCoolBar(...)
方法中。
我们遇到的问题(现在我们在Eclipse RCP 3.6上)是这些加速器在显示菜单(即使除了再次关闭菜单之外没有采取任何操作)之前似乎不活动。
我们看到a relevant bug,但在理解如何将其补救措施应用于我们的情况方面存在一些困难。我们认识到,我们“应该”使用命令,处理程序和键绑定,而不是Action
。但我们希望我们不必走这条路。
应用程序启动后,我们如何才能让我们的加速器“活着”?