1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.cosylab.gui.components.table;
21
22 import javax.swing.event.TableModelEvent;
23 import javax.swing.table.AbstractTableModel;
24
25
26
27
28
29
30
31
32
33
34
35
36 public class TableModelRows extends AbstractTableModel
37 implements TableRowModelListener
38 {
39 private static final long serialVersionUID = 1L;
40 private TableRowModel rowModel;
41
42
43
44
45
46
47 public TableModelRows(TableRowModel model)
48 {
49 this();
50 rowModel = model;
51 model.addTableRowModelListener(this);
52 }
53
54 protected TableModelRows()
55 {
56 super();
57 }
58
59
60
61
62 public int getColumnCount()
63 {
64 return rowModel.getColumnCount();
65 }
66
67
68
69
70 public int getRowCount()
71 {
72 return rowModel.getRowCount();
73 }
74
75
76
77
78 public Object getValueAt(int rowIndex, int columnIndex)
79 {
80 TableRow r = rowModel.getRowAt(rowIndex);
81
82 if (r != null) {
83 return r.getValueAt(columnIndex);
84 }
85
86 return null;
87 }
88
89
90
91
92
93
94 public TableRowModel getRowModel()
95 {
96 return rowModel;
97 }
98
99
100
101
102 public void tableChanged(TableRowModelEvent event)
103 {
104 int first = event.getRowIndex();
105 int last = first;
106
107 if (first==TableRowModelEvent.HEADER_ROW) {
108 fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
109 return;
110 }
111
112 for (int i = 1; i < event.getRows().length; i++) {
113 int j = rowModel.getRowIndex(event.getRows()[i]);
114
115 if (j < first) {
116 first = j;
117 } else if (j > last) {
118 last = j;
119 }
120 }
121
122 if (first == -1) {
123 first = 0;
124 last = getRowCount();
125 }
126
127 fireTableChanged(new TableModelEvent(this, first, last,
128 event.getValue(), event.getType()));
129 }
130
131
132
133
134 public String getColumnName(int column)
135 {
136 return rowModel.getColumnName(column);
137 }
138
139
140
141
142 public boolean isCellEditable(int rowIndex, int columnIndex)
143 {
144 TableRow r = rowModel.getRowAt(rowIndex);
145
146 if (r == null) {
147 return false;
148 }
149
150 return r.isValueSettable(columnIndex);
151 }
152 }
153
154