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

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
              extended by org.kuali.rice.krad.uif.layout.GridLayoutManagerBase
                  extended by org.kuali.rice.krad.uif.layout.TableLayoutManagerBase
All Implemented Interfaces:
Serializable, Cloneable, Copyable, DictionaryBean, UifDictionaryBean, CollectionLayoutManager, GridLayoutManager, LayoutManager, TableLayoutManager, LifecycleElement

public class TableLayoutManagerBase
extends GridLayoutManagerBase
implements TableLayoutManager

Implementation of table layout manager.

Based on the fields defined, the TableLayoutManager will dynamically create instances of the fields for each collection row. In addition, the manager can create standard fields like the action and sequence fields for each row. The manager supports options inherited from the GridLayoutManager such as rowSpan, colSpan, and cell width 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
TableLayoutManagerBase()
           
 
Method Summary
protected  void addActionColumn(CollectionGroup collectionGroup, String idSuffix, Object currentLine, int lineIndex, int rowSpan, List<? extends Component> actions)
          Creates a field group wrapper for the given actions based on getActionFieldPrototype().
protected  void addActionHeader(int rowCount, String idSuffix, int cellPosition)
          Adds the action header
protected  void addHeaderField(Field field, String idSuffix, int column)
          Creates a new instance of the header field prototype and then sets the label to the short (if useShortLabels is set to true) or long label of the given component.
 void buildLine(LineBuilderContext lineBuilderContext)
          Assembles the field instances for the collection line.
protected  void buildTableHeaderRows(CollectionGroup collectionGroup, List<Field> lineFields)
          Create the Label instances that will be used to render the table header
protected  int calculateNumberOfRows(List<? extends Field> items)
          Calculates how many rows will be needed per collection line to display the list of fields.
 void completeValidation(ValidationTrace tracer)
          Validates different requirements of component compiling a series of reports detailing information on errors found in the component.
 int getActionColumnIndex()
          Indicates the index of the action column
 String getActionColumnPlacement()
          Indicates the actions column placement
 FieldGroup getActionFieldPrototype()
          FieldGroup instance to serve as a prototype for the actions column.
 Group getAddLineGroup()
          When TableLayoutManager.isSeparateAddLine() is true, this group will be used to render the add line
 List<Field> getAllRowFields()
          List of Field instances that make up all the table's rows of data
 List<Component> getColumnCalculationComponents()
          Indicates whether the short label for the collection field should be used as the table header or the regular label
 List<ColumnCalculationInfo> getColumnCalculations()
          Gets the column calculations.
 List<String> getColumnsToCalculate()
          A list of all the columns to be calculated
 Map<String,String> getConditionalRowCssClasses()
          The row css classes for the rows of this layout
 Action getExpandDetailsActionPrototype()
          The Action prototype used for the row details expand link.
 List<Field> getFirstRowFields()
          List of Field instances that make us the table's first row of data
 List<Component> getFooterCalculationComponents()
          Gets the footer calculation components to be used by the layout.
 int getGroupingColumnIndex()
          Gets the grouping column index
 String getGroupingPrefix()
          Get the groupingPrefix.
 List<String> getGroupingPropertyNames()
          Gets the list of property names to use for grouping.
 String getGroupingTitle()
          Get the groupingTitle.
 Label getGroupTotalLabelPrototype()
          The groupTotal label to use when renderOnlyLeftTotalLabels is TRUE.
 Label getHeaderLabelPrototype()
          Label instance to use as a prototype for creating the tables header fields.
 List<Label> getHeaderLabels()
          List of Label instances that should be rendered to make up the tables header
 Set<String> getHiddenColumns()
          Gets a set of property names defining hidden columns.
 int getNumberOfDataColumns()
          
 Pager getPagerWidget()
          The Pager widget for this TableLayoutManager which defines settings for paging
 Label getPageTotalLabel()
          The pageTotal label to use when renderOnlyLeftTotalLabels is TRUE for total.
 RichTable getRichTable()
          Widget associated with the table to add functionality such as sorting, paging, and export
 Group getRowDetailsGroup()
          The row details info group to use when using a TableLayoutManager with the a richTable.
 Field getSelectFieldPrototype()
          Field instance that serves as a prototype for creating the select field on each line when CollectionGroup.isIncludeLineSelectionField() is true
 Field getSequenceFieldPrototype()
          Field instance to serve as a prototype for the sequence field.
 String getSequencePropertyName()
          Attribute name to use as sequence value.
 Set<String> getSortableColumns()
          Gets a set of property names defining sortable columns.
 FieldGroup getSubCollectionFieldGroupPrototype()
          Field group instance that is used as a prototype for creating the sub-collection field groups.
 Class<? extends Container> getSupportedContainer()
          Default Impl Determines what Container classes are supported by the LayoutManager
 Action getToggleAllDetailsAction()
          The toggleAllDetailsAction action component used to toggle all row details open/closed.
 Label getTotalLabel()
          The total label to use when renderOnlyLeftTotalLabels is TRUE for total.
 boolean isAjaxDetailsRetrieval()
          If true, when a row details open action is performed, it will get the details content from the server the first time it is opened.
 boolean isGenerateAutoSequence()
          Indicates whether the sequence field should be generated with the current line number
 boolean isRenderOnlyLeftTotalLabels()
          When true, labels for the totals fields will only appear in the left most column.
 boolean isRenderSequenceField()
          Indicates whether the sequence field should be rendered for the collection
 boolean isRepeatHeader()
          Indicates whether the header should be repeated before each collection row.
 boolean isRowDetailsOpen()
          If true, all details will be opened by default when the table loads.
 boolean isSeparateAddLine()
          Indicates whether the add line should be rendered in a separate group, or as part of the table (first line)
 boolean isShowGroupTotal()
          Gets showGroupTotal.
 boolean isShowPageTotal()
          Gets showTotal.
 boolean isShowToggleAllDetails()
          If true, the toggleAllDetailsAction will be shown.
 boolean isShowTotal()
          Gets showTotal.
 boolean isUseShortLabels()
          Indicates whether the short label for the collection field should be used as the table header or the regular label
 void performApplyModel(Object model, LifecycleElement parent)
          performApplyModel override.
 void performFinalize(Object model, LifecycleElement parent)
          Sets up the final column count for rendering based on whether the sequence and action fields have been generated, sets up column calculations, and richTable rowGrouping options The following finalization is performed: If suppressLineWrapping is true, sets the number of columns to the container's items list size Adjust the cell attributes for the container items The last phase before the view is rendered
 void performInitialization(Object model)
          The following actions are performed: Sets sequence field prototype if auto sequence is true Initializes the prototypes Initializes the component
 void processPagingRequest(Object model, CollectionGroup collectionGroup)
          Invokes instance of DataTablesPagingHelper to carry out the paging request using data tables API.
