org.apache.myfaces.trinidad.model
Class XMLMenuModel

java.lang.Object
  extended by javax.faces.model.DataModel
      extended by org.apache.myfaces.trinidad.model.CollectionModel
          extended by org.apache.myfaces.trinidad.model.TreeModel
              extended by org.apache.myfaces.trinidad.model.MenuModel
                  extended by org.apache.myfaces.trinidad.model.BaseMenuModel
                      extended by org.apache.myfaces.trinidad.model.XMLMenuModel
All Implemented Interfaces:
Iterable, LocalRowKeyIndex, RowKeyIndex, TreeLocalRowKeyIndex

public class XMLMenuModel
extends BaseMenuModel

Creates a Menu Model from a TreeModel where nodes in the treeModel contain viewId information.

Each node must have either a bean getter method or a Map property that returns a viewId. There are several restrictions on the data:

The getFocusRowKey method

The Model is created by specifying it in the faces-config.xml file as follows

   <managed-bean>
    <managed-bean-name>hr_menu</managed-bean-name>
    <managed-bean-class>
      org.apache.myfaces.trinidad.model.XMLMenuModel
    </managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
      <property-name>source</property-name>
      <property-class>java.lang.String</property-class>
      <value>/WEB-INF/hr-menu.xml</value>
    </managed-property>
  </managed-bean>
 
Objects of this class are not thread safe and should be used only in request scope.


Nested Class Summary
static interface XMLMenuModel.MenuContentHandler
           
 
Nested classes/interfaces inherited from interface org.apache.myfaces.trinidad.model.LocalRowKeyIndex
LocalRowKeyIndex.Confidence, LocalRowKeyIndex.LocalCachingStrategy
 
Field Summary
static String SHARED_MODEL_INDICATOR_KEY
          This key is used to store information about the included xml menu models which are constructed during parsing.
 
Constructor Summary
XMLMenuModel()
           
 
Method Summary
 void addViewId(String newViewId, String aliasedViewId)
          Maps the focusPath returned when the viewId is newViewId to the focusPath returned when the viewId is aliasedViewId.
protected  Object getCacheKey()
           
protected  int getContentHandlerId()
           
protected  Map<Object,List<XMLMenuModel.MenuContentHandler>> getContentHandlerMap()
          Returns the map of content handlers which hold the state of one XML tree.
 boolean getCreateHiddenNodes()
          Gets the boolean value that determines whether or not to create nodes whose rendered attribute value is false.
 Object getCustomProperty(Object node, String propName)
          Gets the list of custom properties from the node and returns the value of propName.
 Object getFocusRowKey()
          Returns the rowKey to the current viewId, or in the case of where the model has nodes with duplicate viewId's and one is encountered, we return the rowKey of the currently selected node.
 Object getNode(String id)
          Get a the MenuNode corresponding to the key "id" from the node id hashmap.
 String getSource()
          Gets the URI to the XML menu metadata.
 InputStream getStream(String uri)
          getStream - Opens an InputStream to the provided URI.
 Map<String,List<Object>> getViewIdFocusPathMap()
          Get the Model's viewIdFocusPathMap
protected  boolean isCompatibilityMode()
          This needs to be overriden by classes extending XmlMenuModel and using APIs for the nodes of XmlMenuModel.
 void setCreateHiddenNodes(boolean createHiddenNodes)
          Sets the boolean value that determines whether or not to create nodes whose rendered attribute value is false.
 void setCurrentlyPostedNode(Object currentNode)
          Sets the currently selected node and the request method.
 void setSource(String menuMetadataUri)
          setSource - specifies the XML metadata and creates the XML Menu Model.
 void setWrappedData(Object data)
          Makes the TreeModel part of the menu model.
 
Methods inherited from class org.apache.myfaces.trinidad.model.BaseMenuModel
enterContainer, exitContainer, getContainerRowKey, getRowCount, getRowData, getRowIndex, getRowKey, getWrappedData, isContainer, isRowAvailable, setRowIndex, setRowKey
 
Methods inherited from class org.apache.myfaces.trinidad.model.TreeModel
areRowsLocallyAvailable, areRowsLocallyAvailable, areRowsLocallyAvailable, getAllAncestorContainerRowKeys, getContainerRowKey, getDepth, getDepth, isChildCollectionLocallyAvailable, isChildCollectionLocallyAvailable, isChildCollectionLocallyAvailable, isContainerEmpty
 
