From c0bd98383ceaa82aaf8ae0de060d6e3a1e28c7b2 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Wed, 24 Dec 2014 23:03:56 +0100 Subject: [PATCH] properly working navigation --- .../lang/java/JavaDocumentationProvider.java | 5 ++-- .../codeInsight/JavaDocumentationTest.groovy | 11 ++++---- .../completion/ClassNameCompletionTest.java | 3 +- .../documentation/DocumentationManager.java | 28 ++++--------------- 4 files changed, 17 insertions(+), 30 deletions(-) diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index 6dc03166d469..cf5eea20c05d 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -478,9 +478,10 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext } @Override - public String generateDoc(PsiElement element, final PsiElement originalElement) { + public String generateDoc(PsiElement element, PsiElement originalElement) { if (element instanceof PsiExpressionList) { element = element.getParent(); // for new Class() or methodCall() proceed from method call or new expression + originalElement = null; } if (element instanceof PsiMethodCallExpression) { return getMethodCandidateInfo((PsiMethodCallExpression)element); @@ -520,7 +521,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.SHOW_PARAMETERS, PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.SHOW_NAME); - createElementLink(sb, targetClass, StringUtil.escapeXml(str)); + createElementLink(sb, constructor, StringUtil.escapeXml(str)); } return CodeInsightBundle.message("javadoc.constructor.candidates", targetClass.getName(), sb); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy index 5218cc733e76..306367f6994b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy @@ -14,7 +14,6 @@ * limitations under the License. */ package com.intellij.codeInsight - import com.intellij.codeInsight.documentation.DocumentationManager import com.intellij.codeInsight.navigation.CtrlMouseHandler import com.intellij.lang.java.JavaDocumentationProvider @@ -40,7 +39,7 @@ class Foo2 {{ originalElement ) - assert doc == """Candidates for new Foo() are:
  Foo()
  Foo(int param)
""" + assert doc == """Candidates for new Foo() are:
  Foo()
  Foo(int param)
""" } public void testConstructorDoc2() { @@ -51,13 +50,15 @@ class Foo2 {{ new Foo() }} ''' - def exprList = PsiTreeUtil.getParentOfType(myFixture.file.findElementAt(myFixture.editor.caretModel.offset), PsiExpressionList.class) + + def elementAt = myFixture.file.findElementAt(myFixture.editor.caretModel.offset) + def exprList = PsiTreeUtil.getParentOfType(elementAt, PsiExpressionList.class) def doc = new JavaDocumentationProvider().generateDoc( exprList, - null + elementAt ) - assert doc == """Candidates for new Foo() are:
  Foo()
  Foo(int param)
""" + assert doc == """Candidates for new Foo() are:
  Foo()
  Foo(int param)
""" } public void testMethodDocWhenInArgList() { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/ClassNameCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/ClassNameCompletionTest.java index 4430f959123d..55772a467963 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/ClassNameCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/ClassNameCompletionTest.java @@ -73,7 +73,8 @@ public class ClassNameCompletionTest extends LightFixtureCompletionTestCase { ); assertEquals(doc, - "Candidates for new Time() are:
  Time()
  Time(long time)
"); + "Candidates for new Time() are:
  Time()
 " + + " Time(long time)
"); } public void testTypeParametersTemplate() throws Exception { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 1e58776b6dd7..e485a812d2ce 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -91,7 +91,6 @@ public class DocumentationManager extends DockablePopupManager myDocInfoHintRef; private Component myPreviouslyFocused = null; @@ -291,20 +290,21 @@ public class DocumentationManager extends DockablePopupManager() { - @Override - public String compute() { - return generateDocumentation(provider); - } - } - ); - if (doc != null) return doc; - } + if (provider instanceof ExternalDocumentationProvider) { final List urls = ApplicationManager.getApplication().runReadAction( new NullableComputable>() { @@ -1106,11 +1095,6 @@ public class DocumentationManager extends DockablePopupManager