R
- the type representing the rows in this table modelC
- the type used to identify columns in this table model, Integer for indexed identification for examplepublic class DefaultFilteredTableModel<R,C> extends AbstractTableModel implements FilteredTableModel<R,C>
DefaultFilteredTableModel tableModel = ...; JTable table = new JTable(tableModel, tableModel.columnModel(), tableModel.selectionModel());
Modifier and Type | Class and Description |
---|---|
protected static class |
DefaultFilteredTableModel.DefaultSummaryValueProvider<T extends Number,C>
A default SummaryValueProvider implementation
|
FilteredTableModel.ColumnValueProvider<R,C>, FilteredTableModel.RowsRemoved
listenerList
ASYNC_REFRESH
Constructor and Description |
---|
DefaultFilteredTableModel(List<FilteredTableColumn<C>> tableColumns,
FilteredTableModel.ColumnValueProvider<R,C> columnValueProvider)
Instantiates a new table model.
|
DefaultFilteredTableModel(List<FilteredTableColumn<C>> tableColumns,
FilteredTableModel.ColumnValueProvider<R,C> columnValueProvider,
Collection<? extends ColumnConditionModel<? extends C,?>> columnFilterModels)
Instantiates a new table model.
|
Modifier and Type | Method and Description |
---|---|
void |
addClearListener(EventListener listener) |
void |
addDataChangedListener(EventListener listener) |
void |
addFilterListener(EventListener listener) |
protected void |
addItem(R item)
Adds the given item to the bottom of this table model.
|
protected void |
addItems(Collection<R> items)
Adds the given items to the bottom of this table model.
|
protected void |
addItemsAt(int index,
Collection<R> items)
Adds the given items to this table model, non-filtered items are added at the given index.
|
protected void |
addItemsAtSorted(int index,
Collection<R> items)
Adds the given items to this table model, non-filtered items are added at the given index.
|
protected void |
addItemSorted(R item)
Adds the given item to the bottom of this table model.
|
protected void |
addItemsSorted(Collection<R> items)
Adds the given items to the bottom of this table model.
|
void |
addRefreshFailedListener(EventDataListener<Throwable> listener) |
void |
addRefreshListener(EventListener listener) |
void |
addRowsRemovedListener(EventDataListener<FilteredTableModel.RowsRemoved> listener)
Adds a listener that is notified each time rows are removed from this model.
|
void |
addSortListener(EventListener listener) |
boolean |
allowSelectionChange()
A default implementation returning true
|
void |
clear()
Clears all items from this table model
|
<T> ColumnConditionModel<C,T> |
columnFilterModel(C columnIdentifier)
Returns the
ColumnConditionModel for the column with the given identifier. |
Map<C,ColumnConditionModel<? extends C,?>> |
columnFilterModels() |
FilteredTableColumnModel<C> |
columnModel() |
Optional<ColumnSummaryModel> |
columnSummaryModel(C columnIdentifier)
Returns the
ColumnSummaryModel associated with columnIdentifier |
boolean |
containsItem(R item)
Returns true if this model contains the given item, visible or filtered.
|
protected <T extends Number> |
createColumnValueProvider(C columnIdentifier)
Creates a ColumnValueProvider for the given column
|
int |
filteredItemCount() |
List<R> |
filteredItems() |
void |
filterItems()
Filters this model according to the condition returned by
FilteredModel.getIncludeCondition() . |
Class<?> |
getColumnClass(C columnIdentifier)
Returns the class of the column with the given identifier
|
Class<?> |
getColumnClass(int columnIndex) |
int |
getColumnCount() |
Predicate<R> |
getIncludeCondition()
Returns the include condition used by this model, null if no include condition has been set.
|
int |
getRowCount() |
String |
getStringValueAt(int rowIndex,
C columnIdentifier)
Returns a String representation of the value for the given row and column.
|
Object |
getValueAt(int rowIndex,
int columnIndex) |
int |
indexOf(R item) |
boolean |
isAsyncRefresh() |
boolean |
isFiltered(R item)
Returns true if this model contains the given item, and it is filtered, that is, is not visible
|
boolean |
isMergeOnRefresh() |
boolean |
isVisible(R item)
Returns true if this model contains the given item, and it is visible, that is, not filtered
|
R |
itemAt(int rowIndex) |
List<R> |
items() |
void |
refresh()
Refreshes the items in this table model, respecting the selection, filtering as well as sorting states.
|
StateObserver |
refreshingObserver() |
protected Collection<R> |
refreshItems()
Returns the items this table model should contain.
|
void |
refreshThen(Consumer<Collection<R>> afterRefresh)
Refreshes the data in this model.
|
void |
removeClearListener(EventListener listener) |
void |
removeDataChangedListener(EventListener listener) |
void |
removeFilterListener(EventListener listener) |
void |
removeItem(R item)
Removes the given item from this table model
|
void |
removeItemAt(int index)
Removes from this table model the visible element whose index is between index
|
void |
removeItems(Collection<R> items)
Removes the given items from this table model
|
void |
removeItems(int fromIndex,
int toIndex)
Removes from this table model all visible elements whose index is between fromIndex, inclusive and toIndex, exclusive
|
void |
removeRefreshFailedListener(EventDataListener<Throwable> listener) |
void |
removeRefreshListener(EventListener listener) |
void |
removeRowsRemovedListener(EventDataListener<FilteredTableModel.RowsRemoved> listener) |
void |
removeSortListener(EventListener listener) |
FilteredTableSearchModel |
searchModel() |
<T> Collection<T> |
selectedValues(C columnIdentifier) |
FilteredTableSelectionModel<R> |
selectionModel() |
void |
setAsyncRefresh(boolean asyncRefresh)
Sometimes we'd like to be able to refresh one or more models and perform some action on
the refreshed data, after the refresh has finished, such as selecting a particular item or such.
|
void |
setIncludeCondition(Predicate<R> includeCondition)
Sets the include condition and filters the model
|
protected void |
setItemAt(int index,
R item)
Sets the item at the given index.
|
void |
setMergeOnRefresh(boolean mergeOnRefresh) |
void |
sortItems()
Sorts the visible items according to the
FilteredTableSortModel , keeping the selected items. |
FilteredTableSortModel<R,C> |
sortModel() |
<T> Collection<T> |
values(C columnIdentifier) |
int |
visibleItemCount() |
List<R> |
visibleItems() |
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnName, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addTableModelListener, getColumnName, isCellEditable, removeTableModelListener, setValueAt
public DefaultFilteredTableModel(List<FilteredTableColumn<C>> tableColumns, FilteredTableModel.ColumnValueProvider<R,C> columnValueProvider)
tableColumns
- the table columns to base this table model oncolumnValueProvider
- the column value providerpublic DefaultFilteredTableModel(List<FilteredTableColumn<C>> tableColumns, FilteredTableModel.ColumnValueProvider<R,C> columnValueProvider, Collection<? extends ColumnConditionModel<? extends C,?>> columnFilterModels)
tableColumns
- the table columns to base this table model oncolumnValueProvider
- the column value providercolumnFilterModels
- the filter models if any, may be nullpublic final List<R> items()
items
in interface FilteredModel<R>
FilteredModel.visibleItems()
,
FilteredModel.filteredItems()
public final List<R> visibleItems()
visibleItems
in interface FilteredModel<R>
public final List<R> filteredItems()
filteredItems
in interface FilteredModel<R>
public final int visibleItemCount()
visibleItemCount
in interface FilteredModel<R>
public final int filteredItemCount()
filteredItemCount
in interface FilteredModel<R>
public final int getColumnCount()
getColumnCount
in interface TableModel
public final int getRowCount()
getRowCount
in interface TableModel
public final boolean containsItem(R item)
FilteredModel
containsItem
in interface FilteredModel<R>
item
- the itempublic final boolean isVisible(R item)
FilteredModel
isVisible
in interface FilteredModel<R>
item
- the itempublic final boolean isFiltered(R item)
FilteredModel
isFiltered
in interface FilteredModel<R>
item
- the itempublic final void refresh()
FilteredModel.setAsyncRefresh(boolean)
.
Note that an empty selection event will be triggered during a normal refresh, since the model is cleared
before it is repopulated, during which the selection is cleared as well. Using merge on insert
(FilteredTableModel.setMergeOnRefresh(boolean)
) will prevent that at a considerable performance cost.refresh
in interface FilteredModel<R>
refresh
in interface FilteredTableModel<R,C>
refreshItems()
public final void refreshThen(Consumer<Collection<R>> afterRefresh)
FilteredModel
FilteredModel.addRefreshFailedListener(EventDataListener)
to listen for exceptions that happen during asynchronous refresh.refreshThen
in interface FilteredModel<R>
afterRefresh
- called after a successful refresh, may be nullFilteredModel.refreshingObserver()
,
FilteredModel.addRefreshListener(EventListener)
,
FilteredModel.addRefreshFailedListener(EventDataListener)
,
FilteredModel.setAsyncRefresh(boolean)
public final StateObserver refreshingObserver()
refreshingObserver
in interface FilteredModel<R>
public final void clear()
FilteredTableModel
clear
in interface FilteredTableModel<R,C>
public final FilteredTableSelectionModel<R> selectionModel()
selectionModel
in interface FilteredTableModel<R,C>
public final FilteredTableSortModel<R,C> sortModel()
sortModel
in interface FilteredTableModel<R,C>
public final FilteredTableSearchModel searchModel()
searchModel
in interface FilteredTableModel<R,C>
public final Optional<ColumnSummaryModel> columnSummaryModel(C columnIdentifier)
FilteredTableModel
ColumnSummaryModel
associated with columnIdentifier
columnSummaryModel
in interface FilteredTableModel<R,C>
columnIdentifier
- the column identifierpublic final Map<C,ColumnConditionModel<? extends C,?>> columnFilterModels()
columnFilterModels
in interface FilteredTableModel<R,C>
public final <T> ColumnConditionModel<C,T> columnFilterModel(C columnIdentifier)
FilteredTableModel
ColumnConditionModel
for the column with the given identifier.columnFilterModel
in interface FilteredTableModel<R,C>
T
- the column value typecolumnIdentifier
- the column identifierpublic final <T> Collection<T> values(C columnIdentifier)
values
in interface FilteredTableModel<R,C>
T
- the value typecolumnIdentifier
- the identifier of the column for which to retrieve the valuespublic final <T> Collection<T> selectedValues(C columnIdentifier)
selectedValues
in interface FilteredTableModel<R,C>
T
- the value typecolumnIdentifier
- the identifier of the column for which to retrieve the valuespublic final boolean isMergeOnRefresh()
isMergeOnRefresh
in interface FilteredTableModel<R,C>
public final void setMergeOnRefresh(boolean mergeOnRefresh)
setMergeOnRefresh
in interface FilteredTableModel<R,C>
mergeOnRefresh
- true if merge on refresh should be enabledpublic final boolean isAsyncRefresh()
isAsyncRefresh
in interface FilteredModel<R>
FilteredModel.ASYNC_REFRESH
public final void setAsyncRefresh(boolean asyncRefresh)
FilteredModel
setAsyncRefresh
in interface FilteredModel<R>
asyncRefresh
- true if asynchronous refreshing should be enabled, true by defaultFilteredModel.ASYNC_REFRESH
public final R itemAt(int rowIndex)
itemAt
in interface FilteredTableModel<R,C>
rowIndex
- the row indexpublic final int indexOf(R item)
indexOf
in interface FilteredTableModel<R,C>
item
- the itempublic final void sortItems()
FilteredTableModel
FilteredTableSortModel
, keeping the selected items.
Calling this method with the sort model disabled has no effect.sortItems
in interface FilteredTableModel<R,C>
FilteredTableModel.sortModel()
,
FilteredTableModel.addSortListener(EventListener)
,
FilteredTableSortModel.isSortingEnabled()
public final void filterItems()
FilteredModel
FilteredModel.getIncludeCondition()
.
If no include condition is specified this method does nothing.
This method does not interfere with the internal ordering of the visible items.filterItems
in interface FilteredModel<R>
FilteredModel.getIncludeCondition()
,
FilteredModel.setIncludeCondition(Predicate)
,
FilteredModel.addFilterListener(EventListener)
public final Predicate<R> getIncludeCondition()
FilteredModel
getIncludeCondition
in interface FilteredModel<R>
public final void setIncludeCondition(Predicate<R> includeCondition)
FilteredModel
setIncludeCondition
in interface FilteredModel<R>
includeCondition
- the Predicate to use when filtering, null if no filtering should be performedpublic final void removeItem(R item)
FilteredTableModel
removeItem
in interface FilteredTableModel<R,C>
item
- the item to remove from the modelpublic final void removeItems(Collection<R> items)
FilteredTableModel
removeItems
in interface FilteredTableModel<R,C>
items
- the items to remove from the modelpublic final void removeItemAt(int index)
FilteredTableModel
removeItemAt
in interface FilteredTableModel<R,C>
index
- the index of the row to be removedpublic final void removeItems(int fromIndex, int toIndex)
FilteredTableModel
removeItems
in interface FilteredTableModel<R,C>
fromIndex
- index of first row to be removedtoIndex
- index after last row to be removedpublic boolean allowSelectionChange()
allowSelectionChange
in interface FilteredTableModel<R,C>
public final void addRowsRemovedListener(EventDataListener<FilteredTableModel.RowsRemoved> listener)
FilteredTableModel
addRowsRemovedListener
in interface FilteredTableModel<R,C>
listener
- the listenerpublic final void removeRowsRemovedListener(EventDataListener<FilteredTableModel.RowsRemoved> listener)
removeRowsRemovedListener
in interface FilteredTableModel<R,C>
listener
- the listener to removepublic final FilteredTableColumnModel<C> columnModel()
columnModel
in interface FilteredTableModel<R,C>
public final Class<?> getColumnClass(C columnIdentifier)
FilteredTableModel
getColumnClass
in interface FilteredTableModel<R,C>
columnIdentifier
- the column identifierpublic final Class<?> getColumnClass(int columnIndex)
getColumnClass
in interface TableModel
getColumnClass
in class AbstractTableModel
public final Object getValueAt(int rowIndex, int columnIndex)
getValueAt
in interface TableModel
public final String getStringValueAt(int rowIndex, C columnIdentifier)
FilteredTableModel
getStringValueAt
in interface FilteredTableModel<R,C>
rowIndex
- the row indexcolumnIdentifier
- the column identifierpublic final void addRefreshListener(EventListener listener)
addRefreshListener
in interface FilteredModel<R>
listener
- a listener to be notified each time this model has been successfully refreshedFilteredModel.refresh()
public final void removeRefreshListener(EventListener listener)
removeRefreshListener
in interface FilteredModel<R>
listener
- the listener to removeFilteredModel.refresh()
public final void addRefreshFailedListener(EventDataListener<Throwable> listener)
addRefreshFailedListener
in interface FilteredModel<R>
listener
- a listener to be notified each time an asynchronous refresh has failedFilteredModel.refresh()
public final void removeRefreshFailedListener(EventDataListener<Throwable> listener)
removeRefreshFailedListener
in interface FilteredModel<R>
listener
- the listener to removepublic final void addFilterListener(EventListener listener)
addFilterListener
in interface FilteredModel<R>
listener
- a listener notified each time this model is filteredpublic final void removeFilterListener(EventListener listener)
removeFilterListener
in interface FilteredModel<R>
listener
- the listener to removepublic final void addSortListener(EventListener listener)
addSortListener
in interface FilteredTableModel<R,C>
listener
- a listener to be notified each time the model has been sortedpublic final void removeSortListener(EventListener listener)
removeSortListener
in interface FilteredTableModel<R,C>
listener
- the listener to removepublic final void addDataChangedListener(EventListener listener)
addDataChangedListener
in interface FilteredTableModel<R,C>
listener
- a listener to be notified each time the table data changespublic final void removeDataChangedListener(EventListener listener)
removeDataChangedListener
in interface FilteredTableModel<R,C>
listener
- the listener to removepublic final void addClearListener(EventListener listener)
addClearListener
in interface FilteredTableModel<R,C>
listener
- a listener to be notified each time the table model is clearedpublic final void removeClearListener(EventListener listener)
removeClearListener
in interface FilteredTableModel<R,C>
listener
- the listener to removeprotected Collection<R> refreshItems()
protected <T extends Number> Optional<ColumnSummaryModel.SummaryValueProvider<T>> createColumnValueProvider(C columnIdentifier)
T
- the value typecolumnIdentifier
- the column identifierprotected final void addItems(Collection<R> items)
items
- the items to addprotected final void addItemsSorted(Collection<R> items)
items
- the items to addprotected final void addItemsAt(int index, Collection<R> items)
index
- the index at which to add the itemsitems
- the items to addprotected final void addItemsAtSorted(int index, Collection<R> items)
index
- the index at which to add the itemsitems
- the items to addFilteredTableSortModel.isSortingEnabled()
protected final void addItem(R item)
item
- the item to addprotected final void addItemSorted(R item)
item
- the item to addprotected final void setItemAt(int index, R item)
index
- the indexitem
- the itemsetIncludeCondition(Predicate)