From c3a8412f4b7aff9d7525a22c51288cbabbf38edd Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 12 Feb 2010 23:49:58 +0300 Subject: [PATCH] provide icons for suppress actions (IDEA-11222 ) --- .../com/intellij/codeInspection/SuppressIntentionAction.java | 12 +++++++++++- .../com/intellij/codeInsight/daemon/impl/HighlightInfo.java | 4 ++++ .../codeInsight/intention/impl/IntentionListStep.java | 10 +++++++--- .../codeInspection/ex/DisableInspectionToolAction.java | 10 +++++++++- .../codeInspection/ex/EditInspectionToolsSettingsAction.java | 8 +++++++- 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java b/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java index 3e52f89d81..d1a83773e4 100644 --- a/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java +++ b/platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java @@ -24,12 +24,18 @@ import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.Iconable; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; -public abstract class SuppressIntentionAction extends PsiElementBaseIntentionAction { +import javax.swing.*; + +public abstract class SuppressIntentionAction extends PsiElementBaseIntentionAction implements Iconable { + private static final Icon ICON = IconLoader.getIcon("/general/inspectionsOff.png"); + public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { final CaretModel caretModel = editor.getCaretModel(); final int position = caretModel.getOffset(); @@ -37,4 +43,8 @@ public abstract class SuppressIntentionAction extends PsiElementBaseIntentionAct } public abstract void invoke(Project project, Editor editor, PsiElement element) throws IncorrectOperationException; + + public Icon getIcon(int flags) { + return ICON; + } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HighlightInfo.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HighlightInfo.java index e7fbf45a33..a0797ea9f3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HighlightInfo.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HighlightInfo.java @@ -384,6 +384,10 @@ public class HighlightInfo { this(action, options, displayName, null); } + public IntentionActionDescriptor(@NotNull IntentionAction action, final Icon icon) { + this(action, null, null, icon); + } + public IntentionActionDescriptor(@NotNull IntentionAction action, final List options, final String displayName, Icon icon) { myAction = action; myOptions = options; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java index b4be70a77b..67ec6f21d9 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java @@ -200,13 +200,13 @@ class IntentionListStep implements ListPopupStep IntentionListStep getSubStep(final IntentionActionWithTextCaching action, final String title) { ShowIntentionsPass.IntentionsInfo intentions = new ShowIntentionsPass.IntentionsInfo(); for (final IntentionAction optionIntention : action.getOptionIntentions()) { - intentions.intentionsToShow.add(new HighlightInfo.IntentionActionDescriptor(optionIntention, null)); + intentions.intentionsToShow.add(new HighlightInfo.IntentionActionDescriptor(optionIntention, getIcon(optionIntention))); } for (final IntentionAction optionFix : action.getOptionErrorFixes()) { - intentions.errorFixesToShow.add(new HighlightInfo.IntentionActionDescriptor(optionFix, null)); + intentions.errorFixesToShow.add(new HighlightInfo.IntentionActionDescriptor(optionFix, getIcon(optionFix))); } for (final IntentionAction optionFix : action.getOptionInspectionFixes()) { - intentions.inspectionFixesToShow.add(new HighlightInfo.IntentionActionDescriptor(optionFix, null)); + intentions.inspectionFixesToShow.add(new HighlightInfo.IntentionActionDescriptor(optionFix, getIcon(optionFix))); } return new IntentionListStep(myIntentionHintComponent, intentions,myEditor, myFile, myProject){ @@ -216,6 +216,10 @@ class IntentionListStep implements ListPopupStep }; } + private static Icon getIcon(IntentionAction optionIntention) { + return optionIntention instanceof Iconable ? ((Iconable)optionIntention).getIcon(0) : null; + } + public boolean hasSubstep(final IntentionActionWithTextCaching action) { return action.getOptionIntentions().size() + action.getOptionErrorFixes().size() > 0; } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/DisableInspectionToolAction.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/DisableInspectionToolAction.java index 16cb555a05..a003ffc0ad 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/DisableInspectionToolAction.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/DisableInspectionToolAction.java @@ -27,16 +27,20 @@ import com.intellij.codeInspection.ModifiableModel; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.Iconable; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.PsiFile; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; +import javax.swing.*; import java.io.IOException; -public class DisableInspectionToolAction implements IntentionAction { +public class DisableInspectionToolAction implements IntentionAction, Iconable { private final String myToolId; public static final String NAME = InspectionsBundle.message("disable.inspection.action.name"); + private static final Icon ICON = IconLoader.getIcon("/general/inspectionsOff.png"); public DisableInspectionToolAction(LocalInspectionTool tool) { myToolId = tool.getShortName(); @@ -77,4 +81,8 @@ public class DisableInspectionToolAction implements IntentionAction { public boolean startInWriteAction() { return false; } + + public Icon getIcon(int flags) { + return ICON; + } } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/EditInspectionToolsSettingsAction.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/EditInspectionToolsSettingsAction.java index e3cc57b73e..a87aaede97 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/EditInspectionToolsSettingsAction.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/EditInspectionToolsSettingsAction.java @@ -24,6 +24,8 @@ import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.Iconable; import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.profile.codeInspection.ui.ErrorsConfigurable; @@ -38,8 +40,9 @@ import javax.swing.*; * User: anna * Date: Feb 7, 2005 */ -public class EditInspectionToolsSettingsAction implements IntentionAction { +public class EditInspectionToolsSettingsAction implements IntentionAction, Iconable { private final String myShortName; + private static final Icon ICON = IconLoader.getIcon("/general/ideOptions.png"); public EditInspectionToolsSettingsAction(@NotNull LocalInspectionTool tool) { myShortName = tool.getShortName(); @@ -109,4 +112,7 @@ public class EditInspectionToolsSettingsAction implements IntentionAction { return false; } + public Icon getIcon(int flags) { + return ICON; + } } -- 2.11.4.GIT