mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
copy directory: check if copy possible to desired directory (IDEA-153365)
This commit is contained in:
+13
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user