English 中文(简体)
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.
问题回答

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.

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.

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.





相关问题
In Eclipse, why doesn t "Show In" appear for non-Java files?

If I have a *java file open, I can right click on the source, scroll down to "Show In (Alt-Shift-W)", and select Navigator. If I have an *xml, *jsp, or pretty much anything besides a Java source ...

Eclipse: Hover broken in debug perspective

Since upgrading Eclipse (Galileo build 20090920-1017), hover in debug no longer displays a variable s value. Instead, hover behaves as if I were in normal Java perspective: alt text http://...

Eclipse smart quotes - like in Textmate

Happy Friday — Does anyone know if eclipse has the notion of smart quotes like Textmate. The way it works is to select some words and quote them by simply hitting the " key? I m a newbie here so be ...

Indentation guide for the eclipse editor

Is there a setting or plugin for eclipse that can show indentation guides in the editor? Something like the Codekana plugin for visual studio (not so fancy is also OK). Important that it works with ...

Adding jar from Eclipse plugin runtime tab

I want to add .jar files for plugin from the Runtime tab of manifest file. When I use the Add... button, I can see only sub-directories of the plugin project. So if I want to add same .jar file to ...

How to copy multiple projects into single folder in eclipse

I have two projects, Project1 and Project2. Now i want to copy this projects into eclipse workspace but i want these projects to be in a single folder like below. Eclipse Workspace -> Project -> ...

Java: Finding out what is using all the memory

I have a java application that runs out of memory, but I have no idea which code is allocating the memory. Is there an application with which I can check this? I use Eclipse.

热门标签