org.kuali.rice.krad.uif.layout
Class LayoutManagerBase

java.lang.Object
  extended by org.kuali.rice.krad.datadictionary.DictionaryBeanBase
      extended by org.kuali.rice.krad.datadictionary.uif.UifDictionaryBeanBase
          extended by org.kuali.rice.krad.uif.layout.LayoutManagerBase
All Implemented Interfaces:
Serializable, Cloneable, Copyable, DictionaryBean, UifDictionaryBean, LayoutManager, LifecycleElement
Direct Known Subclasses:
BoxLayoutManager, CssGridLayoutManagerBase, GridLayoutManager, ListLayoutManager, SimpleLayoutManager, StackedLayoutManager

public abstract class LayoutManagerBase
extends UifDictionaryBeanBase
implements LayoutManager

Base class for all layout managers

Provides general properties of all layout managers, such as the unique id, rendering template, and style settings

Author:
Kuali Rice Team (rice.collab@kuali.org)
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.kuali.rice.krad.datadictionary.DictionaryBeanBase
componentCode, namespaceCode
 
Constructor Summary
LayoutManagerBase()
           
 
Method Summary
 void addStyleClass(String styleClass)
          This method adds a single style class to the list of css style classes on this component
 void appendToStyle(String styleRules)
          Appends to the inline style set on this layoutManager
 void checkMutable(boolean legalDuringInitialization)
          Check for mutability on the element before modifying state.
 LayoutManagerBase clone()
          Override Object.clone() to assign the public modifier.
protected
<T> void
copyProperties(T layoutManager)
          Copies properties for copy()
 List<String> getAdditionalCssClasses()
           
 List<Component> getComponentPrototypes()
          List of components that are maintained by the layout manager as prototypes for creating other component instances
 List<Component> getComponentsForLifecycle()
          List of components that are contained within the layout manager that should be sent through the lifecycle
 Map<String,Object> getContext()
          Context map for the layout manager
 List<String> getCssClasses()
          CSS style class(s) to be applied to the area (div) the layout manager generates for the items
 String getId()
          The unique id (within a given tree) for the element.
 List<String> getLibraryCssClasses()
          Additional css classes that come before css classes listed in the cssClasses property
 List<PropertyReplacer> getPropertyReplacers()
          List of PropertyReplacer instances that will be evaluated during the view lifecycle to conditional set properties on the LayoutManager based on expression evaluations
 String getStyle()
          CSS style string to be applied to the area (div) the layout manager generates for the items
 String getStyleClassesAsString()
          Builds the HTML class attribute string by combining the styleClasses list with a space delimiter
 Class<? extends Container> getSupportedContainer()
          Default Impl
 String getTemplate()
          The path to the JSP file that should be called to invoke the layout manager
 String getTemplateName()
          The name for which the template can be invoked by
 void initializePendingTasks(ViewLifecyclePhase phase, Queue<ViewLifecycleTask> pendingTasks)
          Initialize the lifecycle task queue for this component on the given lifecycle phase.
 boolean isMutable(boolean legalDuringInitialization)
          Determine if this lifecycle element is mutable.
 void performApplyModel(Object model, Component component)
          Called after the initialize phase to perform conditional logic based on the model data
 void performFinalize(Object model, Component component)
          The last phase before the view is rendered
 void performInitialization(Object model)
          Initializes the component
 void preventModification()
          Mark this instance as cached to prevent modification.
 void pushAllToContext(Map<String,Object> sourceContext)
          Places all entries from a map into the context Map for the layout manager.
 void pushObjectToContext(String objectName, Object object)
          Places the given object into the context Map for the layout manager with the given name
 void setAdditionalCssClasses(List<String> additionalCssClasses)
           
 void setCached(boolean cached)
           
 void setContext(Map<String,Object> context)
          Setter for the context Map
 void setCssClasses(List<String> cssClasses)
          Setter for the layout manager div style class
 void setId(String id)
          Setter for the unique id (within a given tree) for the component
 void setLibraryCssClasses(List<String> libraryCssClasses)
          Set the libraryCssClasses
 void setPropertyReplacers(List<PropertyReplacer> propertyReplacers)
          Setter for the layout managers property substitutions
 void setStyle(String style)
          Setter for the layout manager div style
 void setStyleClasses(String styleClasses)
          Sets the styleClasses list from the given string that has the classes delimited by space.
 void setTemplate(String template)
          Setter for the layout managers template
 void setTemplateName(String templateName)
          Setter for the name of the template (a name which can be used to invoke)
 