protected  void setActionColumnIndex(int actionColumnIndex)
          Sets action column index
 void setActionColumnPlacement(String actionColumnPlacement)
          Setter for the action column placement
 void setActionFieldPrototype(FieldGroup actionFieldPrototype)
          Setter for the action field prototype
 void setAddLineGroup(Group addLineGroup)
          Setter for the add line Group
 void setAjaxDetailsRetrieval(boolean ajaxDetailsRetrieval)
          Set if row details content should be retrieved fromt he server
protected  void setAllRowFields(List<Field> allRowFields)
          Set the row fields
 void setColumnCalculations(List<ColumnCalculationInfo> columnCalculations)
          Sets the columnCalculations.
protected  void setColumnsToCalculate(List<String> columnsToCalculate)
          Set columns to calculate
 void setConditionalRowCssClasses(Map<String,String> conditionalRowCssClasses)
          Set the conditionalRowCssClasses
 void setExpandDetailsActionPrototype(Action expandDetailsActionPrototype)
          Set the expand details Action prototype link
protected  void setFirstRowFields(List<Field> firstRowFields)
          Set the first row fields
protected  void setFooterCalculationComponents(List<Component> footerCalculationComponents)
          Set footer calculation components
 void setGenerateAutoSequence(boolean generateAutoSequence)
          Setter for the generate auto sequence field
protected  void setGenerateGroupTotalRows(boolean generateGroupTotalRows)
          Set flag generate group total rows
protected  void setGroupingColumnIndex(int groupingColumnIndex)
          Set grouping column index
 void setGroupingPrefix(String groupingPrefix)
          Set the groupingPrefix.
 void setGroupingPropertyNames(List<String> groupingPropertyNames)
          Sets the list of property names to use for grouping.
 void setGroupingTitle(String groupingTitle)
          Set the groupingTitle.
 void setGroupTotalLabelPrototype(Label groupTotalLabelPrototype)
          Sets the groupTotal label to use when renderOnlyLeftTotalLabels is TRUE.
protected  void setHeaderAdded(boolean headerAdded)
          Set flag of whether a header is added
 void setHeaderLabelPrototype(Label headerLabelPrototype)
          Setter for the header field prototype
protected  void setHeaderLabels(List<Label> headerLabels)
          Set the header labels
 void setHiddenColumns(Set<String> hiddenColumns)
          Setter for TableLayoutManager.getHiddenColumns().
 void setNumberOfDataColumns(int numberOfDataColumns)
          
 void setPagerWidget(Pager pagerWidget)
          Set the Pager widget
 void setPageTotalLabel(Label pageTotalLabel)
          Sets the pageTotal label to use when renderOnlyLeftTotalLabels is TRUE for total.
 void setRenderOnlyLeftTotalLabels(boolean renderOnlyLeftTotalLabels)
          Set the renderOnlyLeftTotalLabels flag for rendring total labels in the left-most column
 void setRenderSequenceField(boolean renderSequenceField)
          Setter for the render sequence field indicator
 void setRepeatHeader(boolean repeatHeader)
          Setter for the repeat header indicator
 void setRichTable(RichTable richTable)
          Setter for the rich table widget
 void setRowDetailsGroup(Group rowDetailsGroup)
          Set the row details info group
 void setRowDetailsOpen(boolean rowDetailsOpen)
          Set if row details should be open on table load
 void setSelectFieldPrototype(Field selectFieldPrototype)
          Setter for the prototype instance for select fields
 void setSeparateAddLine(boolean separateAddLine)
          Setter for the separate add line indicator
 void setSequenceFieldPrototype(Field sequenceFieldPrototype)
          Setter for the sequence field prototype
 void setSequencePropertyName(String sequencePropertyName)
          Setter for the sequence property name
 void setShowGroupTotal(boolean showGroupTotal)
          Sets showGroupTotal.
 void setShowPageTotal(boolean showPageTotal)
          Sets showPageTotal.
 void setShowToggleAllDetails(boolean showToggleAllDetails)
          Set if the toggleAllDetailsAction should be shown
 void setShowTotal(boolean showTotal)
          Sets showTotal.
 void setSortableColumns(Set<String> sortableColumns)
          Setterfor TableLayoutManager.getSortableColumns().
 void setSubCollectionFieldGroupPrototype(FieldGroup subCollectionFieldGroupPrototype)
          Setter for the sub-collection field group prototype
 void setToggleAllDetailsAction(Action toggleAllDetailsAction)
          Set the toggleAllDetailsAction action component used to toggle all row details open/closed.
 void setTotalLabel(Label totalLabel)
          Sets the total label to use when renderOnlyLeftTotalLabels is TRUE for total.
protected  void setupColumnCalculations(Object model, Container container, int totalColumns)
          Setup the column calculations functionality and components
 void setupDetails(CollectionGroup collectionGroup)
          Creates the details group for the line using the information setup through the setter methods of this interface.
protected  void setupGrouping(Object model, CollectionGroup collectionGroup)
          Sets up the grouping MessageField to be used in the first column of the table layout for grouping collection content into groups based on values of the line's fields.
