2483afa1867c29aa5b5e2ac8938955f7a5588356
[idea/community.git] / platform / lang-impl / src / com / intellij / codeInsight / navigation / GotoImplementationHandler.java
1 package com.intellij.codeInsight.navigation;
2
3 import com.intellij.codeInsight.TargetElementUtilBase;
4 import com.intellij.openapi.editor.Editor;
5 import com.intellij.openapi.util.Pair;
6 import com.intellij.psi.PsiElement;
7 import com.intellij.psi.PsiFile;
8
9 public class GotoImplementationHandler extends GotoTargetHandler {
10   protected String getFeatureUsedKey() {
11     return "navigation.goto.implementation";
12   }
13
14   protected Pair<PsiElement, PsiElement[]> getSourceAndTargetElements(Editor editor, PsiFile file) {
15     int offset = editor.getCaretModel().getOffset();
16     PsiElement source = TargetElementUtilBase.getInstance().findTargetElement(editor, ImplementationSearcher.getFlags(), offset);
17     PsiElement[] target = new ImplementationSearcher().searchImplementations(editor, source, offset);
18     if (target.length == 0) {
19       return new Pair<PsiElement, PsiElement[]>(source, new PsiElement[] { source });
20     }
21     return new Pair<PsiElement, PsiElement[]>(source, target);
22   }
23
24   protected String getChooserInFileTitleKey(PsiElement sourceElement) {
25     return "goto.implementation.in.file.chooser.title";
26   }
27
28   protected String getChooserTitleKey(PsiElement sourceElement) {
29     return "goto.implementation.chooser.title";
30   }
31
32 }