Methods inherited from class org.kuali.rice.krad.datadictionary.uif.UifDictionaryBeanBase
getExpressionGraph, getPropertyExpression, getPropertyExpressions, getRefreshExpressionGraph, setExpressionGraph, setPropertyExpressions, setRefreshExpressionGraph
 
Methods inherited from class org.kuali.rice.krad.datadictionary.DictionaryBeanBase
copy, dataDictionaryPostProcessing, getComponentCode, getNamespaceCode, setComponentCode, setNamespaceCode
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.uif.UifDictionaryBean
getExpressionGraph, getPropertyExpression, getPropertyExpressions, getRefreshExpressionGraph, setExpressionGraph, setPropertyExpressions, setRefreshExpressionGraph
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.DictionaryBean
dataDictionaryPostProcessing, getComponentCode, getNamespaceCode
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.Copyable
copy
 

Constructor Detail

LayoutManagerBase

public LayoutManagerBase()
Method Detail

checkMutable

public void checkMutable(boolean legalDuringInitialization)
Description copied from interface: LifecycleElement
Check for mutability on the element before modifying state.

Specified by:
checkMutable in interface LifecycleElement
Parameters:
legalDuringInitialization - True if the operation is legal during view initialization, false if the operation is only allowed during the component lifecycle.
See Also:
LifecycleElement.checkMutable(boolean)

isMutable

public boolean isMutable(boolean legalDuringInitialization)
Description copied from interface: LifecycleElement
Determine if this lifecycle element is mutable.

Most lifecycle element are immutable, and all are immutable expect during initialization and the during the view lifecycle. Those that have been copied within the view lifecycle, however, may be modified during the same lifecycle.

Specified by:
isMutable in interface LifecycleElement
Returns:
True if the component is mutable.
See Also:
LifecycleElement.isMutable(boolean)

setCached

public void setCached(boolean cached)
Parameters:
mutable - the mutable to set

performInitialization

public void performInitialization(Object model)
Description copied from interface: LifecycleElement
Initializes the component

Where components can set defaults and setup other necessary state. The initialize method should only be called once per component lifecycle and is invoked within the initialize phase of the view lifecylce.

Specified by:
performInitialization in interface LifecycleElement
Parameters:
model - - object instance containing the view data
See Also:
LifecycleElement.performInitialization(Object)

performApplyModel

public void performApplyModel(Object model,
                              Component component)
Description copied from interface: LifecycleElement
Called after the initialize phase to perform conditional logic based on the model data

Where components can perform conditional logic such as dynamically generating new fields or setting field state based on the given data

Specified by:
performApplyModel in interface LifecycleElement
Parameters:
model - - Top level object containing the data (could be the form or a top level business object, dto)
See Also:
LifecycleElement.performApplyModel(Object, Component)

performFinalize

public void performFinalize(Object model,
                            Component component)
Description copied from interface: LifecycleElement
The last phase before the view is rendered

Here final preparations can be made based on the updated view state.

Specified by:
performFinalize in interface LifecycleElement
Parameters:
model - - top level object containing the data
component - - parent component
See Also:
LifecycleElement.performFinalize(Object, Component)

initializePendingTasks

public void initializePendingTasks(ViewLifecyclePhase phase,
                                   Queue<ViewLifecycleTask> pendingTasks)
Description copied from interface: LifecycleElement
Initialize the lifecycle task queue for this component on the given lifecycle phase.

Any tasks added to the queue by this method will be performed after the default lifecycle phase processing method LifecycleElement.performInitialization(Object), LifecycleElement.performApplyModel(Object, Component), or LifecycleElement.performFinalize(Object, Component) has been called.

Specified by:
initializePendingTasks in interface LifecycleElement
Parameters:
phase - The lifecycle phase to queue pending tasks for.
pendingTasks - The pending task queue.
See Also:
LifecycleElement.initializePendingTasks(org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhase, java.util.Queue)

getSupportedContainer

public Class<? extends Container> getSupportedContainer()
Default Impl

Specified by:
getSupportedContainer in interface LayoutManager
Returns:
Class container class supported
See Also:
LayoutManager.getSupportedContainer()

getComponentsForLifecycle

public List<Component> getComponentsForLifecycle()
Description copied from interface: LayoutManager
List of components that are contained within the layout manager that should be sent through the lifecycle

Used by ViewHelperService for the various lifecycle callbacks

Specified by:
getComponentsForLifecycle in interface LayoutManager
Returns:
List child components
See Also:
LayoutManager.getComponentsForLifecycle()

getComponentPrototypes

