provide icons for suppress actions (IDEA-11222 )
authoranna <anna.kozlova@jetbrains.com>
Fri, 12 Feb 2010 20:49:58 +0000 (12 23:49 +0300)
committeranna <anna.kozlova@jetbrains.com>
Mon, 15 Feb 2010 10:09:11 +0000 (15 13:09 +0300)
platform/lang-api/src/com/intellij/codeInspection/SuppressIntentionAction.java
platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HighlightInfo.java
platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java
platform/lang-impl/src/com/intellij/codeInspection/ex/DisableInspectionToolAction.java
platform/lang-impl/src/com/intellij/codeInspection/ex/EditInspectionToolsSettingsAction.java

index 3e52f89..d1a8377 100644 (file)
@@ -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
index e7fbf45..a0797ea 100644 (file)
@@ -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<IntentionAction> options, final String displayName, Icon icon) {
       myAction = action;
       myOptions = options;
index b4be70a..67ec6f2 100644 (file)
@@ -200,13 +200,13 @@ class IntentionListStep implements ListPopupStep<IntentionActionWithTextCaching>
   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<IntentionActionWithTextCaching>
     };
   }
 
+  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;
   }
index 16cb555..a003ffc 100644 (file)
@@ -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;
+  }
 }
index e3cc57b..a87aaed 100644 (file)
@@ -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;
+  }
 }