ensure in writeAction

This commit is contained in:
Anna.Kozlova
2016-11-22 20:22:29 +01:00
parent 10d889202f
commit f57a85115b
@@ -290,7 +290,19 @@ public class CopyFilesOrDirectoriesHandler extends CopyHandlerDelegateBase {
}
if (newName == null) newName = directory.getName();
final PsiDirectory existing = targetDirectory.findSubdirectory(newName);
final PsiDirectory subdirectory = existing == null ? targetDirectory.createSubdirectory(newName) : existing;
final PsiDirectory subdirectory;
if (existing == null) {
String finalNewName = newName;
subdirectory = new WriteCommandAction<PsiDirectory>(targetDirectory.getProject(), title) {
@Override
protected void run(@NotNull Result<PsiDirectory> result) throws Throwable {
result.setResult(targetDirectory.createSubdirectory(finalNewName));
}
}.execute().getResultObject();
}
else {
subdirectory = existing;
}
EncodingRegistry.doActionAndRestoreEncoding(directory.getVirtualFile(),
(ThrowableComputable<VirtualFile, IOException>)() -> subdirectory.getVirtualFile());