Holger's
Java API

com.antelmann.util.table
Class PatternTableModel<T>

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by com.antelmann.util.table.AbstractObjectTableModel<T>
          extended by com.antelmann.util.table.PatternTableModel<T>
All Implemented Interfaces:
ListRetriever<T>, Refreshable, ObjectTableModel<T>, Serializable, Iterable<T>, TableModel
Direct Known Subclasses:
MessageTableModel

public class PatternTableModel<T>
extends AbstractObjectTableModel<T>

a very flexible ObjectTableModel that allows to define PatternExtractors per column

Since:
03.01.2012, 15:10:32
Author:
Holger Antelmann
See Also:
PatternExtractor, Misc.getMethodExtractor(String, Class), PropertyEntryImpl.getPropertyExtractor(String, Class), Serialized Form

Field Summary
 
Fields inherited from class com.antelmann.util.table.AbstractObjectTableModel
columnNames, columnTypes
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
PatternTableModel()
           
PatternTableModel(List<T> list)
           
 
Method Summary
 void addColumn(Class<T> entryType, String columnName, String methodOrFieldName, boolean ensureAccessibility)
          convenience method
<R> void
addColumn(String name, Field field)
           
<R> void
addColumn(String name, Method method)
           
 void addColumn(String name, PatternExtractor<? super T,?> pe)
           
<P> void
addColumn(String name, PatternExtractor<? super T,P> pe, Class<? super P> type)
          this method is called by all other addColumn.. methods and provides most flexibility as well as best performance depending on the efficient implementation of a given PatternExtractor.
 void addColumn(String columnName, String methodName)
           
<R> void
addColumn(String columnName, String methodName, Class<R> returnType)
          allows to easily add a column based on the method name.
static Field findField(Class<?> type, String fieldName)
          looks for the field in the declared class and its super classes
static Method findMethod(Class<?> type, String methodName)
          looks for the method with no arguments in the declared class and its super classes
 Class<?> getColumnClass(int column)
           
 int getColumnCount()
           
 String getColumnName(int column)
           
 Object getValueAt(int row, int column)
           
 boolean isCellEditable(int row, int column)
           
 void removeColumn(int c)
           
 void removeColumn(String c)
           
 String setColumnName(int column, String displayName)
           
 void setColumnNames(String... columnNames)
           
 void setValueAt(Object value, int row, int column)
           
 String setValueSetter(String column, String methodName)
           
 
Methods inherited from class com.antelmann.util.table.AbstractObjectTableModel
add, add, clear, contains, getList, getRelevantList, getRelevantListDescription, getRowCount, getRowFor, getRowValue, iterator, moveDown, moveUp, refreshContent, remove, remove, setColumnType, setColumnTypes, setRowValues, swap
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.table.TableModel
addTableModelListener, removeTableModelListener
 

Constructor Detail

PatternTableModel

public PatternTableModel()

PatternTableModel

public PatternTableModel(List<T> list)
Method Detail

addColumn

public void addColumn(String name,
                      PatternExtractor<? super T,?> pe)

addColumn

public <P> void addColumn(String name,
                          PatternExtractor<? super T,P> pe,
                          Class<? super P> type)
this method is called by all other addColumn.. methods and provides most flexibility as well as best performance depending on the efficient implementation of a given PatternExtractor.


addColumn

public void addColumn(String columnName,
                      String methodName)

addColumn

public <R> void addColumn(String columnName,
                          String methodName,
                          Class<R> returnType)
allows to easily add a column based on the method name. While very convenient, the resulting PatternExtractor is determining the method via reflection upon each call of getValueAt(int, int), which doesn't provide for the best performance. Hence, for better performance you should consider using addColumn(String, Method), which still uses reflection to invoke the method but at least doesn't have to determine the method upon each call.


addColumn

public void addColumn(Class<T> entryType,
                      String columnName,
                      String methodOrFieldName,
                      boolean ensureAccessibility)
               throws IllegalArgumentException
convenience method

Throws:
IllegalArgumentException
See Also:
addColumn(String, Method), addColumn(String, Field)

addColumn

public <R> void addColumn(String name,
                          Method method)
               throws IllegalArgumentException
Throws:
IllegalArgumentException

addColumn

public <R> void addColumn(String name,
                          Field field)

removeColumn

public void removeColumn(int c)
                  throws IndexOutOfBoundsException
Throws:
IndexOutOfBoundsException

removeColumn

public void removeColumn(String c)
                  throws IndexOutOfBoundsException
Throws:
IndexOutOfBoundsException

getColumnCount

public int getColumnCount()

getColumnClass

public Class<?> getColumnClass(int column)
Specified by:
getColumnClass in interface TableModel
Overrides:
getColumnClass in class AbstractObjectTableModel<T>

getValueAt

public Object getValueAt(int row,
                         int column)

getColumnName

public String getColumnName(int column)
Specified by:
getColumnName in interface TableModel
Overrides:
getColumnName in class AbstractObjectTableModel<T>

setColumnNames

public void setColumnNames(String... columnNames)
                    throws UnsupportedOperationException
Overrides:
setColumnNames in class AbstractObjectTableModel<T>
Throws:
UnsupportedOperationException

setColumnName

public String setColumnName(int column,
                            String displayName)
                     throws UnsupportedOperationException
Overrides:
setColumnName in class AbstractObjectTableModel<T>
Throws:
UnsupportedOperationException

setValueSetter

public String setValueSetter(String column,
                             String methodName)

isCellEditable

public boolean isCellEditable(int row,
                              int column)
Specified by:
isCellEditable in interface TableModel
Overrides:
isCellEditable in class AbstractTableModel

setValueAt

public void setValueAt(Object value,
                       int row,
                       int column)
Specified by:
setValueAt in interface TableModel
Overrides:
setValueAt in class AbstractTableModel
See Also:
setValueSetter(String, String)

findField

public static Field findField(Class<?> type,
                              String fieldName)
                       throws SecurityException,
                              NoSuchFieldException
looks for the field in the declared class and its super classes

Throws:
SecurityException
NoSuchFieldException

findMethod

public static Method findMethod(Class<?> type,
                                String methodName)
                         throws SecurityException,
                                NoSuchMethodException
looks for the method with no arguments in the declared class and its super classes

Throws:
SecurityException
NoSuchMethodException


(c) Holger Antelmann since 2001- all rights reserved (contact: info@antelmann.com)
see www.antelmann.com/developer for further details and available downloads