protected  Field setupTotalField(Field totalField, ColumnCalculationInfo cInfo, boolean show, Label leftLabel, String type, int leftLabelColumnIndex)
          Setup the totalField with the columnCalculationInfo(cInfo) passed in.
 void setUseShortLabels(boolean useShortLabels)
          Setter for the use short label indicator
 
Methods inherited from class org.kuali.rice.krad.uif.layout.GridLayoutManagerBase
getNumberOfColumns, getRowCssClasses, isApplyAlternatingRowStyles, isApplyDefaultCellWidths, isRenderAlternatingHeaderColumns, isRenderFirstRowHeader, isRenderRowFirstCellHeader, isSuppressLineWrapping, setApplyAlternatingRowStyles, setApplyDefaultCellWidths, setCellAttributes, setNumberOfColumns, setRenderAlternatingHeaderColumns, setRenderFirstRowHeader, setRenderRowFirstCellHeader, setRowCssClasses, setSuppressLineWrapping
 
Methods inherited from class org.kuali.rice.krad.uif.layout.LayoutManagerBase
addStyleClass, appendToStyle, checkMutable, clone, getAdditionalCssClasses, getContext, getCssClasses, getId, getLibraryCssClasses, getPhasePathMapping, getPropertyReplacers, getStyle, getStyleClassesAsString, getTemplate, getTemplateName, getViewPath, getViewStatus, initializePendingTasks, isFinal, isInitialized, isModelApplied, isMutable, isRender, notifyCompleted, preventModification, pushAllToContext, pushObjectToContext, setAdditionalCssClasses, setContext, setCssClasses, setId, setLibraryCssClasses, setPhasePathMapping, setPropertyReplacers, setRender, setStyle, setStyleClasses, setTemplate, setTemplateName, setViewPath, setViewStatus, skipLifecycle
 
Methods inherited from class org.kuali.rice.krad.datadictionary.uif.UifDictionaryBeanBase
getExpressionGraph, getPropertyExpression, getPropertyExpressions, setExpressionGraph, setPropertyExpressions
 
Methods inherited from class org.kuali.rice.krad.datadictionary.DictionaryBeanBase
copy, dataDictionaryPostProcessing, getComponentCode, getNamespaceCode, setComponentCode, setNamespaceCode, unwrap
 
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.uif.layout.GridLayoutManager
getNumberOfColumns, getRowCssClasses, isApplyAlternatingRowStyles, isApplyDefaultCellWidths, isRenderAlternatingHeaderColumns, isRenderFirstRowHeader, isRenderRowFirstCellHeader, isSuppressLineWrapping, setApplyAlternatingRowStyles, setApplyDefaultCellWidths, setNumberOfColumns, setRenderAlternatingHeaderColumns, setRenderFirstRowHeader, setRenderRowFirstCellHeader, setRowCssClasses, setSuppressLineWrapping
 
Methods inherited from interface org.kuali.rice.krad.uif.layout.LayoutManager
addStyleClass, appendToStyle, getAdditionalCssClasses, getCssClasses, getLibraryCssClasses, getPropertyReplacers, getStyle, getTemplate, getTemplateName, setAdditionalCssClasses, setCssClasses, setLibraryCssClasses, setPropertyReplacers, setStyle, setTemplate, setTemplateName
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.uif.UifDictionaryBean
getExpressionGraph, getPropertyExpression, getPropertyExpressions, setExpressionGraph, setPropertyExpressions
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.DictionaryBean
dataDictionaryPostProcessing, getComponentCode, getNamespaceCode
 
Methods inherited from interface org.kuali.rice.krad.uif.util.LifecycleElement
checkMutable, getContext, getId, getPhasePathMapping, getViewPath, getViewStatus, initializePendingTasks, isFinal, isInitialized, isModelApplied, isMutable, isRender, notifyCompleted, pushAllToContext, pushObjectToContext, setContext, setId, setPhasePathMapping, setRender, setViewPath, setViewStatus, skipLifecycle
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.Copyable
clone, copy, preventModification, unwrap
 

Constructor Detail

TableLayoutManagerBase

public TableLayoutManagerBase()
Method Detail

performInitialization

public void performInitialization(Object model)
The following actions are performed: 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
Overrides:
performInitialization in class LayoutManagerBase
Parameters:
model - - object instance containing the view data
See Also:
ComponentDefaultInitializeTask

performApplyModel

public void performApplyModel(Object model,
                              LifecycleElement parent)
performApplyModel override. Takes expressions that may be set in the columnCalculation objects and populates them correctly into those component's propertyExpressions.

Specified by:
performApplyModel in interface LifecycleElement
Overrides:
performApplyModel in class LayoutManagerBase
Parameters:
view - view instance to which the layout manager belongs
model - Top level object containing the data (could be the form or a top level business object, dto)
container -

performFinalize

public void performFinalize(Object model,
                            LifecycleElement parent)
Sets up the final column count for rendering based on whether the sequence and action fields have been generated, sets up column calculations, and richTable rowGrouping options The following finalization is performed: 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
Overrides:
performFinalize in class GridLayoutManagerBase
Parameters:
model - - top level object containing the data
parent - - parent component

setupGrouping

protected void setupGrouping(Object model,
                             CollectionGroup collectionGroup)
Sets up the grouping MessageField to be used in the first column of the table layout for grouping collection content into groups based on values of the line's fields.

Parameters:
model - The model for the active lifecycle
collectionGroup - collection group for this layout

setupColumnCalculations

protected void setupColumnCalculations(Object model,
                                       Container container,
                                       int totalColumns)
Setup the column calculations functionality and components

Parameters:
model - the model
container - the parent container
totalColumns - total number of columns in the table

setupTotalField

protected Field setupTotalField(Field totalField,
                                ColumnCalculationInfo cInfo,
                                boolean show,
                                Label leftLabel,
                                String type,
                                int leftLabelColumnIndex)
Setup the totalField with the columnCalculationInfo(cInfo) passed in. Param show represents the tableLayoutManager's setting for the type of total being processed.

