remove invokeLater from StaticInheritanceFix and AddModuleDependencyFix

This commit is contained in:
peter
2016-04-01 16:38:28 +02:00
parent 3e1437f0b0
commit a1ba8b8b73
2 changed files with 21 additions and 45 deletions
@@ -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<Module, Module> circularModules = ModuleCompilerUtil.addingDependencyFormsCircularity(myCurrentModule, module);
if (circularModules == null) {
doit.run();
}
else {
showCircularWarningAndContinue(project, circularModules, module, doit);
Couple<Module> 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<Module, Module> circularModules,
final Module classModule,
final Runnable doit) {
private static boolean showCircularWarning(Project project, Couple<Module> 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;
}
}
@@ -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));
}
}