From f038a2d1d816a5c2dd0f52a5234539d61271a0fc Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 8 Apr 2015 14:23:20 +0300 Subject: [PATCH] In-place Introduce: Track active instance of KotlinInplaceVariableIntroducer --- .../KotlinInplaceVariableIntroducer.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinInplaceVariableIntroducer.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinInplaceVariableIntroducer.java index f00d4662637..f52e4c1aef3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinInplaceVariableIntroducer.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinInplaceVariableIntroducer.java @@ -27,10 +27,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.Balloon; -import com.intellij.openapi.util.Pair; -import com.intellij.openapi.util.Pass; -import com.intellij.openapi.util.Ref; -import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.*; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.SearchScope; @@ -58,6 +55,8 @@ import java.util.LinkedHashSet; import java.util.List; public class KotlinInplaceVariableIntroducer extends InplaceVariableIntroducer { + private static final Key ACTIVE_INTRODUCER = Key.create("ACTIVE_INTRODUCER"); + public static final String TYPE_REFERENCE_VARIABLE_NAME = "TypeReferenceVariable"; public static final String PRIMARY_VARIABLE_NAME = "PrimaryVariable"; @@ -390,6 +389,21 @@ public class KotlinInplaceVariableIntroducer e ); } + @Override + public boolean performInplaceRefactoring(LinkedHashSet nameSuggestions) { + if (super.performInplaceRefactoring(nameSuggestions)) { + myEditor.putUserData(ACTIVE_INTRODUCER, this); + return true; + } + return false; + } + + @Override + public void finish(boolean success) { + super.finish(success); + myEditor.putUserData(ACTIVE_INTRODUCER, null); + } + @Override protected void moveOffsetAfter(boolean success) { if (!myReplaceOccurrence || myExprMarker == null) { @@ -407,4 +421,9 @@ public class KotlinInplaceVariableIntroducer e } } } + + @Nullable + public static KotlinInplaceVariableIntroducer getActiveInstance(@NotNull Editor editor) { + return editor.getUserData(ACTIVE_INTRODUCER); + } }