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();