From 4ae0201c62bb90ad0d0a2bd8f1d597cb391656ef Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 13 Mar 2018 12:09:23 +0700 Subject: [PATCH] SetInspectionOptionFix: apply option to the correct scope (IDEA-188134) --- .../SetInspectionOptionFix.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/SetInspectionOptionFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/SetInspectionOptionFix.java index f48df7f3b6c9..034d1a341ecb 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/SetInspectionOptionFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/SetInspectionOptionFix.java @@ -10,6 +10,7 @@ import com.intellij.openapi.command.undo.UndoManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiFile; import com.intellij.util.ReflectionUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -17,13 +18,13 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; public class SetInspectionOptionFix implements LocalQuickFix, LowPriorityAction, Iconable { - private final String myShortName; + private final String myID; private final String myProperty; private final String myMessage; private final boolean myValue; - public SetInspectionOptionFix(InspectionProfileEntry inspection, String property, String message, boolean value) { - myShortName = inspection.getShortName(); + public SetInspectionOptionFix(LocalInspectionTool inspection, String property, String message, boolean value) { + myID = inspection.getID(); myProperty = property; myMessage = message; myValue = value; @@ -50,24 +51,25 @@ public class SetInspectionOptionFix implements LocalQuickFix, LowPriorityAction, @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - setOption(project, myValue); - final VirtualFile vFile = descriptor.getPsiElement().getContainingFile().getVirtualFile(); + PsiFile file = descriptor.getPsiElement().getContainingFile(); + setOption(file, myValue); + final VirtualFile vFile = file.getVirtualFile(); UndoManager.getInstance(project).undoableActionPerformed(new BasicUndoableAction(vFile) { @Override public void undo() { - setOption(project, !myValue); + setOption(file, !myValue); } @Override public void redo() { - setOption(project, myValue); + setOption(file, myValue); } }); } - private void setOption(@NotNull Project project, boolean value) { - InspectionProfileModifiableModelKt.modifyAndCommitProjectProfile(project, model -> { - InspectionToolWrapper tool = model.getInspectionTool(myShortName, project); + private void setOption(@NotNull PsiFile file, boolean value) { + InspectionProfileModifiableModelKt.modifyAndCommitProjectProfile(file.getProject(), model -> { + InspectionToolWrapper tool = model.getToolById(myID, file); if(tool == null) return; InspectionProfileEntry inspection = tool.getTool(); ReflectionUtil.setField(inspection.getClass(), inspection, boolean.class, myProperty, value);