View Javadoc

1   /*
2    *  File: AbstractJaretTableModel.java 
3    *  Copyright (c) 2004-2007  Peter Kliem (Peter.Kliem@jaret.de)
4    *  A commercial license is available, see http://www.jaret.de.
5    *
6    * All rights reserved. This program and the accompanying materials
7    * are made available under the terms of the Common Public License v1.0
8    * which accompanies this distribution, and is available at
9    * http://www.eclipse.org/legal/cpl-v10.html
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 }