Parameters:
totalField - the field to setup
cInfo - ColumnCalculation info to use to setup the field
show - show the field (if renderOnlyLeftTotalLabels is true, otherwise uses value in cInfo)
leftLabel - the leftLabel, not used if renderOnlyLeftTotalLabels is false
type - type used to set the dataAttribute role - used by the js for selection
leftLabelColumnIndex - index of the leftLabelColumn (0 or 1 if grouping enabled - hidden column)
Returns:
the field with cInfo and tableLayoutManager settings applied as appropriate

buildLine

public void buildLine(LineBuilderContext lineBuilderContext)
Assembles the field instances for the collection line.

The given sequence field prototype is copied for the line sequence field. Likewise a copy of the actionFieldPrototype is made and the given actions are set as the items for the action field. Finally the generated items are assembled together into the allRowFields list with the given lineFields.

Call to the layout manager to build the components necessary for the given collection line, within an active view lifecycle.

As the collection is being iterated over by the CollectionGroupLineBuilder this method is invoked for each line. The builder will create copies of the configured fields and actions for the line and pass into the layout manager so they can be assembled

Specified by:
buildLine in interface CollectionLayoutManager
Parameters:
lineBuilderContext - context for the line to be built

addActionColumn

protected void addActionColumn(CollectionGroup collectionGroup,
                               String idSuffix,
                               Object currentLine,
                               int lineIndex,
                               int rowSpan,
                               List<? extends Component> actions)
Creates a field group wrapper for the given actions based on getActionFieldPrototype().

Parameters:
collectionGroup - collection group being built
idSuffix - id suffix for the action field
currentLine - line object for the current line being built
lineIndex - index of the line being built
rowSpan - number of rows the action field should span
actions - action components that should be to the field group

buildTableHeaderRows

protected void buildTableHeaderRows(CollectionGroup collectionGroup,
                                    List<Field> lineFields)
Create the Label instances that will be used to render the table header

For each column, a copy of headerLabelPrototype is made that determines the label configuration. The actual label text comes from the field for which the header applies to. The first column is always the sequence (if enabled) and the last column contains the actions. Both the sequence and action header fields will span all rows for the header.

The headerLabels list will contain the final list of header fields built

Parameters:
collectionGroup - CollectionGroup container the table applies to
lineFields - fields for the data columns from which the headers are pulled

addActionHeader

protected void addActionHeader(int rowCount,
                               String idSuffix,
                               int cellPosition)
Adds the action header

Parameters:
rowCount -
idSuffix - suffix for the header id, also column will be added
cellPosition -

addHeaderField

protected void addHeaderField(Field field,
                              String idSuffix,
                              int column)
Creates a new instance of the header field prototype and then sets the label to the short (if useShortLabels is set to true) or long label of the given component. After created the header field is added to the list making up the table header

Parameters:
field - field instance the header field is being created for
idSuffix - suffix for the header id, also column will be added
column - column number for the header, used for setting the id

calculateNumberOfRows

protected int calculateNumberOfRows(List<? extends Field> items)
Calculates how many rows will be needed per collection line to display the list of fields. Assumption is made that the total number of cells the fields take up is evenly divisible by the configured number of columns

Parameters:
items - list of items that make up one collection line
Returns:
number of rows

processPagingRequest

public void processPagingRequest(Object model,
                                 CollectionGroup collectionGroup)
Invokes instance of DataTablesPagingHelper to carry out the paging request using data tables API.

There are two types of paging supported in the table layout, one that uses data tables paging API, and one that handles basic table paging.

Invoked when a paging request occurs to carry out the paging request.

Specified by:
processPagingRequest in interface CollectionLayoutManager
Parameters:
model - object containing the view's data
collectionGroup - collection group the request was made for

getSupportedContainer

public Class<? extends Container> getSupportedContainer()
Default Impl Determines what Container classes are supported by the LayoutManager

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

getColumnCalculationComponents

public List<Component> getColumnCalculationComponents()
Indicates whether the short label for the collection field should be used as the table header or the regular label

Specified by:
getColumnCalculationComponents in interface TableLayoutManager
Returns:
true if short label should be used, false if long label should be used

isUseShortLabels

public boolean isUseShortLabels()
Indicates whether the short label for the collection field should be used as the table header or the regular label

Specified by:
isUseShortLabels in interface TableLayoutManager
Returns:
true if short label should be used, false if long label should be used

setUseShortLabels

public void setUseShortLabels(boolean useShortLabels)
Setter for the use short label indicator

Specified by:
setUseShortLabels in interface TableLayoutManager

isRepeatHeader

public boolean isRepeatHeader()
Indicates whether the header should be repeated before each collection row. If false the header is only rendered at the beginning of the table

Specified by:
isRepeatHeader in interface TableLayoutManager
Returns:
true if header should be repeated, false if it should only be rendered once

setRepeatHeader

public void setRepeatHeader(boolean repeatHeader)
Setter for the repeat header indicator

Specified by:
setRepeatHeader in interface TableLayoutManager

getHeaderLabelPrototype

@ViewLifecycleRestriction(value="INITIALIZE")
public Label getHeaderLabelPrototype()
Label instance to use as a prototype for creating the tables header fields. For each header field the prototype will be copied and adjusted as necessary

Specified by:
getHeaderLabelPrototype in interface TableLayoutManager
Returns:
Label instance to serve as prototype

setHeaderLabelPrototype

public void setHeaderLabelPrototype(Label headerLabelPrototype)
Setter for the header field prototype

Specified by:
setHeaderLabelPrototype in interface TableLayoutManager

getHeaderLabels

public List<Label> getHeaderLabels()
List of Label instances that should be rendered to make up the tables header

Specified by:
getHeaderLabels in interface TableLayoutManager
Returns:
List of label field instances

isRenderSequenceField

public boolean isRenderSequenceField()
Indicates whether the sequence field should be rendered for the collection

Specified by:
isRenderSequenceField in interface TableLayoutManager
Returns:
true if sequence field should be rendered, false if not

setRenderSequenceField

public void setRenderSequenceField(boolean renderSequenceField)
Setter for the render sequence field indicator

