summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/AddGradleDependencyTest.java13
-rw-r--r--android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java1
-rw-r--r--android/src/com/android/tools/idea/quickfix/GradleDependencyFix.java19
3 files changed, 32 insertions, 1 deletions
diff --git a/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/AddGradleDependencyTest.java b/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/AddGradleDependencyTest.java
index ff70110236c..c69f3e09b38 100644
--- a/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/AddGradleDependencyTest.java
+++ b/android/guiTestSrc/com/android/tools/idea/tests/gui/gradle/AddGradleDependencyTest.java
@@ -47,6 +47,9 @@ public class AddGradleDependencyTest extends GuiTestCase {
"Add dependency on module 'library3'");
assertBuildFileContains(projectFrame, "app/build.gradle", "compile project(':library3')");
+
+ undo(projectFrame);
+ editor.waitForCodeAnalysisHighlightCount(HighlightSeverity.ERROR, 1);
}
@Test @IdeGuiTest
@@ -59,6 +62,9 @@ public class AddGradleDependencyTest extends GuiTestCase {
"Add dependency on module 'library3'");
assertBuildFileContains(projectFrame, "app/build.gradle", "androidTestCompile project(':library3')");
+
+ undo(projectFrame);
+ editor.waitForCodeAnalysisHighlightCount(HighlightSeverity.ERROR, 1);
}
@Test @IdeGuiTest
@@ -107,9 +113,16 @@ public class AddGradleDependencyTest extends GuiTestCase {
projectFrame.waitForGradleProjectSyncToFinish();
editor.waitForCodeAnalysisHighlightCount(HighlightSeverity.ERROR, 0);
}
+
private static void assertBuildFileContains(@NotNull IdeFrameFixture projectFrame, @NotNull String relativePath,
@NotNull String content) {
String newBuildFileContent = getFileContent(new File(projectFrame.getProjectPath(), relativePath).getPath());
assertTrue(newBuildFileContent.contains(content));
}
+
+ private static void undo(@NotNull IdeFrameFixture projectFrame) {
+ projectFrame.getEditor().invokeAction(EditorFixture.EditorAction.UNDO);
+ projectFrame.waitForGradleProjectSyncToFinish();
+ projectFrame.findMessageDialog("Undo").clickOk();
+ }
}
diff --git a/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java b/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java
index d3722172a90..1cf67ec1a0f 100644
--- a/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java
+++ b/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java
@@ -168,6 +168,7 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix {
@Override
public void run() {
addDependency(myCurrentModule, module, test);
+ registerUndoAction(project);
gradleSyncAndImportClass(module, editor, myReference, new Function<Void, List<PsiClass>>() {
@Override
public List<PsiClass> apply(@Nullable Void input) {
diff --git a/android/src/com/android/tools/idea/quickfix/GradleDependencyFix.java b/android/src/com/android/tools/idea/quickfix/GradleDependencyFix.java
index a360b3b3723..9da2bca82d1 100644
--- a/android/src/com/android/tools/idea/quickfix/GradleDependencyFix.java
+++ b/android/src/com/android/tools/idea/quickfix/GradleDependencyFix.java
@@ -31,6 +31,9 @@ import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.command.undo.BasicUndoableAction;
+import com.intellij.openapi.command.undo.UndoManager;
+import com.intellij.openapi.command.undo.UnexpectedUndoException;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
@@ -120,4 +123,18 @@ abstract class GradleDependencyFix implements IntentionAction, LocalQuickFix, Hi
}
});
}
-} \ No newline at end of file
+
+ protected static void registerUndoAction(@NotNull final Project project) {
+ UndoManager.getInstance(project).undoableActionPerformed(new BasicUndoableAction() {
+ @Override
+ public void undo() throws UnexpectedUndoException {
+ GradleProjectImporter.getInstance().requestProjectSync(project, false, null);
+ }
+
+ @Override
+ public void redo() throws UnexpectedUndoException {
+ GradleProjectImporter.getInstance().requestProjectSync(project, false, null);
+ }
+ });
+ }
+}