JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / src / javajs / swing / JTable.java
1 package javajs.swing;\r
2 \r
3 import javajs.awt.Dimension;\r
4 import javajs.util.BS;\r
5 import javajs.util.SB;\r
6 \r
7 \r
8 public class JTable extends JComponent implements ListSelectionModel, ColumnSelectionModel {\r
9 \r
10         private AbstractTableModel tableModel;\r
11         private BS bsSelectedCells;\r
12         private BS bsSelectedRows;\r
13         \r
14         boolean rowSelectionAllowed;\r
15         boolean cellSelectionEnabled;\r
16   Object selectionListener;\r
17 \r
18         public JTable(AbstractTableModel tableModel) {\r
19                 super("JT");\r
20                 this.tableModel = tableModel;\r
21                 this.bsSelectedCells = new BS();\r
22                 this.bsSelectedRows = new BS();\r
23         }\r
24 \r
25         @Override\r
26   public ListSelectionModel getSelectionModel() {\r
27                 return this;\r
28         }\r
29 \r
30         public ColumnSelectionModel getColumnModel() {\r
31                 return this;\r
32         }\r
33 \r
34         public void setPreferredScrollableViewportSize(Dimension dimension) {\r
35                 this.width = dimension.width;\r
36                 this.height = dimension.height;\r
37         }\r
38 \r
39         public void clearSelection() {\r
40                 bsSelectedCells.clearAll();\r
41                 bsSelectedRows.clearAll();\r
42         }\r
43 \r
44         public void setRowSelectionAllowed(boolean b) {\r
45                 rowSelectionAllowed = b;\r
46         }\r
47 \r
48         public void setRowSelectionInterval(int i, int j) {\r
49                 bsSelectedRows.clearAll();\r
50                 bsSelectedRows.setBits(i, j);\r
51                 bsSelectedCells.clearAll();\r
52         }\r
53 \r
54         public void setCellSelectionEnabled(boolean enabled) {\r
55                 cellSelectionEnabled = enabled;\r
56         }\r
57 \r
58         /** \r
59          * It will be the function of the JavaScript on the \r
60          * page to do with selectionListener what is desired.\r
61          * \r
62          * @param listener \r
63          * \r
64          */\r
65         @Override\r
66   public void addListSelectionListener(Object listener) {\r
67                 selectionListener = listener;\r
68         }\r
69 \r
70         @Override\r
71   public TableColumn getColumn(int i) {\r
72                 return tableModel.getColumn(i);\r
73         }\r
74 \r
75         @Override\r
76         public String toHTML() {\r
77                 SB sb = new SB();\r
78                 sb.append("\n<table id='" + id + "_table' class='JTable' >");\r
79                 tableModel.toHTML(sb, id, bsSelectedRows);\r
80                 sb.append("\n</table>\n");\r
81                 return sb.toString();\r
82         }\r
83 }\r