Specified by:
setRenderSequenceField in interface TableLayoutManager

getSequencePropertyName

public String getSequencePropertyName()
Attribute name to use as sequence value. For each collection line the value of this field on the line will be retrieved and used as the sequence value

Specified by:
getSequencePropertyName in interface TableLayoutManager
Returns:
sequence property name

setSequencePropertyName

public void setSequencePropertyName(String sequencePropertyName)
Setter for the sequence property name

Specified by:
setSequencePropertyName in interface TableLayoutManager

isGenerateAutoSequence

public boolean isGenerateAutoSequence()
Indicates whether the sequence field should be generated with the current line number

If set to true the sequence field prototype will be changed to a message field (if not already a message field) and the text will be set to the current line number

Specified by:
isGenerateAutoSequence in interface TableLayoutManager
Returns:
true if the sequence field should be generated from the line number, false if not

setGenerateAutoSequence

public void setGenerateAutoSequence(boolean generateAutoSequence)
Setter for the generate auto sequence field

Specified by:
setGenerateAutoSequence in interface TableLayoutManager

getSequenceFieldPrototype

@ViewLifecycleRestriction(value="INITIALIZE")
public Field getSequenceFieldPrototype()
Field instance to serve as a prototype for the sequence field. For each collection line this instance is copied and adjusted as necessary

Specified by:
getSequenceFieldPrototype in interface TableLayoutManager
Returns:
Attribute field instance

setSequenceFieldPrototype

public void setSequenceFieldPrototype(Field sequenceFieldPrototype)
Setter for the sequence field prototype

Specified by:
setSequenceFieldPrototype in interface TableLayoutManager

getActionFieldPrototype

@ViewLifecycleRestriction(value="INITIALIZE")
public FieldGroup getActionFieldPrototype()
FieldGroup instance to serve as a prototype for the actions column. For each collection line this instance is copied and adjusted as necessary. Note the actual actions for the group come from the collection groups actions List (org.kuali.rice.krad.uif.container.CollectionGroup.getActions()). The FieldGroup prototype is useful for setting styling of the actions column and for the layout of the action fields. Note also the label associated with the prototype is used for the action column header

Specified by:
getActionFieldPrototype in interface TableLayoutManager
Returns:
GroupField instance

setActionFieldPrototype

public void setActionFieldPrototype(FieldGroup actionFieldPrototype)
Setter for the action field prototype

Specified by:
setActionFieldPrototype in interface TableLayoutManager

getSubCollectionFieldGroupPrototype

@ViewLifecycleRestriction(value="INITIALIZE")
public FieldGroup getSubCollectionFieldGroupPrototype()
Field group instance that is used as a prototype for creating the sub-collection field groups.

Specified by:
getSubCollectionFieldGroupPrototype in interface CollectionLayoutManager
Specified by:
getSubCollectionFieldGroupPrototype in interface TableLayoutManager
Returns:
GroupField instance to use as prototype
See Also:
CollectionLayoutManager.getSubCollectionFieldGroupPrototype()

setSubCollectionFieldGroupPrototype

public void setSubCollectionFieldGroupPrototype(FieldGroup subCollectionFieldGroupPrototype)
Setter for the sub-collection field group prototype

Specified by:
setSubCollectionFieldGroupPrototype in interface TableLayoutManager

getSelectFieldPrototype

@ViewLifecycleRestriction(value="INITIALIZE")
public Field getSelectFieldPrototype()
Field instance that serves as a prototype for creating the select field on each line when CollectionGroup.isIncludeLineSelectionField() is true

This prototype can be used to set the control used for the select field (generally will be a checkbox control) in addition to styling and other setting. The binding path will be formed with using the CollectionGroup.getLineSelectPropertyName() or if not set the framework will use UifFormBase.getSelectedCollectionLines()

Specified by:
getSelectFieldPrototype in interface TableLayoutManager
Returns:
select field prototype instance

setSelectFieldPrototype

public void setSelectFieldPrototype(Field selectFieldPrototype)
Setter for the prototype instance for select fields

Specified by:
setSelectFieldPrototype in interface TableLayoutManager

isSeparateAddLine

public boolean isSeparateAddLine()
Indicates whether the add line should be rendered in a separate group, or as part of the table (first line)

When separate add line is enabled, the fields for the add line will be placed in the TableLayoutManager.getAddLineGroup(). This group can be used to configure the add line presentation. In addition to the fields, the header on the group (unless already set) will be set to CollectionGroup.getAddLabel() and the add line actions will be placed into the group's footer.

Specified by:
isSeparateAddLine in interface TableLayoutManager
Returns:
true if add line should be separated, false if it should be placed into the table

setSeparateAddLine

public void setSeparateAddLine(boolean separateAddLine)
Setter for the separate add line indicator

Specified by:
setSeparateAddLine in interface TableLayoutManager

getAddLineGroup

public Group getAddLineGroup()
When TableLayoutManager.isSeparateAddLine() is true, this group will be used to render the add line

This group can be used to configure how the add line will be rendered. For example the layout manager configured on the group will be used to rendered the add line fields. If the header (title) is not set on the group, it will be set from CollectionGroup.getAddLabel(). In addition, CollectionGroup.getAddLineActions() will be added to the group footer items.

Specified by:
getAddLineGroup in interface TableLayoutManager
Returns:
Group instance for the collection add line

setAddLineGroup

public void setAddLineGroup(Group addLineGroup)
Setter for the add line Group

Specified by:
setAddLineGroup in interface TableLayoutManager

getAllRowFields

public List<Field> getAllRowFields()
List of Field instances that make up all the table's rows of data

Specified by:
getAllRowFields in interface TableLayoutManager
Returns:
table body fields

getFirstRowFields

@ViewLifecycleRestriction
public List<Field> getFirstRowFields()
List of Field instances that make us the table's first row of data

Specified by:
getFirstRowFields in interface TableLayoutManager
Returns:
list of field instances

getPagerWidget

public Pager getPagerWidget()
The Pager widget for this TableLayoutManager which defines settings for paging

