From ae6a2d38200dfe98755abfedf645621fe21ecf00 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Thu, 14 Feb 2013 16:08:27 +0400 Subject: [PATCH] Base class for surrounders for statements --- .../statement/KotlinIfSurrounderBase.java | 23 +------- .../statement/KotlinStatementsSurrounder.java | 54 +++++++++++++++++++ 2 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java index 44851a6119c..cc8467b3ef2 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinIfSurrounderBase.java @@ -18,12 +18,10 @@ package org.jetbrains.jet.plugin.codeInsight.surroundWith.statement; import com.intellij.codeInsight.CodeInsightUtilBase; -import com.intellij.lang.surroundWith.Surrounder; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; -import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.JetBlockExpression; @@ -34,30 +32,13 @@ import org.jetbrains.jet.plugin.codeInsight.surroundWith.KotlinSurrounderUtils; import java.lang.String; -public abstract class KotlinIfSurrounderBase implements Surrounder { - - @Override - public boolean isApplicable(@NotNull PsiElement[] elements) { - return true; - } +public abstract class KotlinIfSurrounderBase extends KotlinStatementsSurrounder { @Nullable @Override - public TextRange surroundElements( - @NotNull Project project, @NotNull Editor editor, @NotNull PsiElement[] elements - ) throws IncorrectOperationException { - PsiElement container = elements[0].getParent(); - if (container == null) return null; - return surroundStatements (project, editor, container, elements); - } - - public TextRange surroundStatements(Project project, Editor editor, PsiElement container, PsiElement[] statements) throws IncorrectOperationException{ + protected TextRange surroundStatements(Project project, Editor editor, PsiElement container, PsiElement[] statements) { // TODO extract variables declaration - if (statements.length == 0){ - return null; - } - JetIfExpression ifExpression = (JetIfExpression) JetPsiFactory.createExpression(project, getCodeTemplate()); ifExpression = (JetIfExpression) container.addAfter(ifExpression, statements[statements.length - 1]); diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java new file mode 100644 index 00000000000..93dd50169c1 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/surroundWith/statement/KotlinStatementsSurrounder.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin.codeInsight.surroundWith.statement; + +import com.intellij.lang.surroundWith.Surrounder; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class KotlinStatementsSurrounder implements Surrounder { + + @Override + public boolean isApplicable(@NotNull PsiElement[] elements) { + return elements.length > 0; + } + + @Override + @Nullable + public TextRange surroundElements( + @NotNull Project project, + @NotNull Editor editor, + @NotNull PsiElement[] elements + ) throws IncorrectOperationException { + PsiElement container = elements[0].getParent(); + if (container == null) return null; + return surroundStatements(project, editor, container, elements); + } + + @Nullable + protected abstract TextRange surroundStatements( + final Project project, + final Editor editor, + final PsiElement container, + final PsiElement[] statements + ); +}