public class ListTableContentProvider extends PageFlowScopeAdapter implements Serializable, IUpdateableTableContentProvider, ISortableTableContentProvider, IReorderableTableContentProvider
Adapts List
and array objects to the
IUpdateableContentProvider
and
ISortableTableContentProvider
enabling their use with table and tree
table UI controls. The properties of the element of the list or array are
available as properties on this provider. For example:
class Item { public int getId(); public String getName(); }; Item[] items = new Items[] {....}; IUpdateableContentProvider provider = new ListTableContentProvider(items); for (int i = 0; i < provider.getRowCount(); i++) { provider.setRowIndex(i); if (provider.isRowAvailable()) { Integer itemId = (Integer)provider.getValue("id"); // returns item id String itemName = (String)provider.getValue("name"); // returns item name provider.setValue("name", "item name" + i); // updates item name } };
setList(List)
or setArray(Object[])
property must be set
before use.
setRowIdExpression(ValueExpression)
must be set to use this implementation
as an IAddressableTableContentProvider
.
Even so, this implementation is not optimized for addressing rows by id;
SelectableListTableContentProvider
is better optimized for this
purpose.
Modifier and Type | Field and Description |
---|---|
protected Object[] |
m_array
Original array backing the list backing this table.
|
protected boolean |
m_canTemplateRow
True if table can be used in template mode; true by default.
|
protected int |
m_index
Current row index.
|
protected List<Object> |
m_list
List backing this table.
|
protected MethodExpression |
m_onCreateRow |
protected MethodExpression |
m_onDeleteRow |
protected ValueExpression |
m_rowId
Value binding used to calculate row id.
|
protected Class<?> |
m_rowType
Row object class.
|
protected ISortInfo |
m_sort
Current sort state.
|
protected Object |
m_templateRow
Current template row object.
|
protected String |
m_var
Row variable name.
|
fExpireWithPageFlow
Constructor and Description |
---|
ListTableContentProvider()
Default constructor.
|
ListTableContentProvider(List<?> list)
Initializes provider with the given list
|
ListTableContentProvider(Object[] array)
Initializes provider with the given array of objects
|
Modifier and Type | Method and Description |
---|---|
protected String |
calculateRowId(int index,
Object data)
Calculates row id from the row data object using
getRowIdBinding() expression. |
protected String |
calculateRowId(Object data)
Deprecated.
use
calculateRowId(int,Object) Calculates row id
from the row data object using getRowIdBinding()
expression. |
void |
createRow()
Creates new row and adds it to the list.
|
void |
deleteRow()
Deletes current row from the list.
|
Object[] |
getArray()
Returns (a copy of the) array previously set as the source
|
boolean |
getCanTemplateRow()
True if provider can be put into template row state.
|
Object |
getCurrentRow()
Returns current row.
|
List |
getList()
Returns wrapped list object
|
MethodBinding |
getOnCreateRow()
Deprecated.
use
getOnCreateRowExpression() instead |
MethodExpression |
getOnCreateRowExpression() |
MethodBinding |
getOnDeleteRow()
Deprecated.
use
getOnDeleteRowExpression() instead |
MethodExpression |
getOnDeleteRowExpression() |
Object[] |
getPropertyKeys()
Returns property keys for the current row object which is an element of
the wrapped array or the list by
getRowIndex() index. |
int |
getRowCount()
Return the number of rows of data objects represented by this DataModel.
|
String |
getRowId()
Returns unique identifier for the current row.
|
ValueBinding |
getRowIdBinding()
Deprecated.
use
getRowIdExpression() instead |
ValueExpression |
getRowIdExpression()
Returns row id binding
|
int |
getRowIndex()
Return the zero-relative index of the currently selected row.
|
Class<?> |
getRowType()
Returns row object class which is used for creation of a new row.
|
String |
getRowVariable()
Returns row variable name.
|
ISortInfo |
getSort()
Returns current sort info.
|
Class<?> |
getType(Object propertyKey)
Returns java type of the given property
|
Object |
getValue(Object propertyKey)
Returns value of the given property
|
boolean |
hasProperty(Object propertyKey)
Checks if the given property is supported by this content provider
|
boolean |
isAddressable()
Checks if this content provider truly is addressable.
|
boolean |
isReadOnly(Object propertyKey)
Returns true if the given property is readonly.
|
boolean |
isReorderable()
True if the rows in this table are re-orderable.
|
boolean |
isRowAvailable()
Return a flag indicating whether there is rowData available at the
current rowIndex.
|
boolean |
isTemplateRow()
Is provider in state where it returns properties for template pseudo-row.
|
void |
moveTo(int index)
Moves the current row to the specified index.
|
protected Object |
newRow()
Creates a new, blank row object to be insterted into the list.
|
void |
setArray(Object[] array)
Creates a list object out of source array and sets it as the source
|
void |
setCanTemplateRow(boolean value)
True if provider can be put into template row state.
|
void |
setCurrentRow(Object row)
Sets new current row object
|
void |
setList(List<?> list)
Sets source list object.
|
void |
setOnCreateRow(MethodBinding onNewRow)
Deprecated.
use
setOnCreateRowExpression(MethodExpression) instead |
void |
setOnCreateRowExpression(MethodExpression onNewRow)
Sets custom handler for
createRow() method |
void |
setOnDeleteRow(MethodBinding deleteRow)
Deprecated.
use
setOnDeleteRowExpression(MethodExpression) instead |
void |
setOnDeleteRowExpression(MethodExpression deleteRow)
Sets custom handler for
deleteRow() method |
void |
setRowById(String id)
Selects current row by its id.
|
void |
setRowId(String id)
JavaBean property setter for
setRowById(String) |
void |
setRowIdBinding(ValueBinding binding)
Deprecated.
use
setRowIdExpression(ValueExpression) instead |
void |
setRowIdExpression(ValueExpression binding)
Sets new row id binding expression.
|
void |
setRowIndex(int rowIndex)
Set the zero-relative index of the currently selected row, or -1 to
indicate that we are not positioned on a row.
|
void |
setRowType(Class<?> rowType)
Sets row object class to use for new row creation.
|
void |
setRowVariable(String var)
Sets row variable name to use for accessing row specific data.
|
void |
setSort(ISortInfo sort)
Sets new sort info, re-sorting the table (if necessary).
|
void |
setTemplateRow()
Sets provider to state where it returns properties for template pseudo-row.
|
void |
setValue(Object propertyKey,
Object value)
Sets new value of the given property
|
protected void |
sort()
(Re-)sorts list according to sort info.
|
String |
toString()
Returns string representation of content.
|
getExpireWithPageFlow, setExpireWithPageFlow
protected Object[] m_array
protected int m_index
protected Object m_templateRow
protected String m_var
protected ISortInfo m_sort
protected ValueExpression m_rowId
protected Class<?> m_rowType
protected boolean m_canTemplateRow
protected MethodExpression m_onCreateRow
protected MethodExpression m_onDeleteRow
public ListTableContentProvider()
Default constructor.
setList(List)
or setArray(Object[])
property must be
set before use.
public ListTableContentProvider(List<?> list)
list
- list of objectspublic ListTableContentProvider(Object[] array)
array
- array of objectspublic String toString()
IContentProvider
toString
in interface IContentProvider
toString
in class Object
String
representation of the wrapped contentpublic Object[] getPropertyKeys()
getRowIndex()
index.getPropertyKeys
in interface IContentProvider
String
or Integer
property keyspublic Class<?> getType(Object propertyKey) throws PropertyNotFoundException
IContentProvider
getType
in interface IContentProvider
propertyKey
- the property key of type String
or Integer
Class
PropertyNotFoundException
- if property is not supportedpublic Object getValue(Object propertyKey) throws ELException, PropertyNotFoundException
IContentProvider
getValue
in interface IContentProvider
propertyKey
- the property key of type String
or Integer
null
PropertyNotFoundException
- if property is not supportedELException
public boolean hasProperty(Object propertyKey)
IContentProvider
hasProperty
in interface IContentProvider
propertyKey
- property key of type String
or Integer
true
if property is supportedpublic boolean isReadOnly(Object propertyKey) throws ELException, PropertyNotFoundException
IUpdateableContentProvider
Returns true if the given property is readonly. If it is readonly, IUpdateableContentProvider.setValue(Object, Object)
will
definitely fail.
isReadOnly
in interface IUpdateableContentProvider
propertyKey
- property key of type String
or Integer
PropertyNotFoundException
ELException
public void setValue(Object propertyKey, Object value) throws ELException, PropertyNotFoundException
IUpdateableContentProvider
Sets new value of the given property
setValue
in interface IUpdateableContentProvider
propertyKey
- property key of type String
or Integer
value
- new property valuePropertyNotFoundException
- if property is not foundELException
public int getRowCount()
ITableContentProvider
Return -1, if the number of rows is unknown, or no wrappedData is available.
getRowCount
in interface ITableContentProvider
DataModel.getRowCount()
public int getRowIndex()
ITableContentProvider
If we are not currently positioned on a row, or no wrappedData is available, return -1.
getRowIndex
in interface ITableContentProvider
DataModel.getRowIndex()
public boolean isRowAvailable()
ITableContentProvider
isRowAvailable
in interface ITableContentProvider
DataModel.isRowAvailable()
public void setRowIndex(int rowIndex)
ITableContentProvider
setRowIndex
in interface ITableContentProvider
DataModel.getRowIndex()
public String getRowVariable()
ITableContentProvider
Returns row variable name.
If specified row variable can be used to access current row data for the provider internal needs, like sorting or addressing.
getRowVariable
in interface ITableContentProvider
ITableContentProvider.setRowVariable(String)
public void setRowVariable(String var)
ITableContentProvider
Sets row variable name to use for accessing row specific data. For
example, if the provider wrapps an array of a data objects with
id
property and the variable name is item
, then
the provider implementation can access id
property of each
record as item.id
.
This property should set only once at the provider initialization time
setRowVariable
in interface ITableContentProvider
public boolean isAddressable()
IAddressableTableContentProvider
isAddressable
in interface IAddressableTableContentProvider
true
if addressable.public String getRowId()
IAddressableTableContentProvider
getRowId
in interface IAddressableTableContentProvider
public void setRowById(String id)
IAddressableTableContentProvider
setRowIndex(-1)
).setRowById
in interface IAddressableTableContentProvider
id
- row id to find and make currentpublic void setRowId(String id)
setRowById(String)
id
- public boolean getCanTemplateRow()
IUpdateableTableContentProvider
getCanTemplateRow
in interface IUpdateableTableContentProvider
#setTemplateRow()}
public void setCanTemplateRow(boolean value)
IUpdateableTableContentProvider
setCanTemplateRow
in interface IUpdateableTableContentProvider
public boolean isTemplateRow()
IUpdateableTableContentProvider
ITableContentProvider.isRowAvailable()
returns false.
Setting the row index or id to any value removes provider from this state.isTemplateRow
in interface IUpdateableTableContentProvider
public 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
public void createRow()
newRow()
method
to instantiate an instance of the row object and inserts it before the
current row, or at the end of the list if no current row.createRow
in interface IUpdateableTableContentProvider
public void deleteRow()
deleteRow
in interface IUpdateableTableContentProvider
ITableContentProvider.getRowIndex()
public boolean isReorderable()
IReorderableTableContentProvider
isReorderable
in interface IReorderableTableContentProvider
public void moveTo(int index)
IReorderableTableContentProvider
moveTo
in interface IReorderableTableContentProvider
index
- (Zero-based) new row index.public ISortInfo getSort()
ISortableTableContentProvider
getSort
in interface ISortableTableContentProvider
public void setSort(ISortInfo sort)
ISortableTableContentProvider
setSort
in interface ISortableTableContentProvider
sort
- Sort info, must not be null.public Object getCurrentRow()
getCurrentRow
in interface ITableContentProvider
ITableContentProvider.isRowAvailable()
public void setCurrentRow(Object row)
IUpdateableTableContentProvider
setCurrentRow
in interface IUpdateableTableContentProvider
row
- new row object to replace object returned by ITableContentProvider.getCurrentRow()
protected void sort()
setSort(ISortInfo)
protected String calculateRowId(Object data)
calculateRowId(int,Object)
Calculates row id
from the row data object using getRowIdBinding()
expression.data
- row data objectprotected String calculateRowId(int index, Object data)
getRowIdBinding()
expression.index
- row indexdata
- row data objectprotected Object newRow()
#templateRow()
.IllegalStateException
- if row object type cannot be determinedpublic List getList()
public void setList(List<?> list)
list
- the listpublic void setArray(Object[] array)
array
- the array of objectspublic Object[] getArray()
public Class<?> getRowType()
public void setRowType(Class<?> rowType)
rowType
- the row type@Deprecated public ValueBinding getRowIdBinding()
getRowIdExpression()
instead@Deprecated public void setRowIdBinding(ValueBinding binding)
setRowIdExpression(ValueExpression)
insteadgetRowVariable()
to
access data on the row object.binding
- value binding expression to evaluate row idpublic void setRowIdExpression(ValueExpression binding)
getRowVariable()
to
access data on the row object.binding
- value binding expression to evaluate row idpublic ValueExpression getRowIdExpression()
@Deprecated public MethodBinding getOnCreateRow()
getOnCreateRowExpression()
instead@Deprecated public void setOnCreateRow(MethodBinding onNewRow)
setOnCreateRowExpression(MethodExpression)
insteadcreateRow()
methodonNewRow
- method binding expression for a method that is called from
createRow()
public MethodExpression getOnCreateRowExpression()
#setOnCreateRow(MethodExpression)
public void setOnCreateRowExpression(MethodExpression onNewRow)
createRow()
methodonNewRow
- method binding expression for a method that is called from
createRow()
@Deprecated public MethodBinding getOnDeleteRow()
getOnDeleteRowExpression()
instead@Deprecated public void setOnDeleteRow(MethodBinding deleteRow)
setOnDeleteRowExpression(MethodExpression)
insteaddeleteRow()
methodonNewRow
- method binding expression for a method that is called from
deleteRow()
public MethodExpression getOnDeleteRowExpression()
public void setOnDeleteRowExpression(MethodExpression deleteRow)
deleteRow()
methodonNewRow
- method binding expression for a method that is called from
deleteRow()