2009-12-22 2 views
3

Я расширяю Eclipse, используя инфраструктуру плагина Eclipse, и у меня возникла проблема. Я не могу понять, как обойти:Как программно определить привязку клавиш для commnand для плагинов eclipse?

У меня есть команда с горячей клавишей. У меня также есть редактор, который должен украсть привязки клавиш из Eclipse (отключить ключевой фильтр в IBindingService). Тем не менее, эта команда «важна» настолько, что для нее по-прежнему нужна горячая клавиша. В настоящее время в этом конкретном редакторе, в той части, где я слушаю ключевые события, я проверяю, что является привязкой по умолчанию для этой команды и вручную запускает ее, если она ее обнаруживает. Очевидной проблемой для этого является то, что если привязка ключа к команде изменена, она по-прежнему использует привязку по умолчанию только в этом редакторе. Есть ли способ, с помощью которого я могу легко получить доступ к привязке ключей к определенной команде, чтобы я мог проверить это, а не просто по умолчанию?

Я понимаю, что это решение не переносится между разными редакторами, но это единственный редактор, о котором я должен беспокоиться об этом, поэтому я действительно не против специального корпуса этого.

ответ

5

Вы должны использовать org.eclipse.ui.keys.IBindingService получить это немного сложнее, через org.eclipse.ui.PlatformUI:

IBindingService bindingService = (IBindingService) PlatformUI.getWorkbench().getAdapter(IBindingService.class); 
bindingService.getBestActiveBindingFormattedFor(CMDID); 

CMDID является идентификатор команды, как вы определили в вашем plugin.xml.

+0

Удивительно, это сработало отлично. Вместо этого я использовал getActiveBindings, потому что я хотел, чтобы он взял все привязки, но теперь он работает. Благодаря! – DivineWolfwood

Смежные вопросы