The settings in this widget are only used by TableLayoutManagers which DO NOT take advantage of the RichTable option (this has its own paging implementation). To turn off RichTable and use a basic table with server paging set richTable.render="false" and useServerPaging="true" on the CollectionGroup which uses this layout manager.

Specified by:
getPagerWidget in interface TableLayoutManager
Returns:
the Pager widget

setPagerWidget

public void setPagerWidget(Pager pagerWidget)
Set the Pager widget

Specified by:
setPagerWidget in interface TableLayoutManager

getRichTable

public RichTable getRichTable()
Widget associated with the table to add functionality such as sorting, paging, and export

Specified by:
getRichTable in interface TableLayoutManager
Returns:
RichTable instance

setRichTable

public void setRichTable(RichTable richTable)
Setter for the rich table widget

Specified by:
setRichTable in interface TableLayoutManager

getNumberOfDataColumns

public int getNumberOfDataColumns()

Specified by:
getNumberOfDataColumns in interface TableLayoutManager
Returns:
the numberOfDataColumns

setNumberOfDataColumns

public void setNumberOfDataColumns(int numberOfDataColumns)

Specified by:
setNumberOfDataColumns in interface TableLayoutManager
Parameters:
numberOfDataColumns - the numberOfDataColumns to set

getHiddenColumns

public Set<String> getHiddenColumns()
Gets a set of property names defining hidden columns.

Specified by:
getHiddenColumns in interface TableLayoutManager
Returns:
set of property names
See Also:
RichTable.getHiddenColumns()

setHiddenColumns

public void setHiddenColumns(Set<String> hiddenColumns)
Setter for TableLayoutManager.getHiddenColumns().

Specified by:
setHiddenColumns in interface TableLayoutManager
Parameters:
hiddenColumns - set of property names

getSortableColumns

public Set<String> getSortableColumns()
Gets a set of property names defining sortable columns.

Specified by:
getSortableColumns in interface TableLayoutManager
Returns:
set of property names
See Also:
RichTable.getSortableColumns()

setSortableColumns

public void setSortableColumns(Set<String> sortableColumns)
Setterfor TableLayoutManager.getSortableColumns().

Specified by:
setSortableColumns in interface TableLayoutManager
Parameters:
sortableColumns - set of property names

getActionColumnIndex

public int getActionColumnIndex()
Indicates the index of the action column

Specified by:
getActionColumnIndex in interface TableLayoutManager
Returns:
the action column index

getActionColumnPlacement

public String getActionColumnPlacement()
Indicates the actions column placement

Valid values are 'LEFT', 'RIGHT' or any valid number. The default is 'RIGHT' or '-1'. The column placement index takes all displayed columns, including sequence and selection columns, into account.

Specified by:
getActionColumnPlacement in interface TableLayoutManager
Returns:
the action column placement

setActionColumnPlacement

public void setActionColumnPlacement(String actionColumnPlacement)
Setter for the action column placement

Specified by:
setActionColumnPlacement in interface TableLayoutManager
Parameters:
actionColumnPlacement - action column placement string

getRowDetailsGroup

@ViewLifecycleRestriction(value="PRE_PROCESS")
public Group getRowDetailsGroup()
The row details info group to use when using a TableLayoutManager with the a richTable.

This group will be displayed when the user clicks the "Details" link/image on a row. This allows extra/long data to be hidden in table rows and then revealed during interaction with the table without the need to leave the page. Allows for any group content.

Does not currently work with javascript required content.

Specified by:
getRowDetailsGroup in interface TableLayoutManager
Returns:
rowDetailsGroup component

setRowDetailsGroup

public void setRowDetailsGroup(Group rowDetailsGroup)
Description copied from interface: TableLayoutManager
Set the row details info group

Specified by:
setRowDetailsGroup in interface TableLayoutManager
Parameters:
rowDetailsGroup - row details group
See Also:
getRowDetailsGroup()

setupDetails

public void setupDetails(CollectionGroup collectionGroup)
Creates the details group for the line using the information setup through the setter methods of this interface. Line details are currently only supported in TableLayoutManagers which use richTable.

Parameters:
collectionGroup - the CollectionGroup for this TableLayoutManager

getColumnsToCalculate

public List<String> getColumnsToCalculate()
A list of all the columns to be calculated

The list must contain valid column indexes. The indexes takes all displayed columns into account.

Specified by:
getColumnsToCalculate in interface TableLayoutManager
Returns:
the total columns list

isShowTotal

public boolean isShowTotal()
Gets showTotal. showTotal shows/calculates the total field when true, otherwise it is not rendered.
Only used when renderOnlyLeftTotalLabels is TRUE, this overrides the ColumnConfigurationInfo setting. Otherwise, the ColumnConfigurationInfo setting takes precedence.

Specified by:
isShowTotal in interface TableLayoutManager
Returns:
true if showing the total, false otherwise.

setShowTotal

public void setShowTotal(boolean showTotal)
Sets showTotal. showTotal shows/calculates the total field when true, otherwise it is not rendered.
Only used when renderOnlyLeftTotalLabels is TRUE, this overrides the ColumnConfigurationInfo setting. Otherwise, the ColumnConfigurationInfo setting takes precedence.

Specified by:
setShowTotal in interface TableLayoutManager

isShowPageTotal

public boolean isShowPageTotal()
Gets showTotal. showTotal shows/calculates the total field when true, otherwise it is not rendered.
Only used when renderOnlyLeftTotalLabels is TRUE, this overrides the ColumnConfigurationInfo setting. Otherwise, the ColumnConfigurationInfo setting takes precedence.

Specified by:
isShowPageTotal in interface TableLayoutManager
Returns:
true if showing the page total, false otherwise.

setShowPageTotal

public void setShowPageTotal(boolean showPageTotal)
Sets showPageTotal. showPageTotal shows/calculates the total field for the page when true (and only when the table actually has pages), otherwise it is not rendered.
Only used when renderOnlyLeftTotalLabels is TRUE, this overrides the ColumnConfigurationInfo setting. Otherwise, the ColumnConfigurationInfo setting takes precedence.