Methods inherited from class org.apache.myfaces.trinidad.model.CollectionModel
addRowKeyChangeListener, areRowsAvailable, areRowsAvailable, areRowsAvailable, areRowsLocallyAvailable, areRowsLocallyAvailable, areRowsLocallyAvailable, clearCachedRow, clearCachedRow, clearCachedRows, clearCachedRows, clearLocalCache, fireRowKeyChange, getCachingStrategy, getEstimatedRowCount, getEstimatedRowCountConfidence, getRowData, getRowData, getSortCriteria, isRowAvailable, isRowAvailable, isRowLocallyAvailable, isRowLocallyAvailable, isSortable, removeRowKeyChangeListener, setSortCriteria
 
Methods inherited from class javax.faces.model.DataModel
addDataModelListener, getDataModelListeners, iterator, removeDataModelListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SHARED_MODEL_INDICATOR_KEY

public static final String SHARED_MODEL_INDICATOR_KEY
This key is used to store information about the included xml menu models which are constructed during parsing.

See Also:
Constant Field Values
Constructor Detail

XMLMenuModel

public XMLMenuModel()
Method Detail

isCompatibilityMode

protected boolean isCompatibilityMode()
This needs to be overriden by classes extending XmlMenuModel and using APIs for the nodes of XmlMenuModel. Default value returned is true for backward compatibilty. The models using the external APIs for their nodes must return false.

Returns:
boolean

setSource

public void setSource(String menuMetadataUri)
setSource - specifies the XML metadata and creates the XML Menu Model.

Parameters:
menuMetadataUri - - String URI to the XML metadata.

setWrappedData

public void setWrappedData(Object data)
Makes the TreeModel part of the menu model. Also creates the _viewIdFocusPathMap, _nodeFocusPathMap, and idNodeMaps.

Overrides:
setWrappedData in class BaseMenuModel
Parameters:
data - The Tree Model instance

getFocusRowKey

public Object getFocusRowKey()
Returns the rowKey to the current viewId, or in the case of where the model has nodes with duplicate viewId's and one is encountered, we return the rowKey of the currently selected node.

The getFocusRowKey method

Specified by:
getFocusRowKey in class MenuModel
Returns:
the rowKey to the node with the current viewId or null if the current viewId can't be found.

getSource

public String getSource()
Gets the URI to the XML menu metadata.

Returns:
String URI to the XML menu metadata.

setCreateHiddenNodes

public void setCreateHiddenNodes(boolean createHiddenNodes)
Sets the boolean value that determines whether or not to create nodes whose rendered attribute value is false. The default value is false. This is set through a managed property of the XMLMenuModel managed bean -- typically in the faces-config.xml file for a faces application.


getCreateHiddenNodes

public boolean getCreateHiddenNodes()
Gets the boolean value that determines whether or not to create nodes whose rendered attribute value is false. The default value is false. This is called by the contentHandler when parsing the XML metadata for each node.

Returns:
the boolean value that determines whether or not to create nodes whose rendered attribute value is false.

addViewId

public void addViewId(String newViewId,
                      String aliasedViewId)
Maps the focusPath returned when the viewId is newViewId to the focusPath returned when the viewId is aliasedViewId. This allows view id's not in the treeModel to be mapped to a focusPath.

Parameters:
newViewId - the view id to add a focus path for.
aliasedViewId - the view id to use to get the focusPath to use for newViewId.

setCurrentlyPostedNode

public void setCurrentlyPostedNode(Object currentNode)
Sets the currently selected node and the request method. This is called by a selected node's doAction method. This menu node must have had its "action" attribute set, thus the method is POST.

Parameters:
currentNode - The currently selected node in the menu

getNode

public Object getNode(String id)
Get a the MenuNode corresponding to the key "id" from the node id hashmap.

Parameters:
id - - String node id key for the hashmap entry.
Returns:
The Node Object that corresponds to id.

getCustomProperty

public Object getCustomProperty(Object node,
                                String propName)
Gets the list of custom properties from the node and returns the value of propName. Node must be an itemNode. If it is not an itemNode, the node will not have any custom properties and null will be returned.

Parameters:
node - Object used to get its list of custom properties
propName - String name of the property whose value is desired
Returns:
Object value of propName for Object node.

getStream

public InputStream getStream(String uri)
getStream - Opens an InputStream to the provided URI.

Parameters:
uri - - String uri to a data source.
Returns:
InputStream to the data source.

getViewIdFocusPathMap

public Map<String,List<Object>> getViewIdFocusPathMap()
Get the Model's viewIdFocusPathMap

Returns:
the Model's viewIdFocusPathMap

getContentHandlerMap

protected Map<Object,List<XMLMenuModel.MenuContentHandler>> getContentHandlerMap()
Returns the map of content handlers which hold the state of one XML tree.

Parameters:
scopeMap -
Returns:

getContentHandlerId

protected int getContentHandlerId()

getCacheKey

protected Object getCacheKey()


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