From 4f72cd2fee55f85f900fed8b0b04f7a9dd982b7a Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 7 Sep 2012 18:08:59 +0400 Subject: [PATCH] Refactor - subclass PositionElementFilter and don't implement isClassAcceptable --- .../JetKeywordCompletionContributor.java | 50 ++++--------------- 1 file changed, 10 insertions(+), 40 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java index b6bd802afe9..8f98683e51b 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java @@ -78,7 +78,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor { private static final String IF_TEMPLATE = "if (<##>) {\n<##>\n}"; private static final String IF_ELSE_TEMPLATE = "if (<##>) {\n<##>\n} else {\n<##>\n}"; - private static final String IF_ELSE_ONELINE_TEMPLATE = "if (<##>) <##> else <##>"; + private static final String IF_ELSE_ONE_LINE_TEMPLATE = "if (<##>) <##> else <##>"; private static final String FUN_TEMPLATE = "fun <##>(<##>) : <##> {\n<##>\n}"; private static final String VAL_SIMPLE_TEMPLATE = "val <##> = <##>"; private static final String VAL_WITH_TYPE_TEMPLATE = "val <##> : <##> = <##>"; @@ -129,57 +129,37 @@ public class JetKeywordCompletionContributor extends CompletionContributor { } } - private static class InTopFilter implements ElementFilter { + private static class InTopFilter extends PositionElementFilter { @Override public boolean isAcceptable(Object element, PsiElement context) { //noinspection unchecked return PsiTreeUtil.getParentOfType(context, JetFile.class, false, JetClassBody.class, JetBlockExpression.class, JetFunction.class) != null && - PsiTreeUtil.getParentOfType(context, JetParameterList.class, JetTypeParameterList.class) == null; - } - - @Override - public boolean isClassAcceptable(Class hintClass) { - return true; + PsiTreeUtil.getParentOfType(context, JetParameterList.class, JetTypeParameterList.class, JetClass.class) == null; } } - private static class InNonClassBlockFilter implements ElementFilter { + private static class InNonClassBlockFilter extends PositionElementFilter { @Override public boolean isAcceptable(Object element, PsiElement context) { //noinspection unchecked return PsiTreeUtil.getParentOfType(context, JetBlockExpression.class, true, JetClassBody.class) != null; } - - @Override - public boolean isClassAcceptable(Class hintClass) { - return true; - } } - private static class InParametersFilter implements ElementFilter { + private static class InParametersFilter extends PositionElementFilter { @Override public boolean isAcceptable(Object element, PsiElement context) { return PsiTreeUtil.getParentOfType(context, JetParameterList.class, false) != null; } - - @Override - public boolean isClassAcceptable(Class hintClass) { - return true; - } } - private static class InClassBodyFilter implements ElementFilter { + private static class InClassBodyFilter extends PositionElementFilter { @Override public boolean isAcceptable(Object element, PsiElement context) { //noinspection unchecked return PsiTreeUtil.getParentOfType(context, JetClassBody.class, true, JetBlockExpression.class, JetProperty.class, JetParameterList.class) != null; } - - @Override - public boolean isClassAcceptable(Class hintClass) { - return true; - } } private static class AfterClassInClassBodyFilter extends InClassBodyFilter { @@ -198,7 +178,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor { } } - private static class InPropertyBodyFilter implements ElementFilter { + private static class InPropertyBodyFilter extends PositionElementFilter { @Override public boolean isAcceptable(Object element, PsiElement context) { if (!(element instanceof PsiElement)) return false; @@ -206,11 +186,6 @@ public class JetKeywordCompletionContributor extends CompletionContributor { return property != null && isAfterName(property, (PsiElement) element); } - @Override - public boolean isClassAcceptable(Class hintClass) { - return true; - } - private static boolean isAfterName(@NotNull JetProperty property, @NotNull PsiElement element) { for (PsiElement child = property.getFirstChild(); child != null; child = child.getNextSibling()) { if (PsiTreeUtil.isAncestor(child, element, false)) { @@ -226,16 +201,11 @@ public class JetKeywordCompletionContributor extends CompletionContributor { } } - private static class InWhenFilter implements ElementFilter { + private static class InWhenFilter extends PositionElementFilter { @Override public boolean isAcceptable(Object element, PsiElement context) { return PsiTreeUtil.getParentOfType(context, JetWhenExpression.class, false) != null; } - - @Override - public boolean isClassAcceptable(Class hintClass) { - return true; - } } private static class SimplePrefixMatcher extends PrefixMatcher { @@ -341,12 +311,12 @@ public class JetKeywordCompletionContributor extends CompletionContributor { TRAIT_TEMPLATE, CLASS_TEMPLATE, CLASS_OBJECT_TEMPLATE, ENUM_CLASS_TEMPLATE); registerScopeKeywordsCompletion(new InNonClassBlockFilter(), - IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONELINE_TEMPLATE, + IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONE_LINE_TEMPLATE, FUN_TEMPLATE, VAL_SIMPLE_TEMPLATE, VAR_SIMPLE_TEMPLATE, TRAIT_TEMPLATE, CLASS_TEMPLATE, FOR_TEMPLATE, WHEN_TEMPLATE, WHILE_TEMPLATE, DO_WHILE_TEMPLATE, ENUM_CLASS_TEMPLATE); registerScopeKeywordsCompletion(new InPropertyBodyFilter(), - IF_ELSE_ONELINE_TEMPLATE, WHEN_TEMPLATE); + IF_ELSE_ONE_LINE_TEMPLATE, WHEN_TEMPLATE); registerScopeKeywordsCompletion(new AfterClassInClassBodyFilter(), false, CLASS_OBJECT_WITHOUT_CLASS_TEMPLATE); }