You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
6.5 KiB
165 lines
6.5 KiB
/* |
|
* 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.bulenkov.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; |
|
} |
|
|
|
}
|
|
|