com.gargoylesoftware.base.gui
Class ReflectedTableModel

java.lang.Object
  extended byjavax.swing.table.AbstractTableModel
      extended bycom.gargoylesoftware.base.gui.ReflectedTableModel
All Implemented Interfaces:
Serializable, TableModel

public class ReflectedTableModel
extends AbstractTableModel

A table model that uses reflection to retrieve values out of the row objects.

The sample below will create a JTable with one row of data and one column per property in the Date class (Date has 10 properties in JDK1.3).

 final JTable table = new JTable();
 final ReflectedTableModel model = new ReflectedTableModel(Date.class);
 model.getRows().add( new Date() );
 table.setModel(model);
 
This sample will only provide columns for month and year.
 final JTable table = new JTable();
 final ReflectedTableModel model = new ReflectedTableModel();
 model.getRows().add( new Date() );
 model.getColumns().add( new ReflectedTableModel.ColumnInfo("month") );
 model.getColumns().add( new ReflectedTableModel.ColumnInfo("year") );
 table.setModel(model);
 
Tip: To enable debugging information call setTraceChannel(TraceChannel) with a non-null TraceChannel.
 model.setTraceChannel(Trace.out)
 

Version:
$Revision: 1.8 $
Author:
Mike Bowler
See Also:
Serialized Form

Nested Class Summary
static class ReflectedTableModel.ColumnInfo
          This class contains information about one specific column in the table.
 
Field Summary
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
ReflectedTableModel()
          Create an empty model with no columns and no rows.
ReflectedTableModel(Class clazz)
          Create an empty model with no rows but the columns preset to match the properties in the given class.
 
Method Summary
protected  void assertNotNull(String fieldName, Object object)
          Throw an exception if the specified object is null
 int getColumnCount()
          Return the number of columns.
 String getColumnName(int index)
          Return the name of the column at the specified index.
 List getColumns()
          Return a list containing the ColumnInfo objects that are used to define each column.
 int getRowCount()
          Return the number of rows.
 List getRows()
          Return a list containing the objects that are used to create each row.
 TraceChannel getTraceChannel()
          Return the channel currently being used for tracing or null if tracing is disabled.
 Object getValueAt(int rowIndex, int columnIndex)
          Return the specified object.
 void setTraceChannel(TraceChannel channel)
          Set the channel to be used for tracing.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReflectedTableModel

public ReflectedTableModel()
Create an empty model with no columns and no rows.


ReflectedTableModel

public ReflectedTableModel(Class clazz)
                    throws IntrospectionException
Create an empty model with no rows but the columns preset to match the properties in the given class.

Parameters:
clazz - The class to get properties from.
Throws:
IntrospectionException - If the Introspector is unable to get the properties for this class.
Method Detail

getRows

public List getRows()
Return a list containing the objects that are used to create each row. This list is backed by the original store such that changes to this list will be reflected in the table model.

Returns:
The rows.

getColumns

public List getColumns()
Return a list containing the ColumnInfo objects that are used to define each column. This list is backed by the original store such that changes to this list will be reflected in the table model.

Returns:
The columns.

getColumnCount

public int getColumnCount()
Return the number of columns.

Returns:
the number of columns.

getRowCount

public int getRowCount()
Return the number of rows.

Returns:
The number of rows.

getValueAt

public Object getValueAt(int rowIndex,
                         int columnIndex)
Return the specified object.

Parameters:
rowIndex - The row index
columnIndex - The columnIndex
Returns:
The object at the specified row and column.

getColumnName

public String getColumnName(int index)
Return the name of the column at the specified index.

Parameters:
index - The index of the column.
Returns:
The name of the column at the specified index.

setTraceChannel

public void setTraceChannel(TraceChannel channel)
Set the channel to be used for tracing.

Parameters:
channel - The channel to be used for tracing or null if tracing is to be disabled.

getTraceChannel

public TraceChannel getTraceChannel()
Return the channel currently being used for tracing or null if tracing is disabled.

Returns:
The trace channel or null if a channel hasn't been set.

assertNotNull

protected final void assertNotNull(String fieldName,
                                   Object object)
Throw an exception if the specified object is null

Parameters:
fieldName - The name of the paremeter we are checking
object - The value of the parameter we are checking


Copyright © 1998-2005 Gargoyle Software Inc.. All Rights Reserved.