From cf78075c971fd850f87b3e66960029cd3dbbf301 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 29 Feb 2012 12:02:19 +0100 Subject: [PATCH] allow override method suggestions on method name only --- .../impl/ImplementAbstractMethodAction.java | 14 +++++++++++++- .../beforeProtectedMethodCaretInside.java | 6 ++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/overrideMethod/beforeProtectedMethodCaretInside.java diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ImplementAbstractMethodAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ImplementAbstractMethodAction.java index 7e88af6c6766..7cc59283d340 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ImplementAbstractMethodAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ImplementAbstractMethodAction.java @@ -54,7 +54,9 @@ public class ImplementAbstractMethodAction extends BaseIntentionAction { PsiClass containingClass = method.getContainingClass(); if (containingClass == null) return false; - if (method.hasModifierProperty(PsiModifier.ABSTRACT) || !method.hasModifierProperty(PsiModifier.PRIVATE)) { + final boolean isAbstract = method.hasModifierProperty(PsiModifier.ABSTRACT); + if (isAbstract || !method.hasModifierProperty(PsiModifier.PRIVATE)) { + if (!isAbstract && !isOnIdentifier(file, offset)) return false; MyElementProcessor processor = new MyElementProcessor(method); if (containingClass.isEnum()) { for (PsiField field : containingClass.getFields()) { @@ -78,6 +80,16 @@ public class ImplementAbstractMethodAction extends BaseIntentionAction { return false; } + private static boolean isOnIdentifier(PsiFile file, int offset) { + final PsiElement psiElement = file.findElementAt(offset); + if (psiElement instanceof PsiIdentifier){ + if (psiElement.getParent() instanceof PsiMethod) { + return true; + } + } + return false; + } + protected String getIntentionName(final PsiMethod method) { return method.hasModifierProperty(PsiModifier.ABSTRACT) ? CodeInsightBundle.message("intention.implement.abstract.method.text", method.getName()) : diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/overrideMethod/beforeProtectedMethodCaretInside.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/overrideMethod/beforeProtectedMethodCaretInside.java new file mode 100644 index 000000000000..662688eb4827 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/overrideMethod/beforeProtectedMethodCaretInside.java @@ -0,0 +1,6 @@ +// "Override method 'foo'" "false" +class Test { + protected void foo(){} +} + +class TImple extends Test {} \ No newline at end of file