org.apache.myfaces.trinidad.component
Class UIXCollection

java.lang.Object
  extended by javax.faces.component.UIComponent
      extended by org.apache.myfaces.trinidad.component.UIXComponent
          extended by org.apache.myfaces.trinidad.component.UIXComponentBase
              extended by org.apache.myfaces.trinidad.component.UIXCollection
All Implemented Interfaces:
javax.faces.component.NamingContainer, javax.faces.component.StateHolder
Direct Known Subclasses:
UIXHierarchy, UIXIterator

public abstract class UIXCollection
extends UIXComponentBase
implements javax.faces.component.NamingContainer

Base class for components that do stamping. This class set the EL 'var' variable correctly when the rowData changes. And it wraps events that are queued, so that the correct rowData can be restored on this component when the event is broadcast.


Field Summary
static FacesBean.Type TYPE
           
static PropertyKey VAR_KEY
           
 
Fields inherited from class org.apache.myfaces.trinidad.component.UIXComponentBase
BINDING_KEY, ID_KEY, RENDERED_KEY, RENDERER_TYPE_KEY, TRANSIENT_KEY
 
Fields inherited from interface javax.faces.component.NamingContainer
SEPARATOR_CHAR
 
Constructor Summary
protected UIXCollection()
           
protected UIXCollection(java.lang.String rendererType)
           
 
Method Summary
 void broadcast(javax.faces.event.FacesEvent event)
          Delivers a wrapped event to the appropriate component.
protected  void clearCurrencyStringCache()
          Deprecated. Have your Renderer implement ClientRowKeyManagerFactory and create your own ClientRowKeyManager instances. Then you can manage the lifecycle of each key inside your ClientRowKeyManager.
protected abstract  CollectionModel createCollectionModel(CollectionModel current, java.lang.Object value)
          Creates the CollectionModel to use with this component.
protected  java.util.Map<java.lang.String,java.lang.Object> createVarStatusMap()
          Gets the Map to use as the "varStatus".
protected  void decodeChildrenImpl(javax.faces.context.FacesContext context)
          Calls processDecodes on all facets and children of this component.
 void encodeBegin(javax.faces.context.FacesContext context)
          Clears all the currency strings.
 void encodeEnd(javax.faces.context.FacesContext context)
           
 java.lang.String getClientRowKey()
          Gets a String version of the current rowkey.
 ClientRowKeyManager getClientRowKeyManager()
          Gets the ClientRowKeyManager that is used to handle the getClientRowKey() and setClientRowKey(java.lang.String) methods.
protected  CollectionModel getCollectionModel()
          Gets the CollectionModel to use with this component.
protected  CollectionModel getCollectionModel(boolean createIfNull)
          Gets the CollectionModel to use with this component.
 java.lang.String getCurrencyString()
          Deprecated. use getClientRowKey
protected  java.lang.String getLocalClientId()
          Gets the client-id of this component, without any NamingContainers.
 int getRowCount()
          Gets the total number of rows in this table.
 java.lang.Object getRowData()
          Gets the data for the current row.
 java.lang.Object getRowData(int rowIndex)
          Gets the rowData at the given index.
 int getRowIndex()
          Gets the index of the current row.
 java.lang.Object getRowKey()
          Gets the rowKey of the current row.
 java.util.List<SortCriterion> getSortCriteria()
          Gets the criteria that this collection is sorted by.
protected  java.util.List<javax.faces.component.UIComponent> getStamps()
          Gets the UIComponents that are considered stamps.
protected abstract  java.lang.Object getValue()
          Gets the value that must be converted into a CollectionModel
 java.lang.String getVar()
          Gets the name of the EL variable used to reference each element of this collection.
abstract  java.lang.String getVarStatus()
          Gets the EL variable name to use to expose the varStatusMap.
 boolean isRowAvailable()
          Checks to see if the current row is available.
 boolean isRowAvailable(int rowIndex)
          Checks to see if the row at the given index is available.
 boolean isSortable(java.lang.String property)
           
protected  void postRowDataChange()
          Sets up this component to use the new rowData.
protected  void preRowDataChange()
          Prepares this component for a change in the rowData.
protected  void processComponent(javax.faces.context.FacesContext context, javax.faces.component.UIComponent component, javax.faces.event.PhaseId phaseId)
          Process a component.
 void processDecodes(javax.faces.context.FacesContext context)
          Decodes this component before decoding the facets.
protected abstract  void processFacetsAndChildren(javax.faces.context.FacesContext context, javax.faces.event.PhaseId phaseId)
          Process this component's facets and children.
 java.lang.Object processSaveState(javax.faces.context.FacesContext context)
           
 void queueEvent(javax.faces.event.FacesEvent event)
          Queues an event.
 void resetStampState()
          Resets this component's stamps to their uninitialized state.