public List<Component> getComponentPrototypes()
Description copied from interface: LayoutManager
List of components that are maintained by the layout manager as prototypes for creating other component instances

Prototypes are held for configuring how a component should be created during the lifecycle. An example of this are the fields in a collection group that are created for each collection record. They only participate in the initialize phase.

Specified by:
getComponentPrototypes in interface LayoutManager
Returns:
List child component prototypes
See Also:
LayoutManager.getComponentPrototypes()

getId

public String getId()
Description copied from interface: LifecycleElement
The unique id (within a given tree) for the element.

The id is used to identify an element instance within the tree, and will be used by renderers to set the HTML element id. This gives a way to find various elements for scripting. If the id is not given, a default will be generated by the framework.

Specified by:
getId in interface LifecycleElement
Returns:
A unique ID for this lifecycle element.
See Also:
LifecycleElement.getId()

setId

public void setId(String id)
Description copied from interface: LifecycleElement
Setter for the unique id (within a given tree) for the component

Specified by:
setId in interface LifecycleElement
Parameters:
id - - string to set as the component id
See Also:
LifecycleElement.setId(java.lang.String)

getTemplate

public String getTemplate()
Description copied from interface: LayoutManager
The path to the JSP file that should be called to invoke the layout manager

The path should be relative to the web root. All layout manager templates receive the list of items of be placed, the configured layout manager, and the container to which the layout manager applies

e.g. '/krad/WEB-INF/jsp/tiles/boxLayout.jsp'

Specified by:
getTemplate in interface LayoutManager
Returns:
String representing the template path
See Also:
LayoutManager.getTemplate()

setTemplate

public void setTemplate(String template)
Description copied from interface: LayoutManager
Setter for the layout managers template

Specified by:
setTemplate in interface LayoutManager
See Also:
LayoutManager.setTemplate(java.lang.String)

getTemplateName

public String getTemplateName()
Description copied from interface: LayoutManager
The name for which the template can be invoked by

Whether the template name is needed depends on the underlying rendering engine being used. In the example of Freemarker, the template points to the actual source file, which then loads a macro. From then on the macro is simply invoked to execute the template

e.g. 'uif_grid'

Specified by:
getTemplateName in interface LayoutManager
Returns:
See Also:
LayoutManager.getTemplateName()

setTemplateName

public void setTemplateName(String templateName)
Description copied from interface: LayoutManager
Setter for the name of the template (a name which can be used to invoke)

Specified by:
setTemplateName in interface LayoutManager
See Also:
LayoutManager.setTemplateName(java.lang.String)

getStyle

public String getStyle()
Description copied from interface: LayoutManager
CSS style string to be applied to the area (div) the layout manager generates for the items

