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