protected  void restoreStampState(javax.faces.context.FacesContext context, javax.faces.component.UIComponent stamp, java.lang.Object stampState)
          Restores the state of a stamp.
 void restoreState(javax.faces.context.FacesContext context, java.lang.Object state)
           
protected  java.lang.Object saveStampState(javax.faces.context.FacesContext context, javax.faces.component.UIComponent stamp)
          Saves the state of a stamp.
 java.lang.Object saveState(javax.faces.context.FacesContext context)
           
 void setClientRowKey(java.lang.String clientRowKey)
          Restores this component's rowData to be what it was when the given client rowKey string was created.
 void setCurrencyString(java.lang.String currency)
          Deprecated. use setClientRowKey
 void setRowIndex(int rowIndex)
          Makes a row current.
 void setRowKey(java.lang.Object rowKey)
          Makes a row current.
 void setSortCriteria(java.util.List<SortCriterion> criteria)
          Sorts this collection by the given criteria.
 void setVar(java.lang.String var)
          Sets the name of the EL variable used to reference each element of this collection.
protected  void updateChildrenImpl(javax.faces.context.FacesContext context)
           
protected  void validateChildrenImpl(javax.faces.context.FacesContext context)
          Calls processValidators on all facets and children of this component.
 
Methods inherited from class org.apache.myfaces.trinidad.component.UIXComponentBase
addAttributeChange, addAttributeChangeListener, addFacesListener, broadcastToMethodBinding, createFacesBean, decode, decodeChildren, encodeAll, encodeChildren, findComponent, getAttributeChangeListener, getAttributeChangeListeners, getAttributes, getBeanType, getBooleanProperty, getChildCount, getChildren, getClientId, getFacesBean, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacetNames, getFacets, getFacetsAndChildren, getFamily, getId, getIntProperty, getLifecycleRenderer, getParent, getProperty, getPropertyKey, getRenderer, getRendererType, getRendersChildren, getValueBinding, isRendered, isTransient, markInitialState, processRestoreState, processUpdates, processValidators, removeAttributeChangeListener, removeFacesListener, setAttributeChangeListener, setBooleanProperty, setId, setIntProperty, setParent, setProperty, setRendered, setRendererType, setTransient, setValueBinding, toString, updateChildren, validateChildren
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TYPE

public static final FacesBean.Type TYPE

VAR_KEY

public static final PropertyKey VAR_KEY
Constructor Detail

UIXCollection

protected UIXCollection(java.lang.String rendererType)

UIXCollection

protected UIXCollection()
Method Detail

getVar

public final java.lang.String getVar()
Gets the name of the EL variable used to reference each element of this collection. Once this component has completed rendering, this variable is removed (or reverted back to its previous value).


setVar

public final void setVar(java.lang.String var)
Sets the name of the EL variable used to reference each element of this collection. Once this component has completed rendering, this variable is removed (or reverted back to its previous value).


queueEvent

public void queueEvent(javax.faces.event.FacesEvent event)
Queues an event. If there is a currency set on this table, then the event will be wrapped so that when it is finally delivered, the correct currency will be restored.

Overrides:
queueEvent in class UIXComponentBase
Parameters:
event - a FacesEvent

broadcast

public void broadcast(javax.faces.event.FacesEvent event)
               throws javax.faces.event.AbortProcessingException
Delivers a wrapped event to the appropriate component. If the event is a special wrapped event, it is unwrapped.

Overrides:
broadcast in class UIXComponentBase
Parameters:
event - a FacesEvent
Throws:
javax.faces.event.AbortProcessingException

processDecodes

public final void processDecodes(javax.faces.context.FacesContext context)
Decodes this component before decoding the facets. Decodes the children as many times as they are stamped.

Overrides:
processDecodes in class UIXComponentBase
Parameters:
context - the FacesContext

decodeChildrenImpl

protected void decodeChildrenImpl(javax.faces.context.FacesContext context)
Description copied from class: UIXComponentBase
Calls processDecodes on all facets and children of this component.

Overrides:
decodeChildrenImpl in class UIXComponentBase
Parameters:
context - the current FacesContext

validateChildrenImpl

protected void validateChildrenImpl(javax.faces.context.FacesContext context)
Description copied from class: UIXComponentBase
Calls processValidators on all facets and children of this component.

Overrides:
validateChildrenImpl in class UIXComponentBase
Parameters:
context - the current FacesContext

updateChildrenImpl

protected void updateChildrenImpl(javax.faces.context.FacesContext context)
Overrides:
updateChildrenImpl in class UIXComponentBase

resetStampState

public void resetStampState()
Resets this component's stamps to their uninitialized state. This is useful when the user wants to undo any edits made to an editable table.


