package studio.kdb; import javax.swing.border.Border; import studio.ui.BlankIcon; import studio.ui.ScaledIcon; import studio.ui.Util; import java.awt.Component; import java.awt.Font; import java.awt.Insets; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; public class TableHeaderRenderer extends DefaultTableCellRenderer { public TableHeaderRenderer() { super(); setHorizontalAlignment(SwingConstants.RIGHT); setVerticalAlignment(SwingConstants.CENTER); setOpaque(true); final Border border = UIManager.getBorder("TableHeader.cellBorder"); if (border != null) { setBorder(border); } setFont(UIManager.getFont("TableHeader.font")); setBackground(UIManager.getColor("TableHeader.background")); setForeground(UIManager.getColor("TableHeader.foreground")); } public void setFont(Font f) { super.setFont(f); invalidate(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // setFont(table.getFont()); if (table.getModel() instanceof KTableModel) { column = table.convertColumnIndexToModel(column); Icon icon = null; Insets insets = getInsets(); int targetHeight = getFontMetrics(getFont()).getHeight() - insets.bottom - insets.top; KTableModel ktm = (KTableModel) table.getModel(); if (ktm.isSortedDesc()) { if (column == ktm.getSortByColumn()) if (ktm.getColumnClass(column) == K.KSymbolVector.class) icon = new ScaledIcon(Util.getImage(Config.imageBase + "sort_az_ascending.png"),targetHeight); else icon = new ScaledIcon(Util.getImage(Config.imageBase + "sort_descending.png"),targetHeight); } else if (ktm.isSortedAsc()) if (column == ktm.getSortByColumn()) if (ktm.getColumnClass(column) == K.KSymbolVector.class) icon = new ScaledIcon(Util.getImage(Config.imageBase + "sort_az_descending.png"),targetHeight); else icon = new ScaledIcon(Util.getImage(Config.imageBase + "sort_ascending.png"),targetHeight); if (icon != null) setIcon(icon); else { icon = new ScaledIcon(Util.getImage(Config.imageBase + "sort_ascending.png"),targetHeight); setIcon(new BlankIcon(icon)); } } String text = " "; if (value != null) text = value.toString() + " "; setText(text); return this; } }