]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/RowHeaderRenderer.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / RowHeaderRenderer.java
1 package org.simantics.spreadsheet.ui;
2
3 import java.awt.Color;
4 import java.awt.Component;
5 import java.awt.Dimension;
6 import java.util.HashMap;
7 import java.util.Map;
8
9 import javax.swing.JLabel;
10 import javax.swing.JList;
11 import javax.swing.JTable;
12 import javax.swing.ListCellRenderer;
13 import javax.swing.SwingConstants;
14 import javax.swing.table.JTableHeader;
15
16 public class RowHeaderRenderer implements ListCellRenderer {
17
18         private static Color ROW_HEADER_BACKGROUND = new Color(240, 240, 240);
19         
20         final Map<Integer, JLabel> labels = new HashMap<Integer, JLabel>();
21         final JTable table;
22         final JTableHeader header;
23
24         RowHeaderRenderer(JTable table) {
25                 header = table.getTableHeader();
26                 this.table = table;
27         }
28
29         private JLabel newLabel() {
30                 JLabel label = new JLabel();
31                 label.setOpaque(true);
32                 label.setBorder(TableBorder.BORDER);
33                 label.setHorizontalAlignment(SwingConstants.CENTER);
34                 label.setForeground(header.getForeground());
35                 label.setBackground(ROW_HEADER_BACKGROUND);
36                 label.setFont(header.getFont());
37                 return label;
38         }
39
40         public Component getListCellRendererComponent(JList list, Object value,
41                         int index, boolean isSelected, boolean cellHasFocus) {
42
43                 JLabel label = labels.get(index);
44                 if(label == null) {
45                         label = newLabel();
46                         labels.put(index, label);
47                 }
48
49                 label.setText((value == null) ? "" : value.toString());
50
51                 int height = table.getRowHeight(index);
52                 label.setPreferredSize(new Dimension(label.getWidth(), height));
53                 
54                 return label;
55
56         }
57 }