From df915d86852a1ae1af3778322f61f57afc4bb7c8 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 2 May 2018 11:37:04 +0200 Subject: [PATCH] IDEA-188425 Add getInstance option in completion popup --- .../completion/JavaMemberNameCompletionContributor.java | 8 ++++++++ .../completion/normal/SuggestGetInstanceMethodName.java | 3 +++ .../normal/SuggestGetInstanceMethodName_after.java | 3 +++ .../codeInsight/completion/NormalCompletionTest.groovy | 2 ++ 4 files changed, 16 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java index f79f0770b2f3..1a9fdc5f6b7f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java @@ -364,6 +364,14 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor { .withInsertHandler(ParenthesesInsertHandler.NO_PARAMETERS)); } + if (element instanceof PsiField && ((PsiField)element).hasModifierProperty(PsiModifier.STATIC) && + ourClassParent.equals(PsiUtil.resolveClassInClassTypeOnly(((PsiField)element).getType()))) { + set.add(LookupElementBuilder.create("getInstance") + .withIcon(PlatformIcons.METHOD_ICON) + .withTailText("()") + .withInsertHandler(ParenthesesInsertHandler.WITH_PARAMETERS)); + + } addLookupItems(set, null, matcher, element.getProject(), getUnresolvedReferences(ourClassParent, true)); addLookupItems(set, null, matcher, element.getProject(), getPropertiesHandlersNames( diff --git a/java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName.java b/java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName.java new file mode 100644 index 000000000000..55fe7f76ac3c --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName.java @@ -0,0 +1,3 @@ +public class Util { + static Util getI +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName_after.java b/java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName_after.java new file mode 100644 index 000000000000..65a57970e496 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/SuggestGetInstanceMethodName_after.java @@ -0,0 +1,3 @@ +public class Util { + static Util getInstance() +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index 18fd48cfa94d..fd4d816ddaa1 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -1850,4 +1850,6 @@ class Bar {{ doTest('\n') } + void testSuggestGetInstanceMethodName() { doTest() } + }