mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
NPE in creation of multiscope icon fixed if default state is missed
This commit is contained in:
+20
-5
@@ -85,17 +85,19 @@ public class InspectionsConfigTreeTable extends TreeTable {
|
||||
final int row = rowAtPoint(point);
|
||||
final Object maybeIcon = getModel().getValueAt(row, column);
|
||||
if (maybeIcon instanceof MultiScopeSeverityIcon) {
|
||||
final MultiScopeSeverityIcon icon = (MultiScopeSeverityIcon)maybeIcon;
|
||||
final LinkedHashMap<String, HighlightDisplayLevel> scopeToAverageSeverityMap =
|
||||
((MultiScopeSeverityIcon)maybeIcon).getScopeToAverageSeverityMap();
|
||||
icon.getScopeToAverageSeverityMap();
|
||||
final JComponent component;
|
||||
if (scopeToAverageSeverityMap.size() == 1) {
|
||||
if (scopeToAverageSeverityMap.size() == 1 &&
|
||||
icon.getDefaultScopeName().equals(ContainerUtil.getFirstItem(scopeToAverageSeverityMap.keySet()))) {
|
||||
final HighlightDisplayLevel level = ContainerUtil.getFirstItem(scopeToAverageSeverityMap.values());
|
||||
final JLabel label = new JLabel();
|
||||
label.setIcon(level.getIcon());
|
||||
label.setText(SingleInspectionProfilePanel.renderSeverity(level.getSeverity()));
|
||||
component = label;
|
||||
} else {
|
||||
component = new ScopesAndSeveritiesHintTable(scopeToAverageSeverityMap);
|
||||
component = new ScopesAndSeveritiesHintTable(scopeToAverageSeverityMap, icon.getDefaultScopeName());
|
||||
}
|
||||
IdeTooltipManager.getInstance().show(
|
||||
new IdeTooltip(InspectionsConfigTreeTable.this, point, component), false);
|
||||
@@ -242,12 +244,16 @@ public class InspectionsConfigTreeTable extends TreeTable {
|
||||
LOG.assertTrue(column == IS_ENABLED_COLUMN);
|
||||
LOG.assertTrue(aValue != null, "node = " + node);
|
||||
final boolean doEnable = (Boolean) aValue;
|
||||
final InspectionProfileImpl profile = mySettings.getInspectionProfile();
|
||||
for (final InspectionConfigTreeNode aNode : InspectionsAggregationUtil.getInspectionsNodes((InspectionConfigTreeNode) node)) {
|
||||
final String toolId = aNode.getKey().toString();
|
||||
if (doEnable) {
|
||||
mySettings.getInspectionProfile().enableTool(toolId, mySettings.getProject());
|
||||
profile.enableTool(toolId, mySettings.getProject());
|
||||
} else {
|
||||
mySettings.getInspectionProfile().disableTool(toolId, mySettings.getProject());
|
||||
profile.disableTool(toolId, mySettings.getProject());
|
||||
}
|
||||
for (ScopeToolState state : profile.getTools(toolId, mySettings.getProject()).getTools()) {
|
||||
state.setEnabled(doEnable);
|
||||
}
|
||||
aNode.dropCache();
|
||||
mySettings.onChanged(aNode);
|
||||
@@ -344,6 +350,15 @@ public class InspectionsConfigTreeTable extends TreeTable {
|
||||
}
|
||||
|
||||
final SeverityAndOccurrences defaultSeveritiesAndOccurrences = myScopeToAverageSeverityMap.get(myDefaultScopeName);
|
||||
if (defaultSeveritiesAndOccurrences == null) {
|
||||
for (Map.Entry<String, SeverityAndOccurrences> e: myScopeToAverageSeverityMap.entrySet()) {
|
||||
final HighlightSeverity primarySeverity = e.getValue().getPrimarySeverity();
|
||||
if (primarySeverity != null) {
|
||||
result.put(e.getKey(), primarySeverity);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
final int allInspectionsCount = defaultSeveritiesAndOccurrences.getOccurrencesSize();
|
||||
final Map<String, HighlightSeverity> allScopes = defaultSeveritiesAndOccurrences.getOccurrences();
|
||||
String[] reversedScopesOrder = ArrayUtil.reverseArray(scopesOrder);
|
||||
|
||||
+6
@@ -39,10 +39,12 @@ public class MultiScopeSeverityIcon implements Icon {
|
||||
private final static int SIZE = 12;
|
||||
|
||||
private final LinkedHashMap<String, HighlightDisplayLevel> myScopeToAverageSeverityMap;
|
||||
private final String myDefaultScopeName;
|
||||
|
||||
public MultiScopeSeverityIcon(final Map<String, HighlightSeverity> scopeToAverageSeverityMap,
|
||||
final String defaultScopeName,
|
||||
final InspectionProfileImpl inspectionProfile) {
|
||||
myDefaultScopeName = defaultScopeName;
|
||||
final List<String> sortedScopeNames = new ArrayList<String>(scopeToAverageSeverityMap.keySet());
|
||||
myScopeToAverageSeverityMap = new LinkedHashMap<String, HighlightDisplayLevel>();
|
||||
Collections.sort(sortedScopeNames, new ScopeOrderComparator(inspectionProfile));
|
||||
@@ -61,6 +63,10 @@ public class MultiScopeSeverityIcon implements Icon {
|
||||
}
|
||||
}
|
||||
|
||||
public String getDefaultScopeName() {
|
||||
return myDefaultScopeName;
|
||||
}
|
||||
|
||||
public LinkedHashMap<String, HighlightDisplayLevel> getScopeToAverageSeverityMap() {
|
||||
return myScopeToAverageSeverityMap;
|
||||
}
|
||||
|
||||
+9
-5
@@ -36,8 +36,8 @@ public class ScopesAndSeveritiesHintTable extends JBTable {
|
||||
private final static int SCOPE_COLUMN = 0;
|
||||
private final static int SEVERITY_COLUMN = 1;
|
||||
|
||||
public ScopesAndSeveritiesHintTable(final LinkedHashMap<String, HighlightDisplayLevel> scopeToAverageSeverityMap) {
|
||||
super(new MyModel(scopeToAverageSeverityMap));
|
||||
public ScopesAndSeveritiesHintTable(final LinkedHashMap<String, HighlightDisplayLevel> scopeToAverageSeverityMap, String defaultScopeName) {
|
||||
super(new MyModel(scopeToAverageSeverityMap, defaultScopeName));
|
||||
|
||||
getColumnModel().getColumn(SCOPE_COLUMN).setCellRenderer(new DefaultTableCellRenderer() {
|
||||
@Override
|
||||
@@ -90,10 +90,12 @@ public class ScopesAndSeveritiesHintTable extends JBTable {
|
||||
private final static class MyModel extends AbstractTableModel {
|
||||
|
||||
private final LinkedHashMap<String, HighlightDisplayLevel> myScopeToAverageSeverityMap;
|
||||
private final String myDefaultScopeName;
|
||||
private final List<String> myScopes;
|
||||
|
||||
public MyModel(final LinkedHashMap<String, HighlightDisplayLevel> scopeToAverageSeverityMap) {
|
||||
public MyModel(final LinkedHashMap<String, HighlightDisplayLevel> scopeToAverageSeverityMap, String defaultScopeName) {
|
||||
myScopeToAverageSeverityMap = scopeToAverageSeverityMap;
|
||||
myDefaultScopeName = defaultScopeName;
|
||||
myScopes = new ArrayList<String>(myScopeToAverageSeverityMap.keySet());
|
||||
}
|
||||
|
||||
@@ -118,9 +120,11 @@ public class ScopesAndSeveritiesHintTable extends JBTable {
|
||||
|
||||
@Override
|
||||
public Object getValueAt(final int rowIndex, final int columnIndex) {
|
||||
final String scopeName = myScopes.get(rowIndex);
|
||||
switch (columnIndex) {
|
||||
case SCOPE_COLUMN: return rowIndex < getRowCount() - 1 ? myScopes.get(rowIndex) : "Everywhere else";
|
||||
case SEVERITY_COLUMN: return myScopeToAverageSeverityMap.get(myScopes.get(rowIndex));
|
||||
case SCOPE_COLUMN:
|
||||
return myDefaultScopeName.equals(scopeName) ? "Everywhere else" : scopeName;
|
||||
case SEVERITY_COLUMN: return myScopeToAverageSeverityMap.get(scopeName);
|
||||
default: throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user