Class TableLayoutManagerBase

All Implemented Interfaces:
Serializable, Cloneable, Copyable, DictionaryBean, UifDictionaryBean, CollectionLayoutManager, LayoutManager, TableLayoutManager, LifecycleElement

public class TableLayoutManagerBase extends CollectionLayoutManagerBase 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:
  • Constructor Details

    • TableLayoutManagerBase

      public TableLayoutManagerBase()
  • Method Details

    • performInitialization

      public void performInitialization(Object model)
      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:
    • performApplyModel

      public void performApplyModel(Object model, LifecycleElement parent)
      Takes expressions that may be set in the columnCalculation objects and populates them correctly into those component's propertyExpressions. 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
      Overrides:
      performApplyModel in class LayoutManagerBase
      Parameters:
      model - - Top level object containing the data (could be the form or a top level business object, dto)
      parent - parent lifecycle element
    • performFinalize

      public void performFinalize(Object model, LifecycleElement parent)
      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 LayoutManagerBase
      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, int cellPosition)
      Adds the action header
    • addHeaderField

      protected void addHeaderField(Field field, 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
      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
    • setCellAttributes

      protected void setCellAttributes(Component component)
      Moves the width, align, and valign settings of the component to the corresponding cell properties (if not already configured)
      Parameters:
      component - instance to adjust settings for
    • 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 LayoutManagerBase
      Returns:
      Classinvalid input: '<'? extends Container> container class supported
    • getColumnCalculationComponents

      public List<Component> getColumnCalculationComponents()
      Gets a list of column calculation components.
      Specified by:
      getColumnCalculationComponents in interface TableLayoutManager
      Returns:
      list of column calculation components
    • getNumberOfColumns

      public int getNumberOfColumns()
      Indicates the number of columns that should make up one row of data.

      If the item count is greater than the number of columns, a new row will be created to render the remaining items (and so on until all items are placed).

      Note this does not include any generated columns by the layout manager, so the final column count could be greater (if label fields are separate).

      Specified by:
      getNumberOfColumns in interface TableLayoutManager
      Returns:
      int number of columns
    • setNumberOfColumns

      public void setNumberOfColumns(int numberOfColumns)
      Specified by:
      setNumberOfColumns in interface TableLayoutManager
      See Also:
    • isSuppressLineWrapping

      public boolean isSuppressLineWrapping()
      Indicates whether the number of columns for the table data should match the number of fields given in the container's items list (so that each field takes up one column without wrapping), this overrides the configured numberOfColumns.

      If set to true during the initialize phase the number of columns will be set to the size of the container's field list, if false the configured number of columns is used

      Specified by:
      isSuppressLineWrapping in interface TableLayoutManager
      Returns:
      true if the column count should match the container's field count, false to use the configured number of columns
    • setSuppressLineWrapping

      public void setSuppressLineWrapping(boolean suppressLineWrapping)
      Specified by:
      setSuppressLineWrapping in interface TableLayoutManager
      See Also:
    • isAutoTruncateColumns

      public Boolean isAutoTruncateColumns()
      Indicates whether the column text should be truncated when the table cell is to small to display the text without wrapping.

      A tooltip is added to the table cell which displays the text before truncation.

      Specified by:
      isAutoTruncateColumns in interface TableLayoutManager
      Returns:
      true if the column should be truncated
    • setAutoTruncateColumns

      public void setAutoTruncateColumns(Boolean autoTruncateColumns)
      Specified by:
      setAutoTruncateColumns in interface TableLayoutManager
      See Also:
    • isApplyAlternatingRowStyles

      public boolean isApplyAlternatingRowStyles()
      Indicates whether alternating row styles should be applied.

      Indicator to layout manager templates to apply alternating row styles. See the configured template for the actual style classes used

      Specified by:
      isApplyAlternatingRowStyles in interface TableLayoutManager
      Returns:
      true if alternating styles should be applied, false if all rows should have the same style
    • setApplyAlternatingRowStyles

      public void setApplyAlternatingRowStyles(boolean applyAlternatingRowStyles)
      Specified by:
      setApplyAlternatingRowStyles in interface TableLayoutManager
      See Also:
    • isApplyDefaultCellWidths

      public boolean isApplyDefaultCellWidths()
      Indicates whether the manager should default the cell widths.

      If true, the manager will set the cell width by equally dividing by the number of columns

      Specified by:
      isApplyDefaultCellWidths in interface TableLayoutManager
      Returns:
      true if default cell widths should be applied, false if no defaults should be applied
    • setApplyDefaultCellWidths

      public void setApplyDefaultCellWidths(boolean applyDefaultCellWidths)
      Specified by:
      setApplyDefaultCellWidths in interface TableLayoutManager
      See Also:
    • getRowCssClasses

      public List<String> getRowCssClasses()
      List of styles for each row.

      Each entry in the list gives the style for the row with the same index. This style will be added to the <tr> tag when the table rows are rendered in the grid.tag. This is used to store the styles for newly added lines and other special cases like the add item row.

      Specified by:
      getRowCssClasses in interface TableLayoutManager
      Returns:
      list of styles for the rows
    • setRowCssClasses

      public void setRowCssClasses(List<String> rowCssClasses)
      Specified by:
      setRowCssClasses in interface TableLayoutManager
      See Also:
    • getRowDataAttributes

      public List<String> getRowDataAttributes()
      List of data attributes for each row.

      Each entry in the list gives the data attributes for the row with the same index. These data attributes will be added to the <tr> tag when the table rows are rendered in the grid.tag. This is used to store the data attributes for newly added lines and other special cases like the add item row.

      Specified by:
      getRowDataAttributes in interface TableLayoutManager
      Returns:
      list of styles for the rows
    • setRowDataAttributes

      public void setRowDataAttributes(List<String> rowDataAttributes)
      Specified by:
      setRowDataAttributes in interface TableLayoutManager
      See Also:
    • 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
      Parameters:
      useShortLabels -
    • 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
      Parameters:
      repeatHeader -
    • getHeaderLabelPrototype

      @ViewLifecycleRestriction("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
      Parameters:
      headerLabelPrototype -
    • 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
      Parameters:
      renderSequenceField -
    • 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
      Parameters:
      sequencePropertyName -
    • 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
      Parameters:
      generateAutoSequence -
    • getSequenceFieldPrototype

      @ViewLifecycleRestriction("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
      Parameters:
      sequenceFieldPrototype -
    • getActionFieldPrototype

      @ViewLifecycleRestriction("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
      Parameters:
      actionFieldPrototype -
    • 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 CollectionLayoutManager.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
      Parameters:
      separateAddLine -
    • 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
    • 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
      Parameters:
      richTable -
    • 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:
    • setHiddenColumns

      public void setHiddenColumns(Set<String> hiddenColumns)
      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:
    • setSortableColumns

      public void setSortableColumns(Set<String> sortableColumns)
      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("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:
    • 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
      Parameters:
      showPageTotal -
    • 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
      Parameters:
      totalLabel -
    • 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
      Parameters:
      pageTotalLabel -
    • 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
      Parameters:
      groupTotalLabelPrototype -
    • 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
      Parameters:
      columnCalculations -
    • 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
      Parameters:
      renderOnlyLeftTotalLabels -
    • 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
      Parameters:
      groupingPropertyNames -
    • 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
      Parameters:
      groupingTitle -
    • 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
      Parameters:
      groupingPrefix -
    • 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
      Parameters:
      rowDetailsOpen -
    • 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
      Parameters:
      showToggleAllDetails -
    • 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
      Parameters:
      toggleAllDetailsAction -
    • 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
      Parameters:
      ajaxDetailsRetrieval -
    • getExpandDetailsActionPrototype

      @ViewLifecycleRestriction("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
      Parameters:
      expandDetailsActionPrototype -
    • setHeaderLabels

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

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

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

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

      protected void setActionColumnIndex(int actionColumnIndex)
      Sets action column index
    • setGroupingColumnIndex

      protected void setGroupingColumnIndex(int groupingColumnIndex)
      Set grouping column index
    • setGenerateGroupTotalRows

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

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

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

      public Map<String,String> getConditionalRowCssClasses()
      Description copied from interface: TableLayoutManager
      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
      See Also:
    • setConditionalRowCssClasses

      public void setConditionalRowCssClasses(Map<String,String> conditionalRowCssClasses)
      Description copied from interface: TableLayoutManager
      Set the conditionalRowCssClasses
      Specified by:
      setConditionalRowCssClasses in interface TableLayoutManager
      Parameters:
      conditionalRowCssClasses -
      See Also:
    • 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