diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsHandler.kt index bda38608755..2085536ecfc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsHandler.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.idea.refactoring.move.* import org.jetbrains.kotlin.idea.refactoring.move.moveTopLevelDeclarations.ui.MoveKotlinTopLevelDeclarationsDialog import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.idea.core.getPackage +import org.jetbrains.kotlin.idea.refactoring.move.guessNewFileName import java.util.HashSet import java.util.LinkedHashSet @@ -64,13 +65,7 @@ public class MoveKotlinTopLevelDeclarationsHandler : MoveHandlerDelegate() { val targetDirectory = MoveClassesOrPackagesImpl.getInitialTargetDirectory(targetContainer, elements) val searchInComments = JavaRefactoringSettings.getInstance()!!.MOVE_SEARCH_IN_COMMENTS val searchInText = JavaRefactoringSettings.getInstance()!!.MOVE_SEARCH_FOR_TEXT - val targetFile: JetFile? = when (targetContainer) { - is JetFile -> targetContainer - else -> { - val files = elements.mapTo(HashSet()) { e -> e.getContainingFile() as JetFile } - if (files.size() == 1) files.first() else null - } - } + val targetFile = targetContainer as? JetFile val moveToPackage = targetContainer !is JetFile MoveKotlinTopLevelDeclarationsDialog( diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java index a21df69c8ee..dd2ff02e8fe 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java @@ -142,7 +142,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { initPackageChooser(targetPackageName, targetDirectory); - initFileChooser(targetFile); + initFileChooser(targetFile, elementsToMove); initMoveToButtons(moveToPackage); @@ -278,16 +278,19 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { ); } - private void initFileChooser(JetFile targetFile) { + private void initFileChooser(@Nullable JetFile targetFile, @NotNull Set elementsToMove) { FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor() .withRoots(ProjectRootManager.getInstance(myProject).getContentRoots()) .withTreeRootVisible(true); String title = JetRefactoringBundle.message("refactoring.move.top.level.declaration.file.title"); fileChooser.addBrowseFolderListener(title, null, myProject, descriptor, TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT); - if (targetFile != null) { - fileChooser.setText(targetFile.getVirtualFile().getPath()); - } + + String initialTargetPath = + targetFile != null + ? targetFile.getVirtualFile().getPath() + : sourceFile.getVirtualFile().getParent().getPath() + "/" + MovePackage.guessNewFileName(sourceFile, elementsToMove); + fileChooser.setText(initialTargetPath); } private void createUIComponents() {