Наше приложение Eclipse RCP было изначально создано в эпоху 3.1 / 3.2 и работало на 3.2, пока мы недавно не переключились на 3.6.Его IApplication
проходит через PlatformUI.createAndRunWorkbench(...)
.WorkbenchAdvisor
, который мы передаем этой функции, переопределяет createWorkbenchWindowAdvisor(...)
, чтобы вернуть WorkbenchWindowAdvisor
, чье createActionBarAdvisor(...)
возвращает ActionBarAdvisor
.
Это ActionBarAdvisor
'makeActions(...)
создает и register()
saгруппа org.eclipse.jface.action.Action
s, многие из которых в своих конструкторах делают что-то вроде setAccelerator(SWT.CTRL | 'O');
.Action
s впоследствии устанавливаются в ActionBarAdvisor
fillMenuBar(...)
и fillCoolBar(...)
методах.
Проблема, с которой мы сталкиваемся (теперь, когда мы работаем на Eclipse RCP 3.6), заключается в том, что эти ускорители не работают.кажется, что они активны до тех пор, пока не отобразятся их меню (даже если не будет предпринято никаких действий, кроме закрытия меню).
Мы видим соответствующую ошибку , но испытываем некоторые трудности с пониманием того, какприменить его средство правовой защиты в нашей ситуации.Мы понимаем, что вместо Action
s мы «должны» использовать команды, обработчики и привязки клавиш.Но мы надеемся, что нам пока не нужно идти по этому пути.
Как мы можем заставить наши ускорители «работать», как только приложение запустится?