From 3007b11973e4bbd4a0e5f65694a27dd5c1aecb49 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 7 Apr 2017 16:30:05 +0300 Subject: [PATCH] Move: Use MoveFilesWithDeclarationProcessor for files & directories --- .../MoveFilesWithDeclarationsProcessor.kt | 14 +++---- .../idea/refactoring/move/moveFilesUtil.kt | 42 ++++++------------- 2 files changed, 19 insertions(+), 37 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveFilesWithDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveFilesWithDeclarationsProcessor.kt index 2153ab5d089..f29ecccc97a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveFilesWithDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveFilesWithDeclarationsProcessor.kt @@ -21,6 +21,7 @@ import com.intellij.openapi.util.EmptyRunnable import com.intellij.openapi.util.Ref import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile import com.intellij.refactoring.move.MoveCallback import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesProcessor import com.intellij.usageView.UsageInfo @@ -28,11 +29,10 @@ import com.intellij.usageView.UsageViewDescriptor import com.intellij.usageView.UsageViewUtil import com.intellij.util.containers.MultiMap import com.intellij.util.text.UniqueNameGenerator -import org.jetbrains.kotlin.psi.KtFile class MoveFilesWithDeclarationsProcessor @JvmOverloads constructor ( project: Project, - private val sourceFiles: List, + private val elementsToMove: List, private val targetDirectory: PsiDirectory, private val targetFileName: String?, searchInComments: Boolean, @@ -40,7 +40,7 @@ class MoveFilesWithDeclarationsProcessor @JvmOverloads constructor ( moveCallback: MoveCallback?, prepareSuccessfulCallback: Runnable = EmptyRunnable.INSTANCE ) : MoveFilesOrDirectoriesProcessor(project, - sourceFiles.toTypedArray(), + elementsToMove.toTypedArray(), targetDirectory, true, searchInComments, @@ -48,11 +48,11 @@ class MoveFilesWithDeclarationsProcessor @JvmOverloads constructor ( moveCallback, prepareSuccessfulCallback) { override fun getCommandName(): String { - return if (targetFileName != null) "Move " + sourceFiles.single().name else "Move" + return if (targetFileName != null) "Move " + (elementsToMove.single() as PsiFile).name else "Move" } override fun createUsageViewDescriptor(usages: Array): UsageViewDescriptor { - return MoveFilesWithDeclarationsViewDescriptor(sourceFiles.toTypedArray(), targetDirectory) + return MoveFilesWithDeclarationsViewDescriptor(elementsToMove.toTypedArray(), targetDirectory) } override fun preprocessUsages(refUsages: Ref>): Boolean { @@ -75,7 +75,7 @@ class MoveFilesWithDeclarationsProcessor @JvmOverloads constructor ( private fun renameFileTemporarily() { if (targetFileName == null || targetDirectory.findFile(targetFileName) == null) return - val sourceFile = sourceFiles.single() + val sourceFile = elementsToMove.single() as PsiFile val temporaryName = UniqueNameGenerator.generateUniqueName("temp", "", ".kt") { sourceFile.containingDirectory!!.findFile(it) == null } @@ -93,7 +93,7 @@ class MoveFilesWithDeclarationsProcessor @JvmOverloads constructor ( } finally { if (needTemporaryRename) { - sourceFiles.single().name = targetFileName!! + (elementsToMove.single() as PsiFile).name = targetFileName!! } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt index abd1445cb8e..e9f204a832d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt @@ -26,14 +26,12 @@ import com.intellij.refactoring.RefactoringBundle import com.intellij.refactoring.copy.CopyFilesOrDirectoriesHandler import com.intellij.refactoring.move.MoveCallback import com.intellij.refactoring.move.MoveHandler -import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesProcessor import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil import com.intellij.refactoring.util.CommonRefactoringUtil import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.idea.refactoring.isInJavaSourceRoot import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveFilesWithDeclarationsProcessor import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.KotlinAwareMoveFilesOrDirectoriesDialog -import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.KtElement @@ -51,7 +49,7 @@ fun invokeMoveFilesOrDirectoriesRefactoring( } project.executeCommand(MoveHandler.REFACTORING_NAME) { - val selectedDir = if (moveDialog != null) moveDialog.targetDirectory else initialTargetDirectory + val selectedDir = (if (moveDialog != null) moveDialog.targetDirectory else initialTargetDirectory) ?: return@executeCommand val updatePackageDirective = (moveDialog as? KotlinAwareMoveFilesOrDirectoriesDialog)?.updatePackageDirective try { @@ -72,40 +70,24 @@ fun invokeMoveFilesOrDirectoriesRefactoring( ) elementsToMove.forEach { - MoveFilesOrDirectoriesUtil.checkMove(it, selectedDir!!) + MoveFilesOrDirectoriesUtil.checkMove(it, selectedDir) if (it is KtFile && it.isInJavaSourceRoot()) { it.updatePackageDirective = updatePackageDirective } } - val enableSearchReferences = elements.any { ProjectRootsUtil.isInProjectSource(it) } - if (elementsToMove.isNotEmpty()) { @Suppress("UNCHECKED_CAST") - val processor = if (elementsToMove.all { it is KtFile } && selectedDir != null) { - MoveFilesWithDeclarationsProcessor( - project, - elementsToMove as List, - selectedDir, - null, - false, - false, - moveCallback, - Runnable(::closeDialog) - ) - } - else { - MoveFilesOrDirectoriesProcessor( - project, - elementsToMove.toTypedArray(), - selectedDir, - enableSearchReferences, - false, - false, - moveCallback, - Runnable(::closeDialog) - ) - } + val processor = MoveFilesWithDeclarationsProcessor( + project, + elementsToMove as List, + selectedDir, + null, + false, + false, + moveCallback, + Runnable(::closeDialog) + ) processor.run() } else {