processSaveState

public java.lang.Object processSaveState(javax.faces.context.FacesContext context)
Overrides:
processSaveState in class UIXComponentBase

saveState

public java.lang.Object saveState(javax.faces.context.FacesContext context)
Specified by:
saveState in interface javax.faces.component.StateHolder
Overrides:
saveState in class UIXComponentBase

restoreState

public void restoreState(javax.faces.context.FacesContext context,
                         java.lang.Object state)
Specified by:
restoreState in interface javax.faces.component.StateHolder
Overrides:
restoreState in class UIXComponentBase

isRowAvailable

public final boolean isRowAvailable()
Checks to see if the current row is available. This is useful when the total number of rows is not known.

Returns:
true iff the current row is available.
See Also:
CollectionModel.isRowAvailable(int)

getRowCount

public final int getRowCount()
Gets the total number of rows in this table.

Returns:
-1 if the total number is not known.
See Also:
DataModel.getRowCount()

getRowIndex

public final int getRowIndex()
Gets the index of the current row.

Returns:
-1 if the current row is unavailable.
See Also:
DataModel.getRowIndex()

getRowKey

public final java.lang.Object getRowKey()
Gets the rowKey of the current row.

Returns:
null if the current row is unavailable.
See Also:
CollectionModel.getRowKey()

getRowData

public final java.lang.Object getRowData()
Gets the data for the current row.

Returns:
null if the current row is unavailable
See Also:
CollectionModel.getRowData(int)

isRowAvailable

public boolean isRowAvailable(int rowIndex)
Checks to see if the row at the given index is available.

Parameters:
rowIndex - the index of the row to check.
Returns:
true if data for the row exists.
See Also:
CollectionModel.isRowAvailable(int)

getRowData

public java.lang.Object getRowData(int rowIndex)
Gets the rowData at the given index.

Parameters:
rowIndex - the index of the row to get data from.
Returns:
the data for the given row.
See Also:
CollectionModel.getRowData(int)

getVarStatus

public abstract java.lang.String getVarStatus()
Gets the EL variable name to use to expose the varStatusMap.

See Also:
createVarStatusMap()

setRowKey

public void setRowKey(java.lang.Object rowKey)
Makes a row current. This method calls preRowDataChange() and postRowDataChange() as appropriate.

Parameters:
rowKey - The rowKey of the row that should be made current. Use null to clear the current row.
See Also:
CollectionModel.setRowKey(java.lang.Object)

setRowIndex

public void setRowIndex(int rowIndex)
Makes a row current. This method calls preRowDataChange() and postRowDataChange() as appropriate.

Parameters:
rowIndex - The rowIndex of the row that should be made current. Use -1 to clear the current row.
See Also:
DataModel.setRowIndex(int)

isSortable

public final boolean isSortable(java.lang.String property)
Parameters:
property - a property name in the model
Returns:
true if the model is sortable by the given property.
See Also:
CollectionModel.isSortable(java.lang.String)

setSortCriteria

public void setSortCriteria(java.util.List<SortCriterion> criteria)
Sorts this collection by the given criteria.

Parameters:
criteria - Each element in this List must be of type SortCriterion.
See Also:
SortCriterion, CollectionModel.setSortCriteria(java.util.List)

getSortCriteria

public final java.util.List<SortCriterion> getSortCriteria()
Gets the criteria that this collection is sorted by.

Returns:
each element in this List is of type SortCriterion. An empty list is returned if this collection is not sorted.
See Also:
SortCriterion, CollectionModel.getSortCriteria()

clearCurrencyStringCache

@Deprecated
protected void clearCurrencyStringCache()
Deprecated. Have your Renderer implement ClientRowKeyManagerFactory and create your own ClientRowKeyManager instances. Then you can manage the lifecycle of each key inside your ClientRowKeyManager.

Clear the rowKey-to-currencyString cache. The cache is not cleared immediately; instead it will be cleared when encodeBegin(javax.faces.context.FacesContext) is called.


encodeBegin

public final void encodeBegin(javax.faces.context.FacesContext context)
                       throws java.io.IOException
Clears all the currency strings.

Overrides:
encodeBegin in class UIXComponentBase
Throws:
java.io.IOException

encodeEnd

public void encodeEnd(javax.faces.context.FacesContext context)
               throws java.io.IOException
Overrides:
encodeEnd in class UIXComponentBase
Throws:
java.io.IOException

getCurrencyString

@Deprecated
public java.lang.String getCurrencyString()
Deprecated. use getClientRowKey

See Also:
getClientRowKey()

setCurrencyString

@Deprecated
public void setCurrencyString(java.lang.String currency)
Deprecated. use setClientRowKey

