Skip to content

Commit

Permalink
Improved Groovy method override completion code as suggested
Browse files Browse the repository at this point in the history
  • Loading branch information
jmartinesp committed Feb 3, 2015
1 parent 69a4e06 commit 7befb3d
Showing 1 changed file with 7 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.icons.AllIcons;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.psi.*;
import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.util.PsiFormatUtil;
Expand All @@ -31,6 +30,7 @@
import com.intellij.util.VisibilityUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.lang.completion.handlers.GroovyMethodOverrideHandler;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinitionBody;

import javax.swing.*;
import java.util.Collection;
Expand All @@ -47,21 +47,16 @@ class GrMethodOverrideCompletionProvider extends CompletionProvider<CompletionPa
protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) {
PsiElement position = parameters.getPosition();

if(psiElement()
.inside(PsiClass.class)
.accepts(position)) {
PsiClass currentClass = PsiTreeUtil.getParentOfType(position, PsiClass.class);

PsiClass currentClass = PsiTreeUtil.getParentOfType(position, PsiClass.class);

if (currentClass != null) {
addSuperMethods(currentClass, result, false);
addSuperMethods(currentClass, result, true);
}
if (currentClass != null) {
addSuperMethods(currentClass, result, false);
addSuperMethods(currentClass, result, true);
}
}

public static void register(CompletionContributor contributor) {
contributor.extend(CompletionType.BASIC, PlatformPatterns.psiElement(PsiElement.class), new GrMethodOverrideCompletionProvider());
contributor.extend(CompletionType.BASIC, psiElement().withParent(GrTypeDefinitionBody.class), new GrMethodOverrideCompletionProvider());
}

private void addSuperMethods(final PsiClass psiClass, CompletionResultSet completionResultSet, boolean implement) {
Expand Down Expand Up @@ -89,7 +84,7 @@ private LookupElementBuilder createLookUpElement(final PsiMethod method, PsiSubs

PsiType type = substitutor.substitute(method.getReturnType());

String parentClassName = currentClass == null ? "" : ((PsiNamedElement) currentClass).getName();
String parentClassName = currentClass == null ? "" : currentClass.getName();

String signature = modifiers + (type == null ? "" : type.getPresentableText() + " ") + method.getName();

Expand Down

0 comments on commit 7befb3d

Please sign in to comment.