From a9b27f6be27fa7f49cf55608da7ce85fdde74d47 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 22 Mar 2016 13:47:06 +0100 Subject: [PATCH] copy directory: check if copy possible to desired directory (IDEA-153365) --- .../copy/CopyFilesOrDirectoriesDialog.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesDialog.java b/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesDialog.java index d6698c5ec9d8..76bb9f495b44 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesDialog.java +++ b/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesDialog.java @@ -38,6 +38,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.RecentsManager; import com.intellij.ui.TextFieldWithHistoryWithBrowseButton; @@ -82,6 +83,7 @@ public class CopyFilesOrDirectoriesDialog extends DialogWrapper { private TextFieldWithHistoryWithBrowseButton myTargetDirectoryField; private JCheckBox myOpenFilesInEditor = createOpenInEditorCB(); private JTextField myNewNameField; + private final PsiElement[] myElements; private final Project myProject; private final boolean myShowDirectoryField; private final boolean myShowNewNameField; @@ -91,6 +93,7 @@ public class CopyFilesOrDirectoriesDialog extends DialogWrapper { public CopyFilesOrDirectoriesDialog(PsiElement[] elements, PsiDirectory defaultTargetDirectory, Project project, boolean doClone) { super(project, true); + myElements = elements; myProject = project; myShowDirectoryField = !doClone; myShowNewNameField = elements.length == 1; @@ -296,6 +299,16 @@ public class CopyFilesOrDirectoriesDialog extends DialogWrapper { Messages.showErrorDialog(myProject, RefactoringBundle.message("cannot.create.directory"), RefactoringBundle.message("error.title")); return; } + + try { + for (PsiElement element : myElements) { + MoveFilesOrDirectoriesUtil.checkIfMoveIntoSelf(element, myTargetDirectory); + } + } + catch (IncorrectOperationException e) { + Messages.showErrorDialog(myProject, e.getMessage(), RefactoringBundle.message("error.title")); + return; + } } super.doOKAction();