public class SelectableListTableContentProvider extends ListTableContentProvider implements ISelectableTableContentProvider, IRefreshableContentProvider
Extends ListTableContentProvider
with select rows
capabilities. Each row must have an ID calculated using ListTableContentProvider.setRowIdBinding(ValueBinding)
property.
class Item { public int getId() {}; public String getName() {}; }; Item[] items = new Item[] {}; ISelectableTableContentProvider provider = new SelectableListTableContentProvider(items, "varitem.id", "varitem"); for (int i = 0; i < provider.getRowCount(); i++) { provider.setRowIndex(i); if (provider.isRowAvailable()) { Integer itemId = (Integer)provider.getValue("id"); String itemName = (String)provider.getValue("name"); provider.setRowSelected((i / 2 == 1)); // select every other row } }; Collection selectedIds = provider.getRowSelectedIds(); // get all selected rows "id" properties for (java.util.Iterator it = selectedIds.iterator(); it.hasNext(); ) { provider.setRowById(it.next().toString()); // set row by its id provider.getValue("name"); // returns item's name } Collection selectedRows = provider.getSelectedRows(); // returns all selected rows as collection of Item's for (Object row: selectedRows) { Item item = (Item)row; item.getName(); }
This implementation is optimized for addressing rows by id.
Modifier and Type | Class and Description |
---|---|
protected static class |
SelectableListTableContentProvider.Row
Addressable row wrapper.
|
protected static class |
SelectableListTableContentProvider.RowComparator
Compares two rows using column sorting info.
|
Modifier and Type | Field and Description |
---|---|
protected static int |
m_autoIdCounter |
protected Map |
m_map
Map of
String row ids to SelectableListTableContentProvider.Row instances. |
protected List |
m_originalList
m_list contains SelectableListTableContentProvider.Row instances;
m_originalList contains original objects. |
protected SelectableTableContentProviderHelper |
m_selectableHelper
Holds selection state.
|
m_array, m_canTemplateRow, m_index, m_list, m_onCreateRow, m_onDeleteRow, m_rowId, m_rowType, m_sort, m_templateRow, m_var
fExpireWithPageFlow
Constructor and Description |
---|
SelectableListTableContentProvider()
Default constructor.
|
SelectableListTableContentProvider(List list)
Constructor.
|
SelectableListTableContentProvider(List list,
String rowIdBinding)
Constructor.
|
SelectableListTableContentProvider(List list,
String rowIdBinding,
String rowVariable)
Fully initialized constructor.
|
SelectableListTableContentProvider(List list,
ValueBinding rowIdBinding)
Default constructor.
|
SelectableListTableContentProvider(Object[] array)
Constructor.
|
SelectableListTableContentProvider(Object[] array,
String rowIdBinding)
Constructor.
|
SelectableListTableContentProvider(Object[] array,
String rowIdBinding,
String rowVariable)
Fully initialized constructor.
|
SelectableListTableContentProvider(Object[] array,
ValueBinding rowIdBinding)
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
createRow()
Creates new row and adds it to the list.
|
void |
deleteRow()
Deletes current row from the list.
|
Object |
getCurrentRow()
Returns current row.
|
List |
getList()
Returns wrapped list object
|
boolean |
getNeedRefresh()
Returns
true when IRefreshable.isAutoRefresh() is on and the result properties need to be refreshed from
the data source by executing IRefreshable.refresh() method. |
String |
getRowId()
Returns unique identifier for the current row.
|
int |
getRowSelectedCount()
Returns number of selected rows.
|
Collection |
getRowSelectedIds()
Returns collection of
String ids of the selected rows. |
Collection |
getRowUnselectedIds()
Returns collection of
String ids of the un-selected rows
(all other rows are selected implicitly)
May be empty or contain non-existent ids; never null, never contains null. |
List<Object> |
getSelectedRows()
Returns collection of selected row objects (not IDs) from the ISelectableTableContentProvider.
|
boolean |
getUseUnselectedModel()
Returns true if it's more effecient to use unselected model
(ie
ISelectableTableContentProvider.getRowUnselectedIds() rather than ISelectableTableContentProvider.getRowSelectedIds() ). |
boolean |
isAddressable()
Checks if this content provider truly is addressable.
|
boolean |
isAutoRefresh()
Returns false
|
boolean |
isRowSelected()
Returns
true if current row is selected. |
void |
moveTo(int index)
Moves the current row to the specified index.
|
void |
refresh()
Should be called by the clients when the wrapped list
objects gets changed outside this provider.
|
void |
setAutoRefresh(boolean autorefresh)
Sets auto refresh mode on.
|
void |
setCurrentRow(Object data)
Sets new current row object
|
void |
setList(List list)
Sets a list to wrap
|
void |
setNeedRefresh(boolean needRefresh)
Tells the provider that the input parameters have changed and the output results need to be refreshed the next time any
output property is requested via
IContentProvider.getValue(Object) . |
void |
setRowById(String id)
Selects current row by its id.
|
void |
setRowSelected(boolean selected)
Sets the selection status for the current row.
|
void |
setRowSelectedIds(Collection ids)
Sets new selection using a collection of
String ids of the rows to select. |
void |
setRowUnselectedIds(Collection ids)
Unselects rows using a collection of
String ids of the un-selected rows
(all other rows are selected implicitly). |
void |
setRowVariable(String var)
Sets new row variable and resets the list
|
void |
setTemplateRow()
Sets provider to state where it returns properties for template pseudo-row.
|
protected void |
sort()
(Re-)sorts list according to sort info.
|
boolean |
supportsAutoRefresh()
Returns
false |
protected void |
updateOriginalList()
Copies changes from the current list to the original list.
|
calculateRowId, calculateRowId, getArray, getCanTemplateRow, getOnCreateRow, getOnDeleteRow, getPropertyKeys, getRowCount, getRowIdBinding, getRowIndex, getRowType, getRowVariable, getSort, getType, getValue, hasProperty, isReadOnly, isReorderable, isRowAvailable, isTemplateRow, newRow, setArray, setCanTemplateRow, setOnCreateRow, setOnDeleteRow, setRowId, setRowIdBinding, setRowIndex, setRowType, setSort, setValue, toString
getExpireWithPageFlow, setExpireWithPageFlow
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getRowCount, getRowIndex, getRowVariable, isRowAvailable, setRowIndex
getPropertyKeys, getType, getValue, hasProperty, toString
protected List m_originalList
m_list
contains SelectableListTableContentProvider.Row
instances;
m_originalList
contains original objects.protected Map m_map
String
row ids to SelectableListTableContentProvider.Row
instances.protected SelectableTableContentProviderHelper m_selectableHelper
protected static int m_autoIdCounter
public SelectableListTableContentProvider()
setList(List)
or ListTableContentProvider.setArray(Object[])
, ListTableContentProvider.setRowIdBinding(ValueBinding)
and
setRowVariable(String)
to be set before use.public SelectableListTableContentProvider(List list)
ListTableContentProvider.setRowIdBinding(ValueBinding)
and
setRowVariable(String)
to be set before use.list
- a list to wrappublic SelectableListTableContentProvider(List list, String rowIdBinding)
setRowVariable(String)
to be set before use.list
- a list to wraprowIdBinding
- row id binding expressionpublic SelectableListTableContentProvider(List list, String rowIdBinding, String rowVariable)
list
- a list to wraprowIdBinding
- row id binding expressionrowVariable
- row variable to use in the expression for accessing list elements datapublic SelectableListTableContentProvider(List list, ValueBinding rowIdBinding)
setList(List)
or ListTableContentProvider.setArray(Object[])
, ListTableContentProvider.setRowIdBinding(ValueBinding)
and
setRowVariable(String)
to be set before use.public SelectableListTableContentProvider(Object[] array)
ListTableContentProvider.setRowIdBinding(ValueBinding)
and
setRowVariable(String)
to be set before use.array
- an array to wrappublic SelectableListTableContentProvider(Object[] array, String rowIdBinding)
setRowVariable(String)
to be set before use.array
- an array to wraprowIdBinding
- row id binding expressionpublic SelectableListTableContentProvider(Object[] array, String rowIdBinding, String rowVariable)
array
- an array to wraprowIdBinding
- row id binding expressionrowVariable
- row variable to use in the expression for accessing list elements datapublic SelectableListTableContentProvider(Object[] array, ValueBinding rowIdBinding)
setList(List)
or ListTableContentProvider.setArray(Object[])
, ListTableContentProvider.setRowIdBinding(ValueBinding)
and
setRowVariable(String)
to be set before use.public void refresh()
refresh
in interface IRefreshable
public boolean supportsAutoRefresh()
false
supportsAutoRefresh
in interface IRefreshable
IRefreshable.setAutoRefresh(boolean)
public void setAutoRefresh(boolean autorefresh) throws ContentProviderException
IRefreshable
Sets auto refresh mode on. When auto refresh mode is on, the provider calls IRefreshable.getNeedRefresh()
to determine whether the refresh needs to be done before returning any result properties. If it returns
true
, the provider calls IRefreshable.refresh()
method to updated the result properties.
setAutoRefresh
in interface IRefreshable
autorefresh
- true to turn it onContentProviderException
- if autorefresh is trueIRefreshable.supportsAutoRefresh()
,
IRefreshable.getNeedRefresh()
,
IRefreshable.setNeedRefresh(boolean)
public boolean isAutoRefresh()
isAutoRefresh
in interface IRefreshable
public boolean getNeedRefresh()
IRefreshable
Returns true
when IRefreshable.isAutoRefresh()
is on and the result properties need to be refreshed from
the data source by executing IRefreshable.refresh()
method.
Implementations may return an accurate value from this method if they can track the changes to the input parameter
properties or they may require the clients to call IRefreshable.setNeedRefresh(boolean)
explicitely.
getNeedRefresh
in interface IRefreshable
true
when the output properties are not up-to-date with the current input parameters, i.e. IRefreshable.refresh()
needs to be executed manually or automatically.public void setNeedRefresh(boolean needRefresh)
IRefreshable
IContentProvider.getValue(Object)
.setNeedRefresh
in interface IRefreshable
needRefresh
- true
if the input parameters have changedpublic void setRowVariable(String var)
setRowVariable
in interface ITableContentProvider
setRowVariable
in class ListTableContentProvider
var
- row variable namepublic void setTemplateRow()
IUpdateableTableContentProvider
ITableContentProvider.isRowAvailable()
returns false.
Setting the row index or id to any value removes provider from this state.setTemplateRow
in interface IUpdateableTableContentProvider
setTemplateRow
in class ListTableContentProvider
public void createRow()
ListTableContentProvider.newRow()
method
to instantiate an instance of the row object, calculates it id and inserts
it before the current row, or at the end of the list if no current row.createRow
in interface IUpdateableTableContentProvider
createRow
in class ListTableContentProvider
public void deleteRow()
ListTableContentProvider
deleteRow
in interface IUpdateableTableContentProvider
deleteRow
in class ListTableContentProvider
ITableContentProvider.getRowIndex()
public void moveTo(int index)
IReorderableTableContentProvider
moveTo
in interface IReorderableTableContentProvider
moveTo
in class ListTableContentProvider
index
- (Zero-based) new row index.public boolean isAddressable()
IAddressableTableContentProvider
isAddressable
in interface IAddressableTableContentProvider
isAddressable
in class ListTableContentProvider
true
if addressable.public String getRowId()
IAddressableTableContentProvider
getRowId
in interface IAddressableTableContentProvider
getRowId
in class ListTableContentProvider
public void setRowById(String id)
IAddressableTableContentProvider
setRowIndex(-1)
).setRowById
in interface IAddressableTableContentProvider
setRowById
in class ListTableContentProvider
id
- row id to find and make currentpublic boolean isRowSelected()
ISelectableTableContentProvider
true
if current row is selected.isRowSelected
in interface ISelectableTableContentProvider
public void setRowSelected(boolean selected)
ISelectableTableContentProvider
setRowSelected
in interface ISelectableTableContentProvider
selected
- true
to select current row; false
to unselect.public int getRowSelectedCount()
ISelectableTableContentProvider
getRowSelectedCount
in interface ISelectableTableContentProvider
public Collection getRowSelectedIds()
ISelectableTableContentProvider
String
ids of the selected rows.
May be empty or contain non-existent ids; never null, never contains null.getRowSelectedIds
in interface ISelectableTableContentProvider
public void setRowSelectedIds(Collection ids)
ISelectableTableContentProvider
String
ids of the rows to select.
May be empty or contain non-existent ids; never null, never contains null.setRowSelectedIds
in interface ISelectableTableContentProvider
ids
- the collection of String
row idspublic boolean getUseUnselectedModel()
ISelectableTableContentProvider
ISelectableTableContentProvider.getRowUnselectedIds()
rather than ISelectableTableContentProvider.getRowSelectedIds()
).getUseUnselectedModel
in interface ISelectableTableContentProvider
public Collection getRowUnselectedIds()
ISelectableTableContentProvider
String
ids of the un-selected rows
(all other rows are selected implicitly)
May be empty or contain non-existent ids; never null, never contains null.getRowUnselectedIds
in interface ISelectableTableContentProvider
public void setRowUnselectedIds(Collection ids)
ISelectableTableContentProvider
String
ids of the un-selected rows
(all other rows are selected implicitly).
May be empty or contain non-existent ids; never null, never contains null.setRowUnselectedIds
in interface ISelectableTableContentProvider
ids
- collection of String
row idspublic List<Object> getSelectedRows()
provider
- selectable table providerITableContentProvider.getRowCount()
sizepublic Object getCurrentRow()
getCurrentRow
in interface ITableContentProvider
getCurrentRow
in class ListTableContentProvider
ITableContentProvider.isRowAvailable()
public void setCurrentRow(Object data)
IUpdateableTableContentProvider
setCurrentRow
in interface IUpdateableTableContentProvider
setCurrentRow
in class ListTableContentProvider
data
- new row object to replace object returned by ITableContentProvider.getCurrentRow()
protected void sort()
ListTableContentProvider
sort
in class ListTableContentProvider
ListTableContentProvider.setSort(ISortInfo)
protected void updateOriginalList()
public List getList()
getList
in class ListTableContentProvider
public void setList(List list)
setList
in class ListTableContentProvider
list
- a list