Choose between open declaration/implementation on Ctrl + click in IntelliJ IDEA

Intellij IdeaKeymappingIntellij 14

Intellij Idea Problem Overview


Details:

  • IDE: IntelliJ IDEA 14
  • O.S.:: Windows 7

If I want to navigate to the declaration of a method I can choose one of the following approaches:

  • press Ctrl + left click
  • right click > Go To > Declaration
  • press Ctrl + B

If I want to navigate to the implementation of a method I can choose one of the following approaches:

  • press Ctrl + Alt + left click
  • right click > Go To > Implementation(s)
  • press Ctrl + Alt + B

In Eclipse, if I press Ctrl and the mouse is over a method, a popup appears and I can choose what to do (go to Implementation/Declaration). If I press "left click" ( Ctrl is still pressed ) the first option will be chosen.

enter image description here

How can I achieve the same / a similar behavior in IntelliJ IDEA ?

Intellij Idea Solutions


Solution 1 - Intellij Idea

There is not a built-in option for this. You would need to configure a custom quick list to do such.

  1. Open the Settings dialog and go to "Quick Lists" (It's under "Appearance & Behavior" in IDEA 14)
  2. Click the add button enter image description here to the right of the middle pane
  3. Give your list a name
  4. Click the add button enter image description here to the right of the far right pane (where is reads "no actions")
  5. Add the Go to Declaration action (Main Menu > Navigate > Go to Declaration)
  6. Add the Go to Implementation(s) action (Main Menu > Navigate > Go to Implementation(s))
  7. Click Apply
  8. Go to Keymap in the settings
  9. Under the "Quick List" node, find the Quick List you just created and map a short-cut (keyboard or mouse) to it. You can, of course, remap one of the shortcuts used by the Go to Declaration or the Go to Implementation(s) action
  10. Click OK to close out of the settings and give it a try.

Note that in the quick list that opens, you will have numbers next to each action for quick selection.

Edit: Adding a screenshot of final quick list for additional clarity

enter image description here

Solution 2 - Intellij Idea

I was looking for the same thing, because I was also used to it in Eclipse. Nevertheless, in 99% of the cases, I went to the implementation. If that's your case too, you may consider changing the Ctrl+click shortcut in IntelliJ:

  • Open File → Settings... → Keymap
  • Search for "implementation", and identify the item "Main menu → Navigate → Implementation(s)" in the list
  • Right-click the item and choose "Add Mouse Shortcut"
  • Add the Ctrl+click shortcut by making a Ctrl+left click on the window
  • When hitting the OK button, you have two choises :
  • Remove the existing shortcut (opening the declaration)
  • Leave the existing shortcut : In that case, when using then Ctrl+click, both the declaration and the implementation will be opened (at least when they are in different files)

I know this answer comes like 2 years too late, but hopefully it may help others?

EDIT : This shortcut also applies when you want to navigate to the declaration of a super class. Therefore, my "99%" first declared above drops a bit. I've added the ctrl + right-click as a shortcut to go the declaration (which conflicts with no other shortcut - but you need a mouse with at least two buttons...).

Solution 3 - Intellij Idea

If you select the method and hit Ctrl+T it will show the implementations of the methods. You can click on the options to navigate to that implemented method. Hope this helps.

Solution 4 - Intellij Idea

My IntelliJ (2016.2) shows the declaration of a method (in a PHP interface) as one of the implementations in the implementation popup, so maybe you can do this all from the Implementations popup now.

Solution 5 - Intellij Idea

On mac you can open the implementation(s) with command + option + click. Right -click on the method and check "go to" for the other options and shortcuts you might need.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionROMANIA_engineerView Question on Stackoverflow
Solution 1 - Intellij IdeaJavaruView Answer on Stackoverflow
Solution 2 - Intellij IdeaNedorotView Answer on Stackoverflow
Solution 3 - Intellij IdeaSabarishView Answer on Stackoverflow
Solution 4 - Intellij IdeaDavid MannView Answer on Stackoverflow
Solution 5 - Intellij IdeaGismo RanasView Answer on Stackoverflow