Stroboskop
Stroboskop

Reputation: 4356

How can I define a custom action for "Open Declaration" (shortcut F3) in Eclipse

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

Answers (3)

Andrew Eisenberg
Andrew Eisenberg

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

Mike Morearty
Mike Morearty

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:

  • Hovering over the string with the mouse will show you the converted string.
  • Control-clicking the string will jump you to the declaring resource bundle key.

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

Eugene Kuleshov
Eugene Kuleshov

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

Related Questions