com.icesoft.faces.facelets.component.expandabletable

## Class ExpandableRecord

- java.lang.Object
- - com.icesoft.faces.facelets.component.expandabletable.ExpandableRecord

- All Implemented Interfaces:
    ExpandableRecordInterface, java.io.Serializable

      public class ExpandableRecord
      extends java.lang.Object
      implements ExpandableRecordInterface, java.io.Serializable

  The `ExpandableRecord` class is the primary class for use with the `expandableTable` custom component. The class contains the necessary methods and attributes needed for the `expandableTable` custom component to function. This classes uses `Generics`to link to a user defined data object.``
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.ArrayList` | `childRecords`
    `protected java.lang.String` | `indentStyleClass`
    `protected boolean` | `isExpanded`
    `protected java.lang.String` | `nodeType`
    `protected java.util.ArrayList` | `parentList`
    `protected java.lang.String` | `rowStyleClass`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExpandableRecord(java.lang.String indentStyleClass, java.lang.String rowStyleClass, java.util.ArrayList parentList, boolean isExpanded, java.lang.Object record, java.lang.String nodeType)` Creates a new `ExpandableRecord`.
    `ExpandableRecord(java.lang.String indentStyleClass, java.lang.String rowStyleClass, java.lang.Object record, java.lang.String nodeType)` Creates a new `ExpandableRecord` object.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addChildRecord(ExpandableRecord expandableRecord)` Adds a child sales record to this sales group.
    `void` | `contractNodeAction()` Utility method to remove all the child nodes from the parent `dataTable` list.
    `void` | `expandNodeAction()` Utility metod to add all child nodes to the parent `dataTable` list.
    `java.util.ArrayList` | `getChildRecords()` Gets the list of child records.
    `java.lang.String` | `getIndentStyleClass()` Gets the style class name used to define the first column of a record row.
    `boolean` | `getIsExpanded()` Gets the state of the parent `ExpandableRecord` object.
    `java.lang.String` | `getNodeType()` Gets the node type value of the `ExpandableRecord` object.
    `java.lang.Object` | `getRecord()` Gets the user defined data record object.
    `java.lang.String` | `getRowStyleClass()` Gets the style class name used to define all other columns in the record row, except the first column.
    `boolean` | `isRenderImage()` Gets the renderable state of the contract/expand image toggle.
    `void` | `removeChildRecord(ExpandableRecord expandableRecord)` Removes the specified child record from this group.
    `void` | `toggleSubGroupAction(javax.faces.event.ActionEvent event)` Toggles the expanded state of this record.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### indentStyleClass

          protected java.lang.String indentStyleClass

    - #### rowStyleClass

          protected java.lang.String rowStyleClass

    - #### parentList

          protected java.util.ArrayList parentList

    - #### isExpanded

          protected boolean isExpanded

    - #### childRecords

          protected java.util.ArrayList childRecords

    - #### nodeType

          protected java.lang.String nodeType

  - ### Constructor Detail

    - #### ExpandableRecord

          public ExpandableRecord(java.lang.String indentStyleClass,
                                  java.lang.String rowStyleClass,
                                  java.util.ArrayList parentList,
                                  boolean isExpanded,
                                  java.lang.Object record,
                                  java.lang.String nodeType)

      Creates a new `ExpandableRecord`. This constructor should be used when creating `ExpandableRecord` objects which will contain children.
      Parameters:
        `indentStyleClass` - style class for the expand/contract image column
        `rowStyleClass` - style class for the data columns
        `parentList` - list of parent items
        `isExpanded` - true, indicates that the specified node will be expanded by default, otherwise, false
        `record` - user created object that is linked to this parent object
        `nodeType` - can be either parent or child

    - #### ExpandableRecord

          public ExpandableRecord(java.lang.String indentStyleClass,
                                  java.lang.String rowStyleClass,
                                  java.lang.Object record,
                                  java.lang.String nodeType)

      Creates a new `ExpandableRecord` object. This constructor should be used when creating an `ExpandableRecord` object that will be a child of some other `ExpanableRecord` object. This created `ExpandableRecord` has no image states defined.
      Parameters:
        `indentStyleClass` - style class for the expand/contract image column
        `rowStyleClass` - style class for the data columns
        `record` - user created object that is linked to this parent object
        `nodeType` - can be either parent or child

  - ### Method Detail

    - #### isRenderImage

          public boolean isRenderImage()

      Gets the renderable state of the contract/expand image toggle.
      Specified by:
        `isRenderImage` in interface `ExpandableRecordInterface`
      Returns:
        true if images shoulc be drawn; otherwise, false.

    - #### toggleSubGroupAction

          public void toggleSubGroupAction(javax.faces.event.ActionEvent event)

      Toggles the expanded state of this record.
      Specified by:
        `toggleSubGroupAction` in interface `ExpandableRecordInterface`
      Parameters:
        `event` - jsf action event.

    - #### addChildRecord

          public void addChildRecord(ExpandableRecord expandableRecord)

      Adds a child sales record to this sales group.
      Specified by:
        `addChildRecord` in interface `ExpandableRecordInterface`
      Parameters:
        `expandableRecord` - child record to add to this record.

    - #### removeChildRecord

          public void removeChildRecord(ExpandableRecord expandableRecord)

      Removes the specified child record from this group.
      Specified by:
        `removeChildRecord` in interface `ExpandableRecordInterface`
      Parameters:
        `expandableRecord` - child record to remove.

    - #### expandNodeAction

          public void expandNodeAction()

      Utility metod to add all child nodes to the parent `dataTable` list.
      Specified by:
        `expandNodeAction` in interface `ExpandableRecordInterface`

    - #### contractNodeAction

          public void contractNodeAction()

      Utility method to remove all the child nodes from the parent `dataTable` list.
      Specified by:
        `contractNodeAction` in interface `ExpandableRecordInterface`

    - #### getIndentStyleClass

          public java.lang.String getIndentStyleClass()

      Gets the style class name used to define the first column of a record row. This first column is where an expand/contract image is placed.
      Returns:
        indentStyleClass style class for the expand/contract image column

    - #### getRowStyleClass

          public java.lang.String getRowStyleClass()

      Gets the style class name used to define all other columns in the record row, except the first column.
      Returns:
        rowStyleClass style class for the data columns

    - #### getChildRecords

          public java.util.ArrayList getChildRecords()

      Gets the list of child records.
      Returns:
        childRecords list of child records

    - #### getRecord

          public java.lang.Object getRecord()

      Gets the user defined data record object.
      Returns:
        record user defined data record.

    - #### getIsExpanded

          public boolean getIsExpanded()

      Gets the state of the parent `ExpandableRecord` object.
      Returns:
        isExpanded true, indicates that the specified node will be expanded by default, otherwise, false

    - #### getNodeType

          public java.lang.String getNodeType()

      Gets the node type value of the `ExpandableRecord` object.
      Returns:
        nodeType can be either parent or child

Copyright 2025 ICEsoft Technologies Canada, Corp. All Rights Reserved.