mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-66161 checkout files before writing
This commit is contained in:
@@ -24,6 +24,8 @@ import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
@@ -32,6 +34,7 @@ import org.jetbrains.android.dom.manifest.Action;
|
||||
import org.jetbrains.android.dom.manifest.*;
|
||||
import org.jetbrains.android.dom.resources.ResourceValue;
|
||||
import org.jetbrains.android.facet.AndroidFacet;
|
||||
import org.jetbrains.android.facet.AndroidRootUtil;
|
||||
import org.jetbrains.android.util.AndroidBundle;
|
||||
import org.jetbrains.android.util.AndroidUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -149,8 +152,18 @@ public class NewAndroidComponentDialog extends DialogWrapper {
|
||||
AndroidFacet facet,
|
||||
String label,
|
||||
boolean startupActivity) {
|
||||
Manifest manifest = facet.getManifest();
|
||||
if (manifest == null) return;
|
||||
|
||||
final VirtualFile manifestFile = AndroidRootUtil.getManifestFile(facet);
|
||||
if (manifestFile == null ||
|
||||
!ReadonlyStatusHandler.ensureFilesWritable(facet.getModule().getProject(), manifestFile)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Manifest manifest = AndroidUtils.loadDomElement(facet.getModule(), manifestFile, Manifest.class);
|
||||
if (manifest == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String packageName = manifest.getPackage().getValue();
|
||||
if (packageName == null || packageName.length() == 0) {
|
||||
manifest.getPackage().setValue(aPackage.getQualifiedName());
|
||||
|
||||
+3
-1
@@ -36,6 +36,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
@@ -393,7 +394,8 @@ public class AndroidAddStringResourceAction extends AbstractIntentionAction impl
|
||||
@NotNull String dirName,
|
||||
@NotNull String value) throws Exception {
|
||||
final VirtualFile resFile = findOrCreateResourceFile(facet, fileName, dirName);
|
||||
if (resFile == null) {
|
||||
if (resFile == null ||
|
||||
!ReadonlyStatusHandler.ensureFilesWritable(facet.getModule().getProject(), resFile)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+5
-1
@@ -24,6 +24,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -286,7 +287,10 @@ public class LocalResourceManager extends ResourceManager {
|
||||
throw new IllegalArgumentException("Incorrect resource type");
|
||||
}
|
||||
VirtualFile resFile = findOrCreateResourceFile(resourceFileName);
|
||||
if (resFile == null) return null;
|
||||
if (resFile == null ||
|
||||
!ReadonlyStatusHandler.ensureFilesWritable(myModule.getProject(), resFile)) {
|
||||
return null;
|
||||
}
|
||||
final Resources resources = loadDomElement(myModule, resFile, Resources.class);
|
||||
if (resources == null) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
|
||||
Reference in New Issue
Block a user