From 7cf7a14d9b3a6a3f1d46e2a1cc908c73fbc7cf92 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 14 May 2015 19:46:39 +0300 Subject: [PATCH] Move: Warn about moving to the existing file in "Move to Package" mode --- .../ui/MoveKotlinTopLevelDeclarationsDialog.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 06de265dbd6..d213f657af1 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 @@ -344,6 +344,19 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { final MoveDestination moveDestination = ((DestinationFolderComboBox) destinationFolderCB).selectDirectory(targetPackage, false); if (moveDestination == null) return null; + final String targetFileName = tfFileNameInPackage.getText(); + + PsiDirectory directory = moveDestination.getTargetIfExists(sourceFile); + if (directory != null && directory.findFile(targetFileName) != null) { + String question = "File '" + + directory.getVirtualFile().getPath() + + "/" + + targetFileName + + "' already exists. Do you want to move selected declarations to this file?"; + int ret = Messages.showYesNoDialog(myProject, question, RefactoringBundle.message("move.title"), Messages.getQuestionIcon()); + if (ret != Messages.YES) return null; + } + return new DeferredJetFileKotlinMoveTarget( myProject, new FqName(targetPackage.getQualifiedName()), @@ -351,7 +364,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { @Override public JetFile invoke() { PsiDirectory directory = moveDestination.getTargetDirectory(sourceFile); - return RefactoringPackage.getOrCreateKotlinFile(tfFileNameInPackage.getText(), directory); + return RefactoringPackage.getOrCreateKotlinFile(targetFileName, directory); } } );