diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/ScopesAndSeveritiesHintTable.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/ScopesAndSeveritiesHintTable.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/ScopesAndSeveritiesHintTable.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/ScopesAndSeveritiesHintTable.java new file mode 100644 index 000000000000..05cb7ab193f5 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/ScopesAndSeveritiesHintTable.java @@ -0,0 +1,106 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.profile.codeInspection.ui.inspectionsTree; + +import com.intellij.codeHighlighting.HighlightDisplayLevel; +import com.intellij.lang.annotation.HighlightSeverity; +import com.intellij.profile.codeInspection.ui.SingleInspectionProfilePanel; +import com.intellij.ui.table.JBTable; + +import javax.swing.*; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; +import java.awt.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + +/** + * @author Dmitry Batkovich + */ +public class ScopesAndSeveritiesHintTable extends JBTable { + private final static int SCOPE_COLUMN = 0; + private final static int SEVERITY_COLUMN = 1; + + public ScopesAndSeveritiesHintTable(final LinkedHashMap<String, HighlightSeverity> scopeToAverageSeverityMap) { + super(new MyModel(scopeToAverageSeverityMap)); + + final DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer(); + cellRenderer.setOpaque(false); + getColumnModel().getColumn(SCOPE_COLUMN).setCellRenderer(cellRenderer); + + getColumnModel().getColumn(SEVERITY_COLUMN).setCellRenderer(new DefaultTableCellRenderer() { + @Override + public Component getTableCellRendererComponent(final JTable table, + final Object value, + final boolean isSelected, + final boolean hasFocus, + final int row, + final int column) { + super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + final HighlightSeverity severity = (HighlightSeverity)value; + setIcon(HighlightDisplayLevel.find(severity).getIcon()); + setText(SingleInspectionProfilePanel.renderSeverity(severity)); + setOpaque(false); + return this; + } + }); + setShowGrid(false); + setRowSelectionAllowed(false); + setColumnSelectionAllowed(false); + setOpaque(false); + } + + private final static class MyModel extends AbstractTableModel { + + private final LinkedHashMap<String, HighlightSeverity> myScopeToAverageSeverityMap; + private final List<String> myScopes; + + public MyModel(final LinkedHashMap<String, HighlightSeverity> scopeToAverageSeverityMap) { + myScopeToAverageSeverityMap = scopeToAverageSeverityMap; + myScopes = new ArrayList<String>(myScopeToAverageSeverityMap.keySet()); + } + + @Override + public Class<?> getColumnClass(final int columnIndex) { + switch (columnIndex) { + case SCOPE_COLUMN: return String.class; + case SEVERITY_COLUMN: return HighlightSeverity.class; + default: throw new IllegalArgumentException(); + } + } + + @Override + public int getRowCount() { + return myScopes.size(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public Object getValueAt(final int rowIndex, final int columnIndex) { + switch (columnIndex) { + case SCOPE_COLUMN: return myScopes.get(rowIndex); + case SEVERITY_COLUMN: return myScopeToAverageSeverityMap.get(myScopes.get(rowIndex)); + default: throw new IllegalArgumentException(); + } + + } + } +} |