From 589f3efc5ad115dc28451b0eebe0f2f027432817 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 16 Nov 2016 09:11:47 +0100 Subject: [PATCH] java & platform: write action is unnecessary in some quick fixes --- ...UnnecessaryModuleDependencyInspection.java | 5 +++++ .../UnusedLibrariesInspection.java | 6 +++++- .../DefaultFileTemplateUsageInspection.java | 5 +++++ .../DependencyInspection.java | 5 +++++ .../ProblematicWhitespaceInspection.java | 5 +++++ .../packaging/EmptyDirectoryInspection.java | 5 +++++ .../SuspiciousLocalesLanguagesInspection.java | 7 +++++-- .../codeInspection/i18n/I18nInspection.java | 19 ++++++++++--------- .../quickfixes/AcceptWordAsCorrect.java | 5 +++++ 9 files changed, 50 insertions(+), 12 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java index f2198709ad8e..e2e7f3f38db8 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java @@ -162,6 +162,11 @@ public class UnnecessaryModuleDependencyInspection extends GlobalInspectionTool return "Remove dependency"; } + @Override + public boolean startInWriteAction() { + return false; + } + @Override public void applyFix(@NotNull Project project, @NotNull CommonProblemDescriptor descriptor) { final ModifiableRootModel model = ModuleRootManager.getInstance(myModule).getModifiableModel(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java index 6147a0d7ea5b..2bd489c5ef30 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java @@ -39,7 +39,6 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiUtilCore; -import com.intellij.util.Function; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -131,6 +130,11 @@ public class UnusedLibrariesInspection extends GlobalInspectionTool { myFiles = files; } + @Override + public boolean startInWriteAction() { + return false; + } + @Override @NotNull public String getFamilyName() { diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java index ea3c99ac0161..343732352779 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java @@ -90,6 +90,11 @@ public class DefaultFileTemplateUsageInspection extends BaseJavaLocalInspectionT return InspectionsBundle.message("default.file.template.edit.template"); } + @Override + public boolean startInWriteAction() { + return false; + } + @Override public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { final FileTemplateConfigurable configurable = new FileTemplateConfigurable(project); diff --git a/java/java-impl/src/com/intellij/codeInspection/dependencyViolation/DependencyInspection.java b/java/java-impl/src/com/intellij/codeInspection/dependencyViolation/DependencyInspection.java index d317b5ee7d22..93485a5edc20 100644 --- a/java/java-impl/src/com/intellij/codeInspection/dependencyViolation/DependencyInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/dependencyViolation/DependencyInspection.java @@ -79,6 +79,11 @@ public class DependencyInspection extends DependencyInspectionBase { return InspectionsBundle.message("edit.dependency.rules.family"); } + @Override + public boolean startInWriteAction() { + return false; + } + @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { ShowSettingsUtil.getInstance().editConfigurable(project, new DependencyConfigurable(project)); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java b/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java index 487b1cbbfb68..4d77cb07b1b2 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java @@ -45,6 +45,11 @@ public class ProblematicWhitespaceInspection extends LocalInspectionTool { return InspectionsBundle.message("problematic.whitespace.show.whitespaces.quickfix"); } + @Override + public boolean startInWriteAction() { + return false; + } + @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { final FileEditorManager editorManager = FileEditorManager.getInstance(project); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java index 4cdf27d7894c..53e77adec6b2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java @@ -126,6 +126,11 @@ public class EmptyDirectoryInspection extends BaseGlobalInspection { this.name = name; } + @Override + public boolean startInWriteAction() { + return false; + } + @NotNull @Override public String getName() { diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java index 85d8faf5a5be..d570783a1bb8 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java @@ -23,7 +23,6 @@ import com.intellij.lang.properties.psi.PropertiesFile; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.InputValidator; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.text.StringUtil; @@ -33,7 +32,6 @@ import com.intellij.ui.AnActionButton; import com.intellij.ui.AnActionButtonRunnable; import com.intellij.ui.ToolbarDecorator; import com.intellij.ui.components.JBList; -import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashSet; import org.jdom.Element; @@ -146,6 +144,11 @@ public class SuspiciousLocalesLanguagesInspection extends BaseLocalInspectionToo return PropertiesBundle.message("dissociate.resource.bundle.quick.fix.name"); } + @Override + public boolean startInWriteAction() { + return false; + } + @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { DissociateResourceBundleAction.dissociate(Collections.singleton(myResourceBundle), project); diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java index 01e66540a132..a70e455f0da1 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java @@ -28,7 +28,6 @@ import com.intellij.codeInspection.*; import com.intellij.codeInspection.ex.BaseLocalInspectionTool; import com.intellij.ide.util.TreeClassChooser; import com.intellij.ide.util.TreeClassChooserFactory; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.Extensions; @@ -438,15 +437,17 @@ public class I18nInspection extends BaseLocalInspectionTool { } @Override - public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { - //do it later because it is invoked from write action - ApplicationManager.getApplication().invokeLater(() -> { - PsiElement element = descriptor.getPsiElement(); - if (!(element instanceof PsiExpression)) return; + public boolean startInWriteAction() { + return false; + } - PsiExpression[] expressions = {(PsiExpression)element}; - new IntroduceConstantHandler().invoke(project, expressions); - }, project.getDisposed()); + @Override + public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { + PsiElement element = descriptor.getPsiElement(); + if (!(element instanceof PsiExpression)) return; + + PsiExpression[] expressions = {(PsiExpression)element}; + new IntroduceConstantHandler().invoke(project, expressions); } }; } diff --git a/spellchecker/src/com/intellij/spellchecker/quickfixes/AcceptWordAsCorrect.java b/spellchecker/src/com/intellij/spellchecker/quickfixes/AcceptWordAsCorrect.java index 25041dc3b351..b25e4901bb31 100644 --- a/spellchecker/src/com/intellij/spellchecker/quickfixes/AcceptWordAsCorrect.java +++ b/spellchecker/src/com/intellij/spellchecker/quickfixes/AcceptWordAsCorrect.java @@ -52,6 +52,11 @@ public class AcceptWordAsCorrect implements SpellCheckerQuickFix { return Anchor.LAST; } + @Override + public boolean startInWriteAction() { + return false; + } + public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { SpellCheckerManager spellCheckerManager = SpellCheckerManager.getInstance(project); if (myWord != null) {