Note the styleClass/style configured on the Container applies to all the container content (header, body, footer), while the styleClass/style configured on the LayoutManager only applies to the div surrounding the items placed by the manager (the container's body)

Any style override or additions can be specified with this attribute. This is used by the renderer to set the style attribute on the corresponding element.

e.g. 'color: #000000;text-decoration: underline;'

Specified by:
getStyle in interface LayoutManager
Returns:
String css style string
See Also:
LayoutManager.getStyle()

setStyle

public void setStyle(String style)
Description copied from interface: LayoutManager
Setter for the layout manager div style

Specified by:
setStyle in interface LayoutManager
See Also:
LayoutManager.setStyle(java.lang.String)

getLibraryCssClasses

public List<String> getLibraryCssClasses()
Additional css classes that come before css classes listed in the cssClasses property

These are used by the framework for styling with a library (for example, bootstrap), and should normally not be overridden.

Specified by:
getLibraryCssClasses in interface LayoutManager
Returns:
the library cssClasses

setLibraryCssClasses

public void setLibraryCssClasses(List<String> libraryCssClasses)
Set the libraryCssClasses

Specified by:
setLibraryCssClasses in interface LayoutManager
Parameters:
libraryCssClasses -

getCssClasses

public List<String> getCssClasses()
Description copied from interface: LayoutManager
CSS style class(s) to be applied to the area (div) the layout manager generates for the items

Note the styleClass/style configured on the Container applies to all the container content (header, body, footer), while the styleClass/style configured on the LayoutManager only applies to the div surrounding the items placed by the manager (the container's body)

Declares additional style classes for the div. Multiple classes are specified with a space delimiter. This is used by the renderer to set the class attribute on the corresponding element. The class(s) declared must be available in the common style sheets or the style sheets specified for the view

e.g. 'header left'

Specified by:
getCssClasses in interface LayoutManager
Returns:
List css style classes to apply
See Also:
LayoutManager.getCssClasses()

setCssClasses

public void setCssClasses(List<String> cssClasses)
Description copied from interface: LayoutManager
Setter for the layout manager div style class

Specified by:
setCssClasses in interface LayoutManager
See Also:
LayoutManager.setCssClasses(java.util.List)

getAdditionalCssClasses

public List<String> getAdditionalCssClasses()
Specified by:
getAdditionalCssClasses in interface LayoutManager
See Also:
LayoutManager.getAdditionalCssClasses()

setAdditionalCssClasses

public void setAdditionalCssClasses(List<String> additionalCssClasses)
Specified by:
setAdditionalCssClasses in interface LayoutManager
See Also:
LayoutManager.setAdditionalCssClasses(java.util.List)

getStyleClassesAsString

public String getStyleClassesAsString()
Builds the HTML class attribute string by combining the styleClasses list with a space delimiter

Returns:
class attribute string

setStyleClasses

public void setStyleClasses(String styleClasses)
Sets the styleClasses list from the given string that has the classes delimited by space. This is a convenience for configuration. If a child bean needs to inherit the classes from the parent, it should configure as a list and use merge="true"

Parameters:
styleClasses -

addStyleClass

public void addStyleClass(String styleClass)
Description copied from interface: LayoutManager
This method adds a single style class to the list of css style classes on this component

Specified by:
addStyleClass in interface LayoutManager
See Also:
LayoutManager.addStyleClass(java.lang.String)

appendToStyle

public void appendToStyle(String styleRules)
Description copied from interface: LayoutManager
Appends to the inline style set on this layoutManager

Specified by:
appendToStyle in interface LayoutManager
See Also:
LayoutManager.appendToStyle(java.lang.String)

getContext

public Map<String,Object> getContext()
Description copied from interface: LayoutManager
Context map for the layout manager

Specified by:
getContext in interface LayoutManager
Returns:
Map context
See Also:
LayoutManager.getContext()

setContext

public void setContext(Map<String,Object> context)
Description copied from interface: LayoutManager
Setter for the context Map

Specified by:
setContext in interface LayoutManager
See Also:
LayoutManager.setContext(java.util.Map)

pushObjectToContext

public void pushObjectToContext(String objectName,
                                Object object)
Description copied from interface: LayoutManager
Places the given object into the context Map for the layout manager with the given name

Specified by:
pushObjectToContext in interface LayoutManager
See Also:
LayoutManager.pushObjectToContext(java.lang.String, java.lang.Object)

pushAllToContext

public void pushAllToContext(Map<String,Object> sourceContext)
Description copied from interface: LayoutManager
Places all entries from a map into the context Map for the layout manager.

Specified by:
pushAllToContext in interface LayoutManager
Parameters:
sourceContext - The map to push entries from.
See Also:
LayoutManager.pushAllToContext(java.util.Map)

getPropertyReplacers

public List<PropertyReplacer> getPropertyReplacers()
Description copied from interface: LayoutManager
List of PropertyReplacer instances that will be evaluated during the view lifecycle to conditional set properties on the LayoutManager based on expression evaluations

Specified by:
getPropertyReplacers in interface LayoutManager
Returns:
List replacers to evaluate
See Also:
LayoutManager.getPropertyReplacers()

setPropertyReplacers

public void setPropertyReplacers(List<PropertyReplacer> propertyReplacers)
Description copied from interface: LayoutManager
Setter for the layout managers property substitutions

Specified by:
setPropertyReplacers in interface LayoutManager
See Also:
LayoutManager.setPropertyReplacers(java.util.List)

clone

public LayoutManagerBase clone()
                        throws CloneNotSupportedException
Description copied from interface: Copyable
Override Object.clone() to assign the public modifier.

Specified by:
clone in interface Copyable
Overrides:
clone in class DictionaryBeanBase
Throws:
CloneNotSupportedException
See Also:
Copyable.clone()

preventModification

public void preventModification()
Mark this instance as cached to prevent modification.

Specified by:
preventModification in interface Copyable
Overrides:
preventModification in class DictionaryBeanBase
See Also:
Copyable.preventModification()

copyProperties

protected <T> void copyProperties(T layoutManager)
Description copied from class: DictionaryBeanBase
Copies properties for copy()

Overrides:
copyProperties in class UifDictionaryBeanBase
Parameters:
layoutManager - base bean
See Also:
DictionaryBeanBase.copyProperties(Object)


Copyright © 2005-2013 The Kuali Foundation. All Rights Reserved.