|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavax.swing.table.AbstractTableModel
org.gjt.sp.jedit.gui.FilteredTableModel<E>
public abstract class FilteredTableModel<E extends javax.swing.table.TableModel>
This TableModel delegates another model to add some filtering features to any JTable. To use it you must implement the abstract method passFilter(). This method is called for each row, and must return true if the row should be visible, and false otherwise. It is also possible to override the method prepareFilter() that allow you to transform the filter String. Usually you can return it as lowercase
Here is an example of how to use it extracted from the InstallPanel
PluginTableModel tableModel = new PluginTableModel();
filteredTableModel = new FilteredTableModel(tableModel)
{
public String prepareFilter(String filter)
{
return filter.toLowerCase();
}
public boolean passFilter(int row, String filter)
{
String pluginName = (String) delegated.getValueAt(row, 1);
return pluginName.toLowerCase().contains(filter);
}
};
table = new JTable(filteredTableModel);
filteredTableModel.setTable(table);
It is not mandatory but highly recommended to give the JTable instance to the
model in order to keep the selection after the filter has been updated
| Field Summary | |
|---|---|
protected E |
delegated
The delegated table model. |
| Fields inherited from class javax.swing.table.AbstractTableModel |
|---|
listenerList |
| Constructor Summary | |
|---|---|
protected |
FilteredTableModel(E delegated)
|
| Method Summary | |
|---|---|
java.lang.Class<?> |
getColumnClass(int columnIndex)
|
int |
getColumnCount()
|
java.lang.String |
getColumnName(int columnIndex)
|
E |
getDelegated()
|
int |
getInternal2ExternalRow(int internalRowIndex)
Converts a row index from the delegated table model into a row index of the JTable. |
int |
getRowCount()
|
int |
getTrueRow(int rowIndex)
Converts a row index from the JTable to an internal row index from the delegated model. |
java.lang.Object |
getValueAt(int rowIndex,
int columnIndex)
|
boolean |
isCellEditable(int rowIndex,
int columnIndex)
|
abstract boolean |
passFilter(int row,
java.lang.String filter)
This callback indicates if a row passes the filter. |
java.lang.String |
prepareFilter(java.lang.String filter)
|
void |
setDelegated(E delegated)
|
void |
setFilter(java.lang.String filter)
|
void |
setTable(javax.swing.JTable table)
Set the JTable that uses this model. |
void |
setValueAt(java.lang.Object aValue,
int rowIndex,
int columnIndex)
|
void |
tableChanged(javax.swing.event.TableModelEvent e)
This fine grain notification tells listeners the exact range of cells, rows, or columns that changed. |
| 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 |
| Field Detail |
|---|
protected E extends javax.swing.table.TableModel delegated
| Constructor Detail |
|---|
protected FilteredTableModel(E delegated)
| Method Detail |
|---|
public void setTable(javax.swing.JTable table)
table - the table that uses the modelpublic E getDelegated()
public void setDelegated(E delegated)
public void setFilter(java.lang.String filter)
public java.lang.String prepareFilter(java.lang.String filter)
public abstract boolean passFilter(int row,
java.lang.String filter)
row - the row number the delegate row countfilter - the filter string
public int getRowCount()
getRowCount in interface javax.swing.table.TableModelpublic int getColumnCount()
getColumnCount in interface javax.swing.table.TableModelpublic java.lang.String getColumnName(int columnIndex)
getColumnName in interface javax.swing.table.TableModelgetColumnName in class javax.swing.table.AbstractTableModelpublic java.lang.Class<?> getColumnClass(int columnIndex)
getColumnClass in interface javax.swing.table.TableModelgetColumnClass in class javax.swing.table.AbstractTableModel
public boolean isCellEditable(int rowIndex,
int columnIndex)
isCellEditable in interface javax.swing.table.TableModelisCellEditable in class javax.swing.table.AbstractTableModel
public java.lang.Object getValueAt(int rowIndex,
int columnIndex)
getValueAt in interface javax.swing.table.TableModel
public void setValueAt(java.lang.Object aValue,
int rowIndex,
int columnIndex)
setValueAt in interface javax.swing.table.TableModelsetValueAt in class javax.swing.table.AbstractTableModelpublic int getTrueRow(int rowIndex)
rowIndex - the row index
public int getInternal2ExternalRow(int internalRowIndex)
internalRowIndex - the internal row index
public void tableChanged(javax.swing.event.TableModelEvent e)
tableChanged in interface javax.swing.event.TableModelListener
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||