| package com.intellij.ide.ui.laf.darcula; |
| |
| import javax.swing.*; |
| import javax.swing.plaf.UIResource; |
| import javax.swing.table.DefaultTableCellRenderer; |
| import java.awt.*; |
| |
| /** |
| * @author Konstantin Bulenkov |
| */ |
| public class DarculaDefaultTableHeaderRenderer extends DefaultTableCellRenderer implements UIResource { |
| public DarculaDefaultTableHeaderRenderer() { |
| setHorizontalAlignment(SwingConstants.CENTER); |
| } |
| |
| @Override |
| public Component getTableCellRendererComponent(JTable table, Object value, |
| boolean isSelected, boolean hasFocus, int row, int column) { |
| //if (table == null) { |
| // setBorder(DefaultTableCellRenderer.noFocusBorder); |
| // setValue(value); |
| // setOpaque(false); |
| // return this; |
| //} |
| // |
| //if (table.getTableHeader() == null) { |
| // return super.getTableCellRendererComponent(table, value, |
| // isSelected, hasFocus, row, column); |
| //} |
| // |
| //JTableHeader tableHeader = table.getTableHeader(); |
| //TableHeaderUI tableHeaderUI = tableHeader.getUI(); |
| //if (UIUtil.isUnderDarcula() && (tableHeaderUI instanceof DarculaTableHeaderUI)) { |
| // DarculaTableHeaderUI ui = (DarculaTableHeaderUI) tableHeaderUI; |
| |
| // StateTransitionTracker.ModelStateInfo modelStateInfo = ui |
| // .getModelStateInfo(column); |
| // ComponentState currState = ui.getColumnState(column); |
| // |
| // if (modelStateInfo != null) { |
| // Map<ComponentState, StateContributionInfo> activeStates = modelStateInfo |
| // .getStateContributionMap(); |
| // SubstanceColorScheme colorScheme = getColorSchemeForState( |
| // tableHeader, currState); |
| // if (currState.isDisabled() || (activeStates == null) |
| // || (activeStates.size() == 1)) { |
| // super.setForeground(new ColorUIResource(colorScheme |
| // .getForegroundColor())); |
| // } else { |
| // float aggrRed = 0; |
| // float aggrGreen = 0; |
| // float aggrBlue = 0; |
| // |
| // for (Map.Entry<ComponentState, StateTransitionTracker.StateContributionInfo> activeEntry : modelStateInfo |
| // .getStateContributionMap().entrySet()) { |
| // ComponentState activeState = activeEntry.getKey(); |
| // SubstanceColorScheme scheme = getColorSchemeForState( |
| // tableHeader, activeState); |
| // Color schemeFg = scheme.getForegroundColor(); |
| // float contribution = activeEntry.getValue() |
| // .getContribution(); |
| // aggrRed += schemeFg.getRed() * contribution; |
| // aggrGreen += schemeFg.getGreen() * contribution; |
| // aggrBlue += schemeFg.getBlue() * contribution; |
| // } |
| // super.setForeground(new ColorUIResource(new Color( |
| // (int) aggrRed, (int) aggrGreen, (int) aggrBlue))); |
| // } |
| // } else { |
| // SubstanceColorScheme scheme = getColorSchemeForState( |
| // tableHeader, currState); |
| // super.setForeground(new ColorUIResource(scheme |
| // .getForegroundColor())); |
| // } |
| //} else { |
| // super.setForeground(table.getForeground()); |
| //} |
| // |
| //this.setBackground(tableHeader.getBackground()); |
| // |
| //// fix for issue 319 - using font from the table header |
| //if (tableHeader.getFont() != null) { |
| // setFont(tableHeader.getFont()); |
| //} else { |
| // setFont(table.getFont()); |
| //} |
| // |
| //TableUI tableUI = table.getUI(); |
| //if (SubstanceLookAndFeel.isCurrentLookAndFeel() |
| // && (tableUI instanceof SubstanceTableUI)) { |
| // this.setBorder(new EmptyBorder(((SubstanceTableUI) tableUI) |
| // .getCellRendererInsets())); |
| //} |
| // |
| //this.setValue(value); |
| //this.setOpaque(false); |
| // |
| //this.setEnabled(tableHeader.isEnabled() && table.isEnabled()); |
| // |
| //// fix for defect 242 - not showing sort icon |
| //if (SubstanceLookAndFeel.isCurrentLookAndFeel()) { |
| // this.setIcon(null); |
| // RowSorter<? extends TableModel> rowSorter = table.getRowSorter(); |
| // if (rowSorter != null) { |
| // setHorizontalTextPosition(JLabel.LEADING); |
| // java.util.List<? extends RowSorter.SortKey> sortKeys = rowSorter |
| // .getSortKeys(); |
| // Icon sortIcon = null; |
| // SubstanceColorScheme scheme = null; |
| // if (tableHeaderUI instanceof SubstanceTableHeaderUI) { |
| // SubstanceTableHeaderUI ui = (SubstanceTableHeaderUI) tableHeaderUI; |
| // ComponentState state = ui.getColumnState(column); |
| // ColorSchemeAssociationKind colorSchemeAssociationKind = (state == ComponentState.ENABLED) ? ColorSchemeAssociationKind.MARK |
| // : ColorSchemeAssociationKind.HIGHLIGHT_MARK; |
| // scheme = SubstanceColorSchemeUtilities.getColorScheme( |
| // tableHeader, colorSchemeAssociationKind, state); |
| // } else { |
| // scheme = SubstanceColorSchemeUtilities.getColorScheme( |
| // tableHeader, ComponentState.ENABLED); |
| // } |
| // |
| // if (sortKeys.size() > 0 |
| // && sortKeys.get(0).getColumn() == table |
| // .convertColumnIndexToModel(column)) { |
| // switch (sortKeys.get(0).getSortOrder()) { |
| // case ASCENDING: |
| // sortIcon = SubstanceImageCreator.getArrowIcon( |
| // SubstanceSizeUtils |
| // .getComponentFontSize(tableHeader), |
| // SwingConstants.NORTH, scheme); |
| // break; |
| // case DESCENDING: |
| // sortIcon = SubstanceImageCreator.getArrowIcon( |
| // SubstanceSizeUtils |
| // .getComponentFontSize(tableHeader), |
| // SwingConstants.SOUTH, scheme); |
| // break; |
| // case UNSORTED: |
| // sortIcon = null; |
| // } |
| // this.setIcon(sortIcon); |
| // } |
| // } |
| //} |
| |
| return this; |
| } |
| |
| } |