Specified by:
setShowPageTotal in interface TableLayoutManager

isShowGroupTotal

public boolean isShowGroupTotal()
Gets showGroupTotal. showGroupTotal shows/calculates the total field for each grouping when true (and only when the table actually has grouping turned on), otherwise it is not rendered.
Only used when renderOnlyLeftTotalLabels is TRUE, this overrides the ColumnConfigurationInfo setting. Otherwise, the ColumnConfigurationInfo setting takes precedence.

Specified by:
isShowGroupTotal in interface TableLayoutManager
Returns:
true if showing the group total, false otherwise.

setShowGroupTotal

public void setShowGroupTotal(boolean showGroupTotal)
Sets showGroupTotal. showGroupTotal shows/calculates the total field for each grouping when true (and only when the table actually has grouping turned on), otherwise it is not rendered.
Only used when renderOnlyLeftTotalLabels is TRUE, this overrides the ColumnConfigurationInfo setting. Otherwise, the ColumnConfigurationInfo setting takes precedence.

Specified by:
setShowGroupTotal in interface TableLayoutManager

getTotalLabel

public Label getTotalLabel()
The total label to use when renderOnlyLeftTotalLabels is TRUE for total. This label will appear in the left most column.

Specified by:
getTotalLabel in interface TableLayoutManager
Returns:
the totalLabel

setTotalLabel

public void setTotalLabel(Label totalLabel)
Sets the total label to use when renderOnlyLeftTotalLabels is TRUE for total.

Specified by:
setTotalLabel in interface TableLayoutManager

getPageTotalLabel

public Label getPageTotalLabel()
The pageTotal label to use when renderOnlyLeftTotalLabels is TRUE for total. This label will appear in the left most column.

Specified by:
getPageTotalLabel in interface TableLayoutManager
Returns:
the totalLabel

setPageTotalLabel

public void setPageTotalLabel(Label pageTotalLabel)
Sets the pageTotal label to use when renderOnlyLeftTotalLabels is TRUE for total.

Specified by:
setPageTotalLabel in interface TableLayoutManager

getGroupTotalLabelPrototype

public Label getGroupTotalLabelPrototype()
The groupTotal label to use when renderOnlyLeftTotalLabels is TRUE. This label will appear in the left most column.

Specified by:
getGroupTotalLabelPrototype in interface TableLayoutManager
Returns:
the totalLabel

setGroupTotalLabelPrototype

public void setGroupTotalLabelPrototype(Label groupTotalLabelPrototype)
Sets the groupTotal label to use when renderOnlyLeftTotalLabels is TRUE.

Specified by:
setGroupTotalLabelPrototype in interface TableLayoutManager

getColumnCalculations

public List<ColumnCalculationInfo> getColumnCalculations()
Gets the column calculations. This is a list of ColumnCalcuationInfo that when set provides calculations to be performed on the columns they specify. These calculations appear in the table's footer. This feature is only available when using richTable functionality.

Specified by:
getColumnCalculations in interface TableLayoutManager
Returns:
the columnCalculations to use

setColumnCalculations

public void setColumnCalculations(List<ColumnCalculationInfo> columnCalculations)
Sets the columnCalculations.

Specified by:
setColumnCalculations in interface TableLayoutManager

isRenderOnlyLeftTotalLabels

public boolean isRenderOnlyLeftTotalLabels()
When true, labels for the totals fields will only appear in the left most column. Showing of the totals is controlled by the settings on the TableLayoutManager itself when this property is true.

Specified by:
isRenderOnlyLeftTotalLabels in interface TableLayoutManager
Returns:
true when rendering totals footer labels in the left-most column, false otherwise

setRenderOnlyLeftTotalLabels

public void setRenderOnlyLeftTotalLabels(boolean renderOnlyLeftTotalLabels)
Set the renderOnlyLeftTotalLabels flag for rendring total labels in the left-most column

Specified by:
setRenderOnlyLeftTotalLabels in interface TableLayoutManager

getFooterCalculationComponents

public List<Component> getFooterCalculationComponents()
Gets the footer calculation components to be used by the layout. These are set by the framework and cannot be set directly.

Specified by:
getFooterCalculationComponents in interface TableLayoutManager
Returns:
the list of components for the footer

getGroupingPropertyNames

public List<String> getGroupingPropertyNames()
Gets the list of property names to use for grouping.

When this property is set, grouping for this collection will be enabled and the lines of the collection will be grouped by the propertyName(s) supplied. Supplying multiple property names will cause the grouping to be on multiple fields and ordered alphabetically on "propetyValue1, propertyValue2" (this is also how the group title will display for each group). The property names supplied must be relative to the line, so #lp SHOULD NOT be used (it is assumed automatically).

Specified by:
getGroupingPropertyNames in interface TableLayoutManager
Returns:
propertyNames to group on

setGroupingPropertyNames

public void setGroupingPropertyNames(List<String> groupingPropertyNames)
Sets the list of property names to use for grouping.

Specified by:
setGroupingPropertyNames in interface TableLayoutManager

getGroupingTitle

public String getGroupingTitle()
Get the groupingTitle. The groupingTitle MUST contain a SpringEL expression to uniquely identify a group's line (ie it cannot be a static string because each group must be identified by some value). This overrides groupingPropertyNames(if set) because it provides full control of grouping value used by the collection. SpringEL defined here must use #lp if referencing values of the line.

Specified by:
getGroupingTitle in interface TableLayoutManager
Returns:
groupingTitle to be used

setGroupingTitle

public void setGroupingTitle(String groupingTitle)
Set the groupingTitle. This will throw an exception if the title does not contain a SpringEL expression.

Specified by:
setGroupingTitle in interface TableLayoutManager

getGroupingPrefix

public String getGroupingPrefix()
Get the groupingPrefix. The groupingPrefix is used to prefix the generated title (not used when groupingTitle is set directly) when using groupingPropertyNames.

