diff options
Diffstat (limited to 'xml/xml-psi-api/src/com/intellij/codeInspection/XmlSuppressableInspectionTool.java')
-rw-r--r-- | xml/xml-psi-api/src/com/intellij/codeInspection/XmlSuppressableInspectionTool.java | 87 |
1 files changed, 47 insertions, 40 deletions
diff --git a/xml/xml-psi-api/src/com/intellij/codeInspection/XmlSuppressableInspectionTool.java b/xml/xml-psi-api/src/com/intellij/codeInspection/XmlSuppressableInspectionTool.java index 5292a1ac6af1..a46cd41085fa 100644 --- a/xml/xml-psi-api/src/com/intellij/codeInspection/XmlSuppressableInspectionTool.java +++ b/xml/xml-psi-api/src/com/intellij/codeInspection/XmlSuppressableInspectionTool.java @@ -16,6 +16,7 @@ package com.intellij.codeInspection; +import com.intellij.codeInsight.daemon.HighlightDisplayKey; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; @@ -23,39 +24,31 @@ import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public abstract class XmlSuppressableInspectionTool extends LocalInspectionTool implements BatchSuppressableTool { @NonNls static final String ALL = "ALL"; - @NotNull - @Override - public SuppressQuickFix[] getBatchSuppressActions(@Nullable PsiElement element) { - return new SuppressQuickFix[]{new SuppressTag(), new SuppressForFile(getID()), new SuppressAllForFile()}; + public static SuppressQuickFix[] getSuppressFixes(final String shortName) { + return getSuppressFixes(shortName, new DefaultXmlSuppressionProvider()); } - @Override - public boolean isSuppressedFor(@NotNull final PsiElement element) { - return XmlSuppressionProvider.isSuppressed(element, getID()); + public static SuppressQuickFix[] getSuppressFixes(final String shortName, XmlSuppressionProvider provider) { + final String id = HighlightDisplayKey.find(shortName).getID(); + return new SuppressQuickFix[]{new SuppressTagStatic(id, provider), new SuppressForFile(id, provider), new SuppressAllForFile(provider)}; } - public class SuppressTag extends SuppressTagStatic { - public SuppressTag() { - super(getID()); - } - } + public static abstract class XmlSuppressFix implements SuppressQuickFix { - public static class SuppressTagStatic implements SuppressQuickFix { - private final String id; + protected final String myId; + protected final XmlSuppressionProvider myProvider; - public SuppressTagStatic(@NotNull String id) { - this.id = id; + protected XmlSuppressFix(String inspectionId, XmlSuppressionProvider suppressionProvider) { + myId = inspectionId; + myProvider = suppressionProvider; } - @NotNull - @Override - public String getName() { - return InspectionsBundle.message("xml.suppressable.for.tag.title"); + protected XmlSuppressFix(String id) { + this(id, new DefaultXmlSuppressionProvider()); } @Override @@ -64,52 +57,66 @@ public abstract class XmlSuppressableInspectionTool extends LocalInspectionTool } @Override - public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - PsiElement element = descriptor.getPsiElement(); - if (PsiTreeUtil.getParentOfType(element, XmlTag.class) == null) return; - XmlSuppressionProvider.getProvider(element.getContainingFile()).suppressForTag(element, id); - } - - @Override @NotNull public String getFamilyName() { return getName(); } } - public static class SuppressForFile implements SuppressQuickFix { - private final String myInspectionId; + public static class SuppressTagStatic extends XmlSuppressFix { - public SuppressForFile(@NotNull String inspectionId) { - myInspectionId = inspectionId; + public SuppressTagStatic(String inspectionId, XmlSuppressionProvider suppressionProvider) { + super(inspectionId, suppressionProvider); + } + + public SuppressTagStatic(String id) { + super(id); } @NotNull @Override public String getName() { - return InspectionsBundle.message("xml.suppressable.for.file.title"); + return InspectionsBundle.message("xml.suppressable.for.tag.title"); } @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { PsiElement element = descriptor.getPsiElement(); - if (element == null || !element.isValid() || !(element.getContainingFile() instanceof XmlFile)) return; - XmlSuppressionProvider.getProvider(element.getContainingFile()).suppressForFile(element, myInspectionId); + if (PsiTreeUtil.getParentOfType(element, XmlTag.class) == null) return; + myProvider.suppressForTag(element, myId); + } + + } + + public static class SuppressForFile extends XmlSuppressFix { + + public SuppressForFile(String inspectionId, XmlSuppressionProvider suppressionProvider) { + super(inspectionId, suppressionProvider); + } + + public SuppressForFile(String id) { + super(id); } + @NotNull @Override - public boolean isAvailable(@NotNull Project project, @NotNull PsiElement context) { - return context.isValid(); + public String getName() { + return InspectionsBundle.message("xml.suppressable.for.file.title"); } @Override - @NotNull - public String getFamilyName() { - return getName(); + public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { + PsiElement element = descriptor.getPsiElement(); + if (element == null || !element.isValid() || !(element.getContainingFile() instanceof XmlFile)) return; + myProvider.suppressForFile(element, myId); } } public static class SuppressAllForFile extends SuppressForFile { + public SuppressAllForFile(XmlSuppressionProvider provider) { + super(ALL, provider); + } + public SuppressAllForFile() { super(ALL); } |