diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java index dd3570c55120..3b6f16fa86ff 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.codeInsight.daemon.impl.actions.AddImportAction; import com.intellij.compiler.ModuleCompilerUtil; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.module.Module; @@ -30,7 +31,7 @@ import com.intellij.openapi.roots.*; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.util.Pair; +import com.intellij.openapi.util.Couple; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.ui.components.JBList; @@ -157,33 +158,24 @@ class AddModuleDependencyFix extends OrderEntryFix { } } }; - final Pair circularModules = ModuleCompilerUtil.addingDependencyFormsCircularity(myCurrentModule, module); - if (circularModules == null) { - doit.run(); - } - else { - showCircularWarningAndContinue(project, circularModules, module, doit); + Couple circularModules = ModuleCompilerUtil.addingDependencyFormsCircularity(myCurrentModule, module); + if (circularModules == null || showCircularWarning(project, circularModules, module)) { + WriteAction.run(doit::run); } } - - private static void showCircularWarningAndContinue(final Project project, final Pair circularModules, - final Module classModule, - final Runnable doit) { + private static boolean showCircularWarning(Project project, Couple circularModules, Module classModule) { final String message = QuickFixBundle.message("orderEntry.fix.circular.dependency.warning", classModule.getName(), circularModules.getFirst().getName(), circularModules.getSecond().getName()); if (ApplicationManager.getApplication().isUnitTestMode()) throw new RuntimeException(message); - ApplicationManager.getApplication().invokeLater(new Runnable() { - @Override - public void run() { - if (!project.isOpen()) return; - int ret = Messages.showOkCancelDialog(project, message, - QuickFixBundle.message("orderEntry.fix.title.circular.dependency.warning"), - Messages.getWarningIcon()); - if (ret == Messages.OK) { - ApplicationManager.getApplication().runWriteAction(doit); - } - } - }); + + return Messages.showOkCancelDialog(project, message, + QuickFixBundle.message("orderEntry.fix.title.circular.dependency.warning"), + Messages.getWarningIcon()) == Messages.OK; + } + + @Override + public boolean startInWriteAction() { + return false; } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/StaticInheritanceFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/StaticInheritanceFix.java index 890727d7d065..a743e59235f6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/StaticInheritanceFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/StaticInheritanceFix.java @@ -20,8 +20,7 @@ import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.QuickFixFactory; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.ModalityState; -import com.intellij.openapi.application.Result; +import com.intellij.openapi.application.TransactionGuard; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; @@ -36,7 +35,6 @@ import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Query; -import com.intellij.util.ui.UIUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.psiutils.ClassUtils; @@ -67,16 +65,12 @@ class StaticInheritanceFix extends InspectionGadgetsFix { } @Override - public void doFix(final Project project, final ProblemDescriptor descriptor) throws IncorrectOperationException { - ApplicationManager.getApplication().invokeLater(new Runnable() { - @Override - public void run() { - dodoFix(project, descriptor); - } - }, ModalityState.NON_MODAL, project.getDisposed()); + public boolean startInWriteAction() { + return false; } - private void dodoFix(final Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + @Override + public void doFix(final Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement)descriptor.getPsiElement(); final PsiClass iface = (PsiClass)referenceElement.resolve(); assert iface != null; @@ -155,16 +149,6 @@ class StaticInheritanceFix extends InspectionGadgetsFix { } private static void invokeWriteAction(final Runnable runnable, final PsiFile file) { - UIUtil.invokeLaterIfNeeded(new Runnable() { - @Override - public void run() { - new WriteCommandAction(file.getProject(), file) { - @Override - protected void run(@NotNull Result result) throws Throwable { - runnable.run(); - } - }.execute(); - } - }); + TransactionGuard.submitTransaction(() -> WriteCommandAction.runWriteCommandAction(file.getProject(), null, null, runnable, file)); } }