From a77e1dabce1f46c78afdd9c3f4ac39abe6fc0d9a Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 2 Sep 2016 15:05:29 +0300 Subject: [PATCH] Move: Do not show directory selection dialog if target directory is already specified by drag-and-drop #KT-13553 Fixed --- ChangeLog.md | 1 + .../MoveKotlinDeclarationsHandler.kt | 5 ++++- .../MoveKotlinTopLevelDeclarationsDialog.java | 20 +++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index becff93f1c0..fe0914d3718 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -121,6 +121,7 @@ These artifacts include extensions for the types available in the latter JDKs, s - [`KT-13535`](https://youtrack.jetbrains.com/issue/KT-13535) Pull Up: Remove visibility modifiers on adding 'override' - [`KT-13216`](https://youtrack.jetbrains.com/issue/KT-13216) Move: Report separate conflicts for each property accessor - [`KT-13216`](https://youtrack.jetbrains.com/issue/KT-13216) Move: Forbid moving of enum entries +- [`KT-13553`](https://youtrack.jetbrains.com/issue/KT-13553) Move: Do not show directory selection dialog if target directory is already specified by drag-and-drop ##### New features 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 e34ced28a3c..30d300bab51 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,10 @@ class MoveKotlinDeclarationsHandler : MoveHandlerDelegate() { when (container) { is PsiDirectory, is PsiPackage, is KtFile -> { val targetPackageName = MoveClassesOrPackagesImpl.getInitialTargetPackageName(targetContainer, elements) - val targetDirectory = MoveClassesOrPackagesImpl.getInitialTargetDirectory(targetContainer, elements) + val targetDirectory = if (targetContainer != null) { + MoveClassesOrPackagesImpl.getInitialTargetDirectory(targetContainer, elements) + } + else null val searchInComments = JavaRefactoringSettings.getInstance()!!.MOVE_SEARCH_IN_COMMENTS val searchInText = JavaRefactoringSettings.getInstance()!!.MOVE_SEARCH_FOR_TEXT val targetFile = targetContainer as? KtFile diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java index 64803688348..a80df6f8757 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java @@ -26,7 +26,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.JavaProjectRootsUtil; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TextFieldWithBrowseButton; -import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Pass; import com.intellij.openapi.util.text.StringUtil; @@ -43,7 +42,6 @@ import com.intellij.refactoring.move.MoveCallback; import com.intellij.refactoring.move.MoveHandler; import com.intellij.refactoring.move.moveClassesOrPackages.AutocreatingSingleSourceRootMoveDestination; import com.intellij.refactoring.move.moveClassesOrPackages.DestinationFolderComboBox; -import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesUtil; import com.intellij.refactoring.move.moveClassesOrPackages.MultipleRootsMoveDestination; import com.intellij.refactoring.ui.PackageNameReferenceEditorCombo; import com.intellij.refactoring.ui.RefactoringDialog; @@ -455,17 +453,17 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { if (ret != Messages.YES) return null; } - DirectoryChooser.ItemWrapper selectedItem = (DirectoryChooser.ItemWrapper)destinationFolderCB.getComboBox().getSelectedItem(); - PsiDirectory selectedPsiDirectory = selectedItem.getDirectory(); - if (selectedPsiDirectory == null) return Pair.create(null, new MultipleRootsMoveDestination(targetPackage)); + PsiDirectory selectedPsiDirectory; + if (initialTargetDirectory == null) { + DirectoryChooser.ItemWrapper selectedItem = (DirectoryChooser.ItemWrapper)destinationFolderCB.getComboBox().getSelectedItem(); + selectedPsiDirectory = selectedItem.getDirectory(); + if (selectedPsiDirectory == null) return Pair.create(null, new MultipleRootsMoveDestination(targetPackage)); + } + else { + selectedPsiDirectory = initialTargetDirectory; + } VirtualFile targetDirectory = selectedPsiDirectory.getVirtualFile(); - List sourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(getProject()); - if (initialTargetDirectory != null && Comparing.equal(targetDirectory, initialTargetDirectory.getVirtualFile()) && - sourceRoots.size() > 1) { - targetDirectory = MoveClassesOrPackagesUtil.chooseSourceRoot(targetPackage, sourceRoots, initialTargetDirectory); - } - if (targetDirectory == null) return null; return Pair.create(targetDirectory, new AutocreatingSingleSourceRootMoveDestination(targetPackage, targetDirectory)); }