From 4c9bed94ed2d3ea3ccc620cbaaa142366d6370e5 Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Mon, 8 Jun 2020 14:52:19 +0300 Subject: [PATCH] IDEA-210863 Remove icons from group nodes, compute proper icons depending on actual severities. GitOrigin-RevId: e8d5c616a55498934aff3ecc7884a313024d3642 --- .../InspectionsConfigTreeTable.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java index 7841245c84ab..acbba1d827c4 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java @@ -29,6 +29,7 @@ import com.intellij.ui.treeStructure.treetable.TreeTableTree; import com.intellij.util.Alarm; import com.intellij.util.NullableFunction; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.ui.EmptyIcon; import com.intellij.util.ui.TextTransferable; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.table.IconTableCellRenderer; @@ -276,15 +277,20 @@ public class InspectionsConfigTreeTable extends TreeTable { final InspectionConfigTreeNode treeNode = (InspectionConfigTreeNode)node; final List inspectionsKeys = InspectionsAggregationUtil.getInspectionsKeys(treeNode); if (column == SEVERITIES_COLUMN) { - final MultiColoredHighlightSeverityIconSink sink = new MultiColoredHighlightSeverityIconSink(); - for (final HighlightDisplayKey selectedInspectionsNode : inspectionsKeys) { - final String toolId = selectedInspectionsNode.toString(); - if (mySettings.getInspectionProfile().getTools(toolId, mySettings.getProject()).isEnabled()) { - sink.put(mySettings.getInspectionProfile().getToolDefaultState(toolId, mySettings.getProject()), - mySettings.getInspectionProfile().getNonDefaultTools(toolId, mySettings.getProject())); + if (treeNode instanceof InspectionConfigTreeNode.Group) { + return EmptyIcon.ICON_0; + } + else { + final MultiColoredHighlightSeverityIconSink sink = new MultiColoredHighlightSeverityIconSink(); + for (final HighlightDisplayKey selectedInspectionsNode : inspectionsKeys) { + final String toolId = selectedInspectionsNode.toString(); + if (mySettings.getInspectionProfile().getTools(toolId, mySettings.getProject()).isEnabled()) { + sink.put(mySettings.getInspectionProfile().getToolDefaultState(toolId, mySettings.getProject()), + mySettings.getInspectionProfile().getNonDefaultTools(toolId, mySettings.getProject())); + } } + return sink.constructIcon(mySettings.getInspectionProfile()); } - return sink.constructIcon(mySettings.getInspectionProfile()); } if (column == IS_ENABLED_COLUMN) { return isEnabled(inspectionsKeys); @@ -439,11 +445,12 @@ public class InspectionsConfigTreeTable extends TreeTable { } boolean allScopesHasMixedSeverity = true; + boolean allErrors = true; + boolean hasError = false; for (HighlightSeverity severity : computedSeverities.values()) { - if (!severity.equals(ScopesAndSeveritiesTable.MIXED_FAKE_SEVERITY)) { - allScopesHasMixedSeverity = false; - break; - } + allScopesHasMixedSeverity = allScopesHasMixedSeverity && severity.equals(ScopesAndSeveritiesTable.MIXED_FAKE_SEVERITY); + hasError = hasError || severity.equals(HighlightSeverity.ERROR); + allErrors = allErrors && severity.equals(HighlightSeverity.ERROR); } if (allScopesHasMixedSeverity) { @@ -455,7 +462,9 @@ public class InspectionsConfigTreeTable extends TreeTable { return HighlightDisplayLevel.find(severity).getIcon(); } else { - return AllIcons.General.InspectionsMixed; + return allErrors ? HighlightDisplayLevel.ERROR.getIcon() : + hasError ? AllIcons.General.InspectionsMixed: + HighlightDisplayLevel.WARNING.getIcon(); } }