Skip navigation links


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:
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:

o The nodes in the tree must either be all beans or all maps, but not a mix of beans and maps. o The viewId of a node can be null, but if set it must be unique. o The tree cannot be mutable.

The getFocusRowKey method

o gets the current viewId by calling FacesContext.getCurrentInstance().getViewRoot().getViewId() o compares the current viewId with the viewId's in the viewIdFocusPathMap that was built by traversing the tree when the model was created. o returns the focus path to the node with the current viewId or null if the current viewId can't be found. o in the case where a viewId has multiple focus paths, the currently selected node is used as a key into the nodeFocusPathMap to return the correct focus path.

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 java.lang.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(java.lang.String newViewId, java.lang.String aliasedViewId)
          Maps the focusPath returned when the viewId is newViewId to the focusPath returned when the viewId is aliasedViewId.
protected  java.lang.Object getCacheKey()
           
protected  int getContentHandlerId()
           
protected  java.util.Map<java.lang.Object,java.util.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.
 java.lang.Object getCustomProperty(java.lang.Object node, java.lang.String propName)
          Gets the list of custom properties from the node and returns the value of propName.
 java.lang.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.
 java.lang.Object getNode(java.lang.String id)
          Get a the MenuNode corresponding to the key "id" from the node id hashmap.
 java.lang.String getSource()
          Gets the URI to the XML menu metadata.
 java.io.InputStream getStream(java.lang.String uri)
          getStream - Opens an InputStream to the provided URI.
 java.util.Map<java.lang.String,java.util.List<java.lang.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(java.lang.Object currentNode)
          Sets the currently selected node and the request method.
 void setSource(java.lang.String menuMetadataUri)
          setSource - specifies the XML metadata and creates the XML Menu Model.
 void setWrappedData(java.lang.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
areRowsLocallyAvailable, areRowsLocallyAvailable, areRowsLocallyAvailable, clearCachedRow, clearCachedRow, clearCachedRows, clearCachedRows, clearLocalCache, ensureRowsAvailable, getCachingStrategy, getEstimatedRowCount, getEstimatedRowCountConfidence, getRowData, getRowData, getSortCriteria, isRowAvailable, isRowLocallyAvailable, isRowLocallyAvailable, isSortable, setSortCriteria

 

Methods inherited from class javax.faces.model.DataModel
addDataModelListener, getDataModelListeners, 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 java.lang.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(java.lang.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(java.lang.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 java.lang.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 java.lang.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(java.lang.String newViewId,
                      java.lang.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(java.lang.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 java.lang.Object getNode(java.lang.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 java.lang.Object getCustomProperty(java.lang.Object node,
                                          java.lang.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 java.io.InputStream getStream(java.lang.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 java.util.Map<java.lang.String,java.util.List<java.lang.Object>> getViewIdFocusPathMap()
Get the Model's viewIdFocusPathMap
Returns:
the Model's viewIdFocusPathMap

getContentHandlerMap

protected java.util.Map<java.lang.Object,java.util.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 java.lang.Object getCacheKey()

Skip navigation links


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