]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/RowHeaderRenderer.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / RowHeaderRenderer.java
diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/RowHeaderRenderer.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/RowHeaderRenderer.java
new file mode 100644 (file)
index 0000000..e41b500
--- /dev/null
@@ -0,0 +1,57 @@
+package org.simantics.spreadsheet.ui;\r
+\r
+import java.awt.Color;\r
+import java.awt.Component;\r
+import java.awt.Dimension;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import javax.swing.JLabel;\r
+import javax.swing.JList;\r
+import javax.swing.JTable;\r
+import javax.swing.ListCellRenderer;\r
+import javax.swing.SwingConstants;\r
+import javax.swing.table.JTableHeader;\r
+\r
+public class RowHeaderRenderer implements ListCellRenderer {\r
+\r
+       private static Color ROW_HEADER_BACKGROUND = new Color(240, 240, 240);\r
+       \r
+       final Map<Integer, JLabel> labels = new HashMap<Integer, JLabel>();\r
+       final JTable table;\r
+       final JTableHeader header;\r
+\r
+       RowHeaderRenderer(JTable table) {\r
+               header = table.getTableHeader();\r
+               this.table = table;\r
+       }\r
+\r
+       private JLabel newLabel() {\r
+               JLabel label = new JLabel();\r
+               label.setOpaque(true);\r
+               label.setBorder(TableBorder.BORDER);\r
+               label.setHorizontalAlignment(SwingConstants.CENTER);\r
+               label.setForeground(header.getForeground());\r
+               label.setBackground(ROW_HEADER_BACKGROUND);\r
+               label.setFont(header.getFont());\r
+               return label;\r
+       }\r
+\r
+       public Component getListCellRendererComponent(JList list, Object value,\r
+                       int index, boolean isSelected, boolean cellHasFocus) {\r
+\r
+               JLabel label = labels.get(index);\r
+               if(label == null) {\r
+                       label = newLabel();\r
+                       labels.put(index, label);\r
+               }\r
+\r
+               label.setText((value == null) ? "" : value.toString());\r
+\r
+               int height = table.getRowHeight(index);\r
+               label.setPreferredSize(new Dimension(label.getWidth(), height));\r
+               \r
+               return label;\r
+\r
+       }\r
+}\r