From c7acd89fad54c4a28ef4d2345a1aaab8b9971b84 Mon Sep 17 00:00:00 2001 From: Vadim Brilyantov Date: Mon, 11 Feb 2019 21:14:39 +0300 Subject: [PATCH] #KT-19799: Add initialDirectory to KotlinAwareMoveFilesOrDirectoriesDialog --- .../moveDeclarations/MoveKotlinDeclarationsHandler.kt | 2 +- .../ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt | 8 +++++++- .../kotlin/idea/refactoring/move/moveFilesUtil.kt | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) 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 38eaa1e09c1..8df70c67eb0 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 @@ -113,7 +113,7 @@ class MoveKotlinDeclarationsHandler : MoveHandlerDelegate() { else -> null } val initialTargetDirectory = MoveFilesOrDirectoriesUtil.resolveToDirectory(project, initialTargetElement) - val dialog = KotlinAwareMoveFilesOrDirectoriesDialog(project) { + val dialog = KotlinAwareMoveFilesOrDirectoriesDialog(project, initialTargetDirectory) { invokeMoveFilesOrDirectoriesRefactoring(it, project, elements, initialTargetDirectory, callback) } dialog.setData(elements, initialTargetDirectory, "refactoring.moveFile") 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 58fe5c1e5d1..f5191fd463c 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 @@ -42,6 +42,7 @@ import javax.swing.JComponent class KotlinAwareMoveFilesOrDirectoriesDialog( private val project: Project, + private val initialDirectory: PsiDirectory?, private val callback: (KotlinAwareMoveFilesOrDirectoriesDialog?) -> Unit ) : DialogWrapper(project, true) { companion object { @@ -163,7 +164,12 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( project.executeCommand(RefactoringBundle.message("move.title"), null) { runWriteAction { - val directoryName = targetDirectoryField.childComponent.text.replace(File.separatorChar, '/') + val directoryName = targetDirectoryField.childComponent.text.replace(File.separatorChar, '/').let { + when { + it.startsWith(".") -> (initialDirectory?.virtualFile?.path ?: "") + "/" + it + else -> it + } + } try { targetDirectory = DirectoryUtil.mkdirs(PsiManager.getInstance(project), directoryName) } 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 8b53495049f..1e8759398f6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt @@ -123,7 +123,7 @@ fun moveFilesOrDirectories( return } - with(KotlinAwareMoveFilesOrDirectoriesDialog(project, ::doRun)) { + with(KotlinAwareMoveFilesOrDirectoriesDialog(project, initialTargetDirectory, ::doRun)) { setData(elements, initialTargetDirectory, "refactoring.moveFile") show() }