001 package util.swing; 002 003 import javax.swing.table.*; 004 005 import java.util.Comparator; 006 007 /** 008 * <i>Abstract</i> base implementation of {@link TableEntryDescriptor}. 009 * 010 * <p>This base implementations is useful when you want to define a TableEntryDescriptor that describes rows 011 * that are non-editable and use the default renderer for each cell, based on the cell value's class. 012 * 013 * @see util.swing.AbstractTableModel 014 * 015 * @author Steffen Zschaler 016 * @version 2.0 27/07/1999 017 * @since v2.0 018 */ 019 public abstract class AbstractTableEntryDescriptor extends Object implements TableEntryDescriptor { 020 021 /** 022 * Dummy constructor, does nothing but call <code>super()</code>. 023 */ 024 public AbstractTableEntryDescriptor() { 025 super(); 026 } 027 028 /** 029 * Returns <code>null</code> to indicate that the default cell renderer is to be used based on the cell 030 * value's class. 031 * 032 * @override Sometimes Override this method if you want to define specialized cell renderers for certain 033 * columns. 034 */ 035 public TableCellRenderer getCellRenderer(int nIdx) { 036 return null; 037 } 038 039 /** 040 * Returns <code>null</code> to indicate that the default cell editor is to be used based on the cell 041 * value's class. 042 * 043 * @override Sometimes Override this method if you want to define specialized cell editors for certain 044 * columns. Note that you will also have to override {@link #isElementEditable} and {@link #setValueAt} 045 * for complete editing support. 046 */ 047 public TableCellEditor getCellEditor(int nIdx) { 048 return null; 049 } 050 051 /** 052 * Returns <code>false</code> to indicate that no cell is editable in the entire table. 053 * 054 * @override Sometimes Override this method if you want to allow editing for certain cells. The actual class 055 * of the record passed as <code>oRecord</code> depends on the {@link util.swing.AbstractTableModel TableModel} 056 * with which you work. See {@link util.swing.AbstractTableModel#getRecord} in the concrete TableModel for a 057 * description. 058 * Note that you will also have to override {@link #setValueAt} for complete editing support. It is also 059 * recommended that you override {@link #getCellEditor} if you override this method. 060 */ 061 public boolean isElementEditable(Object oRecord, int nIdx) { 062 return false; 063 } 064 065 /** 066 * Does nothing because AbstractTableEntryDescriptor does not allow editing by default. 067 * 068 * @override Sometimes Override this method if you want to allow editing for certain cells. The actual class 069 * of the record passed as <code>oRecord</code> depends on the {@link util.swing.AbstractTableModel TableModel} 070 * with which you work. See {@link util.swing.AbstractTableModel#getRecord} in the concrete TableModel for a 071 * description. 072 * Note that you will also have to override {@link #isElementEditable} for complete editing support. It is 073 * also recommended that you override {@link #getCellEditor} if you override this method. 074 */ 075 public void setValueAt(Object oRecord, int nIdx, Object oValue) {} 076 077 /** 078 * Returns false because AbstractTableEntryDescriptor does not allow sorting by column by default. 079 * 080 * @param nIdx the index of the column concerned. 081 * 082 * @return whether or not records can be sorted by the specified column. 083 * 084 * @override Sometimes Override this method if you want to support sorting by column 085 */ 086 public boolean canSortByColumn(int nIdx) { 087 return false; 088 } 089 090 /** 091 * Returns <code>null</code> because AbstractTableEntryDescriptor does not allow sorting by column by default. 092 * 093 * @param nIdx the index of the column concerned. 094 * 095 * @override Sometimes Override this method if you want to support sorting by column 096 */ 097 public Comparator<Object> getColumnOrder(int nIdx) { 098 return null; 099 } 100 }