From c3d81176415fb673c483c5cbee426836046f9ba8 Mon Sep 17 00:00:00 2001 From: Alexey Gopachenko Date: Fri, 24 Jul 2009 20:22:31 +0400 Subject: [PATCH] WI-37 IDEA-23679 Overwrite file request (per file) --- .../refactoring/copy/CopyFilesOrDirectoriesHandler.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java b/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java index d2b51b5728..c6aab2f2a4 100644 --- a/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java +++ b/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java @@ -197,6 +197,16 @@ public class CopyFilesOrDirectoriesHandler implements CopyHandlerDelegate { if (elementToCopy instanceof PsiFile) { PsiFile file = (PsiFile)elementToCopy; String name = newName == null ? file.getName() : newName; + final PsiFile existing = targetDirectory.findFile(name); + if (existing!=null) { + final int selection = Messages.showDialog( + String.format("File '%s' already exists in directory '%s'", name, targetDirectory.getVirtualFile().getPath()), + "Copy", + new String[]{"Overwrite", "Skip"}, 0, Messages.getQuestionIcon()); + if (selection == 0 && file != existing) { + existing.delete(); + } else return null; + } return targetDirectory.copyFileFrom(name, file); } else if (elementToCopy instanceof PsiDirectory) { @@ -205,7 +215,8 @@ public class CopyFilesOrDirectoriesHandler implements CopyHandlerDelegate { return null; } if (newName == null) newName = directory.getName(); - final PsiDirectory subdirectory = targetDirectory.createSubdirectory(newName); + final PsiDirectory existing = targetDirectory.findSubdirectory(newName); + final PsiDirectory subdirectory = (existing!=null) ? existing : targetDirectory.createSubdirectory(newName); VfsUtil.doActionAndRestoreEncoding(directory.getVirtualFile(), new ThrowableComputable() { public VirtualFile compute() { return subdirectory.getVirtualFile(); -- 2.11.4.GIT