Minor: cleanup ChangePackageIntention

This commit is contained in:
Dmitry Gridin
2019-05-31 15:26:23 +07:00
parent 4fa83a2fd7
commit f6a61e8034
@@ -23,8 +23,8 @@ import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiDocumentManager
import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils
import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded
import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils
import org.jetbrains.kotlin.idea.intentions.SelfTargetingOffsetIndependentIntention import org.jetbrains.kotlin.idea.intentions.SelfTargetingOffsetIndependentIntention
import org.jetbrains.kotlin.idea.refactoring.hasIdentifiersOnly import org.jetbrains.kotlin.idea.refactoring.hasIdentifiersOnly
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
@@ -32,9 +32,10 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.psi.KtPackageDirective import org.jetbrains.kotlin.psi.KtPackageDirective
class ChangePackageIntention: SelfTargetingOffsetIndependentIntention<KtPackageDirective>(KtPackageDirective::class.java, "Change package") { class ChangePackageIntention :
SelfTargetingOffsetIndependentIntention<KtPackageDirective>(KtPackageDirective::class.java, "Change package") {
companion object { companion object {
private val PACKAGE_NAME_VAR = "PACKAGE_NAME" private const val PACKAGE_NAME_VAR = "PACKAGE_NAME"
} }
override fun isApplicableTo(element: KtPackageDirective) = element.packageNameExpression != null override fun isApplicableTo(element: KtPackageDirective) = element.packageNameExpression != null
@@ -56,7 +57,7 @@ class ChangePackageIntention: SelfTargetingOffsetIndependentIntention<KtPackageD
builder.replaceElement( builder.replaceElement(
nameExpression, nameExpression,
PACKAGE_NAME_VAR, PACKAGE_NAME_VAR,
object: Expression() { object : Expression() {
override fun calculateQuickResult(context: ExpressionContext?) = TextResult(currentName) override fun calculateQuickResult(context: ExpressionContext?) = TextResult(currentName)
override fun calculateResult(context: ExpressionContext?) = TextResult(currentName) override fun calculateResult(context: ExpressionContext?) = TextResult(currentName)
override fun calculateLookupItems(context: ExpressionContext?) = arrayOf(LookupElementBuilder.create(currentName)) override fun calculateLookupItems(context: ExpressionContext?) = arrayOf(LookupElementBuilder.create(currentName))
@@ -71,7 +72,7 @@ class ChangePackageIntention: SelfTargetingOffsetIndependentIntention<KtPackageD
TemplateManager.getInstance(project).startTemplate( TemplateManager.getInstance(project).startTemplate(
editor, editor,
builder.buildInlineTemplate(), builder.buildInlineTemplate(),
object: TemplateEditingAdapter() { object : TemplateEditingAdapter() {
override fun beforeTemplateFinished(state: TemplateState, template: Template?) { override fun beforeTemplateFinished(state: TemplateState, template: Template?) {
enteredName = state.getVariableValue(PACKAGE_NAME_VAR)!!.text enteredName = state.getVariableValue(PACKAGE_NAME_VAR)!!.text
affectedRange = state.getSegmentRange(0) affectedRange = state.getSegmentRange(0)
@@ -84,7 +85,11 @@ class ChangePackageIntention: SelfTargetingOffsetIndependentIntention<KtPackageD
val document = editor.document val document = editor.document
project.executeWriteCommand(text) { project.executeWriteCommand(text) {
document.replaceString(affectedRange!!.startOffset, affectedRange!!.endOffset, FqName(currentName).quoteSegmentsIfNeeded()) document.replaceString(
affectedRange!!.startOffset,
affectedRange!!.endOffset,
FqName(currentName).quoteSegmentsIfNeeded()
)
} }
PsiDocumentManager.getInstance(project).commitDocument(document) PsiDocumentManager.getInstance(project).commitDocument(document)
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document) PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document)