diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/refactoringTesting/cases/MoveKotlinDeclarationsHandlerTestActions.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/refactoringTesting/cases/MoveKotlinDeclarationsHandlerTestActions.kt index 4a68973df4e..9a669bb4437 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/refactoringTesting/cases/MoveKotlinDeclarationsHandlerTestActions.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/refactoringTesting/cases/MoveKotlinDeclarationsHandlerTestActions.kt @@ -71,9 +71,7 @@ internal class MoveKotlinDeclarationsHandlerTestActions(private val caseDataKeep private fun KotlinAwareMoveFilesOrDirectoriesModel.testDataString(): String { return "KotlinAwareMoveFilesOrDirectoriesModel:\n" + - "elementsToMove = ${elementsToMove.joinToString { - if (it is PsiFileSystemItem) it.virtualFile.path else it.javaClass.name - }}\n" + + "elementsToMove = ${elementsToMove.joinToString { it.virtualFile.path }}\n" + "directoryName = $targetDirectoryName\n" + "updatePackageDirective = $updatePackageDirective\n" + "searchReferences = $searchReferences" @@ -216,7 +214,7 @@ internal class MoveKotlinDeclarationsHandlerTestActions(private val caseDataKeep override fun invokeKotlinAwareMoveFilesOrDirectoriesRefactoring( project: Project, initialDirectory: PsiDirectory?, - elements: Array, + elements: List, moveCallback: MoveCallback? ) { val targetPath = @@ -226,7 +224,7 @@ internal class MoveKotlinDeclarationsHandlerTestActions(private val caseDataKeep val model = KotlinAwareMoveFilesOrDirectoriesModel( project = project, - elementsToMove = elements.toList(), + elementsToMove = elements, targetDirectoryName = randomDirectoryPathMutator(targetPath), updatePackageDirective = randomBoolean(), searchReferences = randomBoolean(), diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt index 6d5ad1171a1..f53e4e48d6d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt @@ -86,7 +86,7 @@ private val defaultHandlerActions = object : MoveKotlinDeclarationsHandlerAction override fun invokeKotlinAwareMoveFilesOrDirectoriesRefactoring( project: Project, initialDirectory: PsiDirectory?, - elements: Array, + elements: List, moveCallback: MoveCallback? ) = KotlinAwareMoveFilesOrDirectoriesDialog(project, initialDirectory, elements, moveCallback).show() } @@ -159,6 +159,7 @@ class MoveKotlinDeclarationsHandler internal constructor(private val handlerActi } if (elements.all { it is KtFile }) { + val ktFileElements = elements.map { it as KtFile } val initialTargetElement = when { targetContainer is PsiPackage || targetContainer is PsiDirectory -> targetContainer container is PsiPackage || container is PsiDirectory -> container @@ -167,7 +168,7 @@ class MoveKotlinDeclarationsHandler internal constructor(private val handlerActi val initialTargetDirectory = MoveFilesOrDirectoriesUtil.resolveToDirectory(project, initialTargetElement) handlerActions.invokeKotlinAwareMoveFilesOrDirectoriesRefactoring( - project, initialTargetDirectory, elements, callback + project, initialTargetDirectory, ktFileElements, callback ) return true diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt index 48da8a2d3bf..7b8fed3831f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFileSystemItem import com.intellij.refactoring.move.MoveCallback import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile @@ -39,7 +40,7 @@ internal interface MoveKotlinDeclarationsHandlerActions { fun invokeKotlinSelectNestedClassChooser(nestedClass: KtClassOrObject, targetContainer: PsiElement?) fun invokeKotlinAwareMoveFilesOrDirectoriesRefactoring( - project: Project, initialDirectory: PsiDirectory?, elements: Array, moveCallback: MoveCallback? + project: Project, initialDirectory: PsiDirectory?, elements: List, moveCallback: MoveCallback? ) fun showErrorHint(project: Project, editor: Editor?, message: String, title: String, helpId: String?) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt index 91f2579aee0..dba56ab63e2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt @@ -41,7 +41,7 @@ import javax.swing.JComponent class KotlinAwareMoveFilesOrDirectoriesDialog( private val project: Project, private val initialDirectory: PsiDirectory?, - private val psiElements: Array, + private val psiElements: List, private val callback: MoveCallback? ) : DialogWrapper(project, true) { @@ -115,7 +115,7 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( private fun initializeData() { val psiElement = psiElements.singleOrNull() if (psiElement != null) { - val shortenedPath = CopyFilesOrDirectoriesDialog.shortenPath((psiElement as PsiFileSystemItem).virtualFile) + val shortenedPath = CopyFilesOrDirectoriesDialog.shortenPath(psiElement.virtualFile) nameLabel.text = when (psiElement) { is PsiFile -> RefactoringBundle.message("move.file.0", shortenedPath) else -> RefactoringBundle.message("move.directory.0", shortenedPath) @@ -166,7 +166,7 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( PsiManager.getInstance(project).findDirectory(it) } - val elementsToMove: List = directory?.let { existentDirectory -> + val elementsToMove = directory?.let { existentDirectory -> val choice = if (psiElements.size > 1 || psiElements[0] is PsiDirectory) intArrayOf(-1) else null psiElements.filterNot { it is PsiFile && CopyFilesOrDirectoriesHandler.checkFileExist(existentDirectory, choice, it, it.name, "Move") diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesModel.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesModel.kt index ed313f7d19f..a4c2cd04f5a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesModel.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesModel.kt @@ -11,6 +11,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile +import com.intellij.psi.PsiFileSystemItem import com.intellij.refactoring.move.MoveCallback import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil import com.intellij.util.IncorrectOperationException @@ -21,12 +22,11 @@ import org.jetbrains.kotlin.idea.refactoring.move.updatePackageDirective import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile import java.nio.file.InvalidPathException -import java.nio.file.Path import java.nio.file.Paths class KotlinAwareMoveFilesOrDirectoriesModel( val project: Project, - val elementsToMove: List, + val elementsToMove: List, val targetDirectoryName: String, val updatePackageDirective: Boolean, val searchReferences: Boolean, diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.kt index 902e61facc7..17cb641c113 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.kt @@ -23,12 +23,13 @@ import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile class KotlinMoveFilesOrDirectoriesHandler : MoveFilesOrDirectoriesHandler() { - private fun adjustElements(elements: Array): Array? { + private fun adjustElements(elements: Array): Array? { return elements.map { when { - it is PsiFile || it is PsiDirectory -> it + it is PsiFile -> it + it is PsiDirectory -> it it is PsiClass && it.containingClass == null -> it.containingFile - it is KtClassOrObject && it.parent is KtFile -> it.parent + it is KtClassOrObject && it.parent is KtFile -> it.parent as KtFile else -> return null } }.toTypedArray() @@ -41,7 +42,11 @@ class KotlinMoveFilesOrDirectoriesHandler : MoveFilesOrDirectoriesHandler() { return super.canMove(adjustedElements, targetContainer) } - override fun adjustForMove(project: Project, sourceElements: Array, targetElement: PsiElement?): Array? { + override fun adjustForMove( + project: Project, + sourceElements: Array, + targetElement: PsiElement? + ): Array? { return adjustElements(sourceElements) } @@ -71,7 +76,7 @@ class KotlinMoveFilesOrDirectoriesHandler : MoveFilesOrDirectoriesHandler() { return } - KotlinAwareMoveFilesOrDirectoriesDialog(project, initialTargetDirectory, elements, callback).show() + KotlinAwareMoveFilesOrDirectoriesDialog(project, initialTargetDirectory, adjustedElementsToMove, callback).show() } override fun tryToMove(