1
2
3
4
5
6
7
8
9
10
11 package de.jaret.util.ui.table.model;
12
13 import java.util.List;
14 import java.util.Vector;
15
16 /***
17 * Abstract base implementation of a JaretTableModel.
18 *
19 * @author Peter Kliem
20 * @version $Id: AbstractJaretTableModel.java 179 2007-01-07 17:37:50Z olk $
21 */
22 public abstract class AbstractJaretTableModel implements IJaretTableModel {
23 /*** registered listeners. */
24 protected List<IJaretTableModelListener> _listeners;
25
26 /***
27 * {@inheritDoc} Simple default implementation.
28 */
29 public IColumn getColumn(String id) {
30 for (int i = 0; i < getColumnCount(); i++) {
31 if (getColumn(i).getId() != null && getColumn(i).getId().equals(id)) {
32 return getColumn(i);
33 }
34 }
35 return null;
36 }
37
38 /***
39 * {@inheritDoc}
40 */
41 public void setValue(IRow row, IColumn column, Object value) {
42 column.setValue(row, value);
43 }
44
45 /***
46 * {@inheritDoc} Delegates to the column.
47 */
48 public boolean isEditable(IRow row, IColumn column) {
49 return column.isEditable(row);
50 }
51
52 /***
53 * {@inheritDoc}
54 */
55 public synchronized void addJaretTableModelListener(IJaretTableModelListener jtml) {
56 if (_listeners == null) {
57 _listeners = new Vector<IJaretTableModelListener>();
58 }
59 _listeners.add(jtml);
60 }
61
62 /***
63 * {@inheritDoc}
64 */
65 public synchronized void removeJaretTableModelListener(IJaretTableModelListener jtml) {
66 if (_listeners != null) {
67 _listeners.remove(jtml);
68 }
69 }
70
71 /***
72 * Inform listeners about an added row.
73 *
74 * @param idx index of the row
75 * @param row the row
76 */
77 protected void fireRowAdded(int idx, IRow row) {
78 if (_listeners != null) {
79 for (int i = 0; i < _listeners.size(); i++) {
80 IJaretTableModelListener listener = _listeners.get(i);
81 listener.rowAdded(idx, row);
82 }
83 }
84 }
85
86 /***
87 * Inform listeners about a removed row.
88 *
89 * @param row the removed row
90 */
91 protected void fireRowRemoved(IRow row) {
92 if (_listeners != null) {
93 for (int i = 0; i < _listeners.size(); i++) {
94 IJaretTableModelListener listener = _listeners.get(i);
95 listener.rowRemoved(row);
96 }
97 }
98 }
99
100 /***
101 * Inform listeners abou a changed row.
102 *
103 * @param row the changed row
104 */
105 protected void fireRowChanged(IRow row) {
106 if (_listeners != null) {
107 for (int i = 0; i < _listeners.size(); i++) {
108 IJaretTableModelListener listener = _listeners.get(i);
109 listener.rowChanged(row);
110 }
111 }
112 }
113
114 /***
115 * Inform listeners about an added column.
116 *
117 * @param idx index
118 * @param column column
119 */
120 protected void fireColumnAdded(int idx, IColumn column) {
121 if (_listeners != null) {
122 for (IJaretTableModelListener listener : _listeners) {
123 listener.columnAdded(idx, column);
124 }
125 }
126 }
127
128 /***
129 * Inform listeners about a removed column.
130 *
131 * @param column the now missing column
132 */
133 protected void fireColumnRemoved(IColumn column) {
134 if (_listeners != null) {
135 for (IJaretTableModelListener listener : _listeners) {
136 listener.columnRemoved(column);
137 }
138 }
139 }
140
141 /***
142 * Inform listeners about a changed column.
143 *
144 * @param column changed col
145 */
146 protected void fireColumnChanged(IColumn column) {
147 if (_listeners != null) {
148 for (IJaretTableModelListener listener : _listeners) {
149 listener.columnChanged(column);
150 }
151 }
152 }
153
154 /***
155 * Inform listeners about a changed cell.
156 *
157 * @param row row of the cell
158 * @param column olumn of the cell
159 */
160 protected void fireCellChanged(IRow row, IColumn column) {
161 if (_listeners != null) {
162 for (IJaretTableModelListener listener : _listeners) {
163 listener.cellChanged(row, column);
164 }
165 }
166 }
167
168 /***
169 * Inform listeners about a general change of the model data.
170 *
171 */
172 protected void fireTableDataChanged() {
173 if (_listeners != null) {
174 for (IJaretTableModelListener listener : _listeners) {
175 listener.tableDataChanged();
176 }
177 }
178 }
179
180 }