1 package org.simantics.spreadsheet.ui;
\r
3 import java.awt.Color;
\r
4 import java.awt.Component;
\r
5 import java.awt.Dimension;
\r
6 import java.util.HashMap;
\r
7 import java.util.Map;
\r
9 import javax.swing.JLabel;
\r
10 import javax.swing.JList;
\r
11 import javax.swing.JTable;
\r
12 import javax.swing.ListCellRenderer;
\r
13 import javax.swing.SwingConstants;
\r
14 import javax.swing.table.JTableHeader;
\r
16 public class RowHeaderRenderer implements ListCellRenderer {
\r
18 private static Color ROW_HEADER_BACKGROUND = new Color(240, 240, 240);
\r
20 final Map<Integer, JLabel> labels = new HashMap<Integer, JLabel>();
\r
22 final JTableHeader header;
\r
24 RowHeaderRenderer(JTable table) {
\r
25 header = table.getTableHeader();
\r
29 private JLabel newLabel() {
\r
30 JLabel label = new JLabel();
\r
31 label.setOpaque(true);
\r
32 label.setBorder(TableBorder.BORDER);
\r
33 label.setHorizontalAlignment(SwingConstants.CENTER);
\r
34 label.setForeground(header.getForeground());
\r
35 label.setBackground(ROW_HEADER_BACKGROUND);
\r
36 label.setFont(header.getFont());
\r
40 public Component getListCellRendererComponent(JList list, Object value,
\r
41 int index, boolean isSelected, boolean cellHasFocus) {
\r
43 JLabel label = labels.get(index);
\r
46 labels.put(index, label);
\r
49 label.setText((value == null) ? "" : value.toString());
\r
51 int height = table.getRowHeight(index);
\r
52 label.setPreferredSize(new Dimension(label.getWidth(), height));
\r