summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/src/com/android/tools/idea/structure/AndroidModuleConfigurable.java7
-rw-r--r--android/src/com/android/tools/idea/structure/AndroidProjectConfigurable.java12
2 files changed, 16 insertions, 3 deletions
diff --git a/android/src/com/android/tools/idea/structure/AndroidModuleConfigurable.java b/android/src/com/android/tools/idea/structure/AndroidModuleConfigurable.java
index d5e2d78d723..17f0cddce29 100644
--- a/android/src/com/android/tools/idea/structure/AndroidModuleConfigurable.java
+++ b/android/src/com/android/tools/idea/structure/AndroidModuleConfigurable.java
@@ -17,12 +17,15 @@ package com.android.tools.idea.structure;
import com.android.SdkConstants;
import com.android.ide.common.repository.GradleCoordinate;
+import com.android.tools.idea.gradle.util.GradleUtil;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.NamedConfigurable;
import com.intellij.openapi.util.Disposer;
+import com.intellij.openapi.vfs.ReadonlyStatusHandler;
+import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -82,6 +85,10 @@ public class AndroidModuleConfigurable extends NamedConfigurable {
@Override
public void apply() throws ConfigurationException {
+ VirtualFile file = GradleUtil.getGradleBuildFile(myModule);
+ if (!ReadonlyStatusHandler.ensureFilesWritable(myModule.getProject(), file)) {
+ throw new ConfigurationException(String.format("Build file %1$s is not writable", file.getPath()));
+ }
myModuleEditor.apply();
}
diff --git a/android/src/com/android/tools/idea/structure/AndroidProjectConfigurable.java b/android/src/com/android/tools/idea/structure/AndroidProjectConfigurable.java
index 5308db557cf..81a069456ff 100644
--- a/android/src/com/android/tools/idea/structure/AndroidProjectConfigurable.java
+++ b/android/src/com/android/tools/idea/structure/AndroidProjectConfigurable.java
@@ -28,6 +28,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.NamedConfigurable;
+import com.intellij.openapi.vfs.ReadonlyStatusHandler;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ActionRunner;
@@ -115,6 +116,14 @@ public class AndroidProjectConfigurable extends NamedConfigurable implements Key
@Override
public void apply() throws ConfigurationException {
+ if (myGradleBuildFile == null) {
+ return;
+ }
+ VirtualFile file = myGradleBuildFile.getFile();
+ if (!ReadonlyStatusHandler.ensureFilesWritable(myProject, file)) {
+ throw new ConfigurationException(String.format("Build file %1$s is not writable", file.getPath()));
+ }
+
CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() {
@Override
public void run() {
@@ -122,9 +131,6 @@ public class AndroidProjectConfigurable extends NamedConfigurable implements Key
ActionRunner.runInsideWriteAction(new ActionRunner.InterruptibleRunnable() {
@Override
public void run() throws Exception {
- if (myGradleBuildFile == null) {
- return;
- }
for (BuildFileKey key : PROJECT_PROPERTIES) {
if (key == BuildFileKey.GRADLE_WRAPPER_VERSION || !myModifiedKeys.contains(key)) {
continue;