Reputation: 4356
How do I register an additional handler/action/command for "Open Declaration" (aka F3) in a plugin?
I want to use F3 on String literals in Java code to navigate to the files declaring resource bundle keys. I already have a context menu action ready that does the job. All that's missing is a way to bind it to the key that users are used to.
Extra credit for a complete annotated list of extension points. I'm getting tired of having to spend half a day to find the extension point I have to use for a feature. And by "annotated" I mean more than
Identifier: org.eclipse.ui.workbench.texteditor.quickdiffReferenceProvider
Description: Allows contributors to add reference providers for the quick diff display.
Upvotes: 9
Views: 3051
Reputation: 28757
Unfortunately, there is no extension point for you to extend for this functionality. I recommend that you stop trying to muck around with the Eclipse Command Framework. The JavaEditor does not use that framework to register its commands, and instead, registers commands when the editor is opened. And there is no easy way for third parties to extend/change this.
The action that gets run when F3 is pressed is the org.eclipse.jdt.ui.actions.OpenAction
.
Although there is no easy way to extend or change the JavaEditor, there are ways to do this. The one way that I recommend for your situation is through Equinox Aspects (http://www.eclipse.org/equinox/incubator/aspects/). This allows you to use AspectJ to weave into Eclipse and make changes where you require.
This is how AJDT (http://eclipse.org/ajdt) is able to alter the way JDT works.
In your particular situation, I'd recommend creating a pointcut that targets the instantiation of the OpenAction
class and replace it with an implementation that you create. It delegates to JDT's implementation normally, or it runs your command when you require it.
If this is the kind of solution that you are looking for, then I can expand on exactly how to do this.
Upvotes: 1
Reputation: 10273
Perhaps you know this, but although the F3 keyboard shortcut won't take you to the declaring resource bundle key, there are two similar things that do work:
Obviously, these both require use of the mouse; if you are a keyboard-only kind of person, you might not be happy with these.
This doesn't directly answer your question, but I hope it helps.
Upvotes: 1
Reputation: 31795
See section on keybindings in Eclipse Commands tutorial for detailed instructions how to implement command handlers and bind them to keys, menus and toolbars.
There is a full list of extension points provided in Eclipse help, though you have to drill down to get the full description and code samples. There is also an "Add extension point" wizard in plugin editor, which shows a brief description, link to the full help and for some extension points even have predefined templates.
Upvotes: 1