Minor: cleanup ChangePackageIntention
This commit is contained in:
+11
-6
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user