Specified by:
getGroupingPrefix in interface TableLayoutManager
Returns:
String

setGroupingPrefix

public void setGroupingPrefix(String groupingPrefix)
Set the groupingPrefix. This is not used when groupingTitle is set directly.

Specified by:
setGroupingPrefix in interface TableLayoutManager

isRowDetailsOpen

public boolean isRowDetailsOpen()
If true, all details will be opened by default when the table loads. Can only be used on tables that have row details setup.

Specified by:
isRowDetailsOpen in interface TableLayoutManager
Returns:
true if row details

setRowDetailsOpen

public void setRowDetailsOpen(boolean rowDetailsOpen)
Set if row details should be open on table load

Specified by:
setRowDetailsOpen in interface TableLayoutManager

isShowToggleAllDetails

public boolean isShowToggleAllDetails()
If true, the toggleAllDetailsAction will be shown. This button allows all details to be open/closed simultaneously.

Specified by:
isShowToggleAllDetails in interface TableLayoutManager
Returns:
true if the action button to toggle all row details opened/closed

setShowToggleAllDetails

public void setShowToggleAllDetails(boolean showToggleAllDetails)
Set if the toggleAllDetailsAction should be shown

Specified by:
setShowToggleAllDetails in interface TableLayoutManager

getToggleAllDetailsAction

public Action getToggleAllDetailsAction()
The toggleAllDetailsAction action component used to toggle all row details open/closed. This property is set by the default configuration and should not be reset in most cases.

Specified by:
getToggleAllDetailsAction in interface TableLayoutManager
Returns:
Action component to use for the toggle action button

setToggleAllDetailsAction

public void setToggleAllDetailsAction(Action toggleAllDetailsAction)
Set the toggleAllDetailsAction action component used to toggle all row details open/closed. This property is set by the default configuration and should not be reset in most cases.

Specified by:
setToggleAllDetailsAction in interface TableLayoutManager

isAjaxDetailsRetrieval

public boolean isAjaxDetailsRetrieval()
If true, when a row details open action is performed, it will get the details content from the server the first time it is opened. The methodToCall will be a component "refresh" call by default (this can be set on expandDetailsActionPrototype) and the additional action parameters sent to the server will be those set on the expandDetailsActionPrototype (lineIndex will be sent by default).

Specified by:
isAjaxDetailsRetrieval in interface TableLayoutManager
Returns:
true if ajax row details retrieval will be used

setAjaxDetailsRetrieval

public void setAjaxDetailsRetrieval(boolean ajaxDetailsRetrieval)
Set if row details content should be retrieved fromt he server

Specified by:
setAjaxDetailsRetrieval in interface TableLayoutManager

getExpandDetailsActionPrototype

@ViewLifecycleRestriction(value="INITIALIZE")
public Action getExpandDetailsActionPrototype()
The Action prototype used for the row details expand link. Should be set to "Uif-ExpandDetailsAction" or "Uif-ExpandDetailsImageAction". Properties can be configured to allow for different methodToCall and actionParameters to be set for ajax row details retrieval.

Specified by:
getExpandDetailsActionPrototype in interface TableLayoutManager
Returns:
the Action details link prototype

getGroupingColumnIndex

public int getGroupingColumnIndex()
Gets the grouping column index

Specified by:
getGroupingColumnIndex in interface TableLayoutManager
Returns:
the grouping column index

setExpandDetailsActionPrototype

public void setExpandDetailsActionPrototype(Action expandDetailsActionPrototype)
Set the expand details Action prototype link

Specified by:
setExpandDetailsActionPrototype in interface TableLayoutManager

setHeaderLabels

protected void setHeaderLabels(List<Label> headerLabels)
Set the header labels

Parameters:
headerLabels -

setAllRowFields

protected void setAllRowFields(List<Field> allRowFields)
Set the row fields

Parameters:
allRowFields -

setFirstRowFields

protected void setFirstRowFields(List<Field> firstRowFields)
Set the first row fields

Parameters:
firstRowFields -

setHeaderAdded

protected void setHeaderAdded(boolean headerAdded)
Set flag of whether a header is added

Parameters:
headerAdded -

setActionColumnIndex

protected void setActionColumnIndex(int actionColumnIndex)
Sets action column index

Parameters:
actionColumnIndex -

setGroupingColumnIndex

protected void setGroupingColumnIndex(int groupingColumnIndex)
Set grouping column index

Parameters:
groupingColumnIndex -

setGenerateGroupTotalRows

protected void setGenerateGroupTotalRows(boolean generateGroupTotalRows)
Set flag generate group total rows

Parameters:
generateGroupTotalRows -

setColumnsToCalculate

protected void setColumnsToCalculate(List<String> columnsToCalculate)
Set columns to calculate

Parameters:
columnsToCalculate -

setFooterCalculationComponents

protected void setFooterCalculationComponents(List<Component> footerCalculationComponents)
Set footer calculation components

Parameters:
footerCalculationComponents -

getConditionalRowCssClasses

public Map<String,String> getConditionalRowCssClasses()
The row css classes for the rows of this layout

To set a css class on all rows, use "all" as a key. To set a class for even rows, use "even" as a key, for odd rows, use "odd". Use a one-based index to target a specific row by index. SpringEL can be used as a key and the expression will be evaluated; if evaluated to true, the class(es) specified will be applied.

Specified by:
getConditionalRowCssClasses in interface TableLayoutManager
Returns:
a map which represents the css classes of the rows of this layout

setConditionalRowCssClasses

public void setConditionalRowCssClasses(Map<String,String> conditionalRowCssClasses)
Set the conditionalRowCssClasses

Specified by:
setConditionalRowCssClasses in interface TableLayoutManager
Parameters:
conditionalRowCssClasses -

completeValidation

public void completeValidation(ValidationTrace tracer)
Validates different requirements of component compiling a series of reports detailing information on errors found in the component. Used by the RiceDictionaryValidator.

Parameters:
tracer - record of component's location


Copyright © 2005–2014 The Kuali Foundation. All rights reserved.