See Also:
setClientRowKey(java.lang.String)

getClientRowKey

public java.lang.String getClientRowKey()
Gets a String version of the current rowkey. The contents of the String are controlled by the current ClientRowKeyManager. This String can be passed into the setClientRowKey(java.lang.String) method to restore the current rowData. The lifetime of this String is short and it may not be valid during future requests; however, it is guaranteed to be valid for the next subsequent request.

See Also:
setClientRowKey(java.lang.String), getClientRowKeyManager(), ClientRowKeyManager.getClientRowKey(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)

setClientRowKey

public void setClientRowKey(java.lang.String clientRowKey)
Restores this component's rowData to be what it was when the given client rowKey string was created.

See Also:
getClientRowKey()

getLocalClientId

protected final java.lang.String getLocalClientId()
Gets the client-id of this component, without any NamingContainers. This id changes depending on the currency Object. Because this implementation uses currency strings, the local client ID is not stable for very long. Its lifetime is the same as that of a currency string.

Overrides:
getLocalClientId in class UIXComponentBase
Returns:
the local clientId
See Also:
getClientRowKey()

preRowDataChange

protected final void preRowDataChange()
Prepares this component for a change in the rowData. This method should be called right before the rowData changes. It saves the internal states of all the stamps of this component so that they can be restored when the rowData is reverted.


postRowDataChange

protected final void postRowDataChange()
Sets up this component to use the new rowData. This method should be called right after the rowData changes. It sets up the var EL variable to be the current rowData. It also sets up the internal states of all the stamps of this component to match this new rowData.


getStamps

protected java.util.List<javax.faces.component.UIComponent> getStamps()
Gets the UIComponents that are considered stamps. This implementation simply returns the children of this component.

Returns:
each element must be of type UIComponent.

saveStampState

protected java.lang.Object saveStampState(javax.faces.context.FacesContext context,
                                          javax.faces.component.UIComponent stamp)
Saves the state of a stamp. This method is called when the currency of this component is changed so that the state of this stamp can be preserved, before the stamp is updated with the state corresponding to the new currency. This method recurses for the children and facets of the stamp.

Returns:
this object must be Serializable if client-side state saving is used.

restoreStampState

protected void restoreStampState(javax.faces.context.FacesContext context,
                                 javax.faces.component.UIComponent stamp,
                                 java.lang.Object stampState)
Restores the state of a stamp. This method is called after the currency of this component is changed so that the state of this stamp can be changed to match the new currency. This method recurses for the children and facets of the stamp.


processComponent

protected final void processComponent(javax.faces.context.FacesContext context,
                                      javax.faces.component.UIComponent component,
                                      javax.faces.event.PhaseId phaseId)
Process a component. This method calls processDecodes(javax.faces.context.FacesContext), UIXComponentBase.processValidators(javax.faces.context.FacesContext) or UIXComponentBase.processUpdates(javax.faces.context.FacesContext) depending on the {#link PhaseId}.


processFacetsAndChildren

protected abstract void processFacetsAndChildren(javax.faces.context.FacesContext context,
                                                 javax.faces.event.PhaseId phaseId)
Process this component's facets and children. This method should call processComponent(javax.faces.context.FacesContext, javax.faces.component.UIComponent, javax.faces.event.PhaseId) as many times as necessary for each facet and child. processComponent(javax.faces.context.FacesContext, javax.faces.component.UIComponent, javax.faces.event.PhaseId) may be called repeatedly for the same child if that child is being stamped.


getCollectionModel

protected final CollectionModel getCollectionModel()
Gets the CollectionModel to use with this component.


getClientRowKeyManager

public final ClientRowKeyManager getClientRowKeyManager()
Gets the ClientRowKeyManager that is used to handle the getClientRowKey() and setClientRowKey(java.lang.String) methods. If the manager does not already exist a new one is created. In order to create your own manager, your Renderer (for this component) must implement ClientRowKeyManagerFactory


getCollectionModel

protected final CollectionModel getCollectionModel(boolean createIfNull)
Gets the CollectionModel to use with this component.

Parameters:
createIfNull - creates the collection model if necessary

createCollectionModel

protected abstract CollectionModel createCollectionModel(CollectionModel current,
                                                         java.lang.Object value)
Creates the CollectionModel to use with this component.

Parameters:
current - the current CollectionModel, or null if there is none.
value - this is the value returned from getValue()

getValue

protected abstract java.lang.Object getValue()
Gets the value that must be converted into a CollectionModel


createVarStatusMap

protected java.util.Map<java.lang.String,java.lang.Object> createVarStatusMap()
Gets the Map to use as the "varStatus". This implementation supports the following keys:



Copyright © 2001-2008 The Apache Software Foundation. All Rights Reserved.