copy directory: check if copy possible to desired directory (IDEA-153365)

This commit is contained in:
Anna.Kozlova
2016-03-22 15:35:47 +01:00
parent 3d5feb8247
commit a9b27f6be2
@@ -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();