Class VFXTableRow<T>

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
io.github.palexdev.virtualizedfx.table.VFXTableRow<T>
All Implemented Interfaces:
VFXStyleable, VFXCell<T>, javafx.css.Styleable, javafx.event.EventTarget
Direct Known Subclasses:
VFXDefaultTableRow

public abstract class VFXTableRow<T> extends javafx.scene.layout.Region implements VFXCell<T>, VFXStyleable
Base class that defines common properties and behaviors for all rows to be used with VFXTable. The default style class is set to '.vfx-row'.

This class has two peculiarities:

1) Extends Region because each row is actually a wrapping container for the table's cells

2) Implements VFXCell because most of the API is the same! Let's see the benefits: First and foremost this allows us to use the same cache class VFXCellsCache for the rows too which is super convenient. As for the updateIndex(int) and updateItem(Object) methods, well the row is no different from any other cell really. Each row wraps a cell for each table's column. All its cells 'operate' on the same item, they just process the object differently (generally speaking). So, a row which displays an item 'T' at index 17 in the list will have its index property set to 17, its item property as well as all of its cells' item property will be set to 'T'. As you can imagine, when we scroll in the viewport, make changes to the list (to cite only a few of the many changes types) we want to update the cells by either or both index and item. The table does so through rows (see updateColumns(IntegerRange, boolean) for example).

There are two more properties which we need to discuss:

1) Besides the index and item properties, each row also has the current range of columns the table needs to display, getColumnsRange(). This piece of information is crucial for the row to build (and thus wrap) the correct type of cells. For example, let's say for a hypothetical User class I can see the 'First Name' column but not the 'Last Name' one. We want the row to ask the 'First Name' column to give us a cell for this field (it could be created or de-cached see getCell(int, VFXTableColumn, boolean)). Additionally, we want to make sure that every other cell produced by columns that are not visible anymore to be removed from the children list (such cells can be disposed or cached, see saveCell(VFXTableColumn, VFXTableCell)). Every time something relevant to the rows changes in the table, each row computes its new state and if cells change they call onCellsChanged() to update the children list.

2) What do we mean by row's state? As probably already mentioned here VFXTable, this container is a bit special because we have two kinds of states. The global state which is a separate class VFXTableState, but then each row has its own "mini-state". The global state specifies which and how many items/rows should be present in the viewport, but it misses one crucial detail which is covered by the rows' state, which and how many cells to show. Exactly as it would be for a traditional state object, the cells keep a map of all their cells. When changes happen, we can easily compute which cells to keep using, which ones need to be disposed and whether new ones are needed. The type of map used is IndexBiMap.RowsStateMap.

Aside from those core details, rows also have much more going on: they can copy the state of other rows (for optimization reasons, see copyState(VFXTableRow)), the layout is completely 'manual' and will not respond to the traditional JavaFX 'triggers' but only to VFXTable.needsViewportLayoutProperty().

Note: because some of the base methods are actually quite complex to implement it's not recommended to use this as a base class for extension but rather VFXDefaultTableRow. Either way, always take a look at how original algorithms work before customizing!
  • Property Summary

    Properties
    Type
    Property
    Description
    javafx.beans.property.ReadOnlyIntegerProperty
    Specifies the index of the item displayed by the row and its cells.
    javafx.beans.property.ReadOnlyObjectProperty<T>
    Specifies the object displayed by the row and its cells.

    Properties inherited from class javafx.scene.layout.Region

    background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width

    Properties inherited from class javafx.scene.Parent

    needsLayout

    Properties inherited from class javafx.scene.Node

    accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, focusVisible, focusWithin, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
    protected io.github.palexdev.mfxcore.base.beans.range.IntegerRange
     

    Fields inherited from class javafx.scene.layout.Region

    USE_COMPUTED_SIZE, USE_PREF_SIZE

    Fields inherited from class javafx.scene.Node

    BASELINE_OFFSET_SAME_AS_HEIGHT
  • Constructor Summary

    Constructors
    Constructor
    Description
    VFXTableRow(T item)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Clears the row's state without disposing it.
    protected void
    Sets this row's state to be exactly the same as the one given as parameter.
     
    void
    Automatically called by the table's system when the row is not needed anymore.
    protected VFXTableCell<T>
    getCell(int index, VFXTableColumn<T,VFXTableCell<T>> column, boolean useCache)
    This method is responsible for creating cells given the "parent" column (from which takes the cell factory), and its index.
     
    List<javafx.scene.Node>
    Converts and collects all the cells from the row's state map to JavaFX nodes by using VFXCell.toNode().
     
     
    io.github.palexdev.mfxcore.base.beans.range.IntegerRange
    The range of columns visible in the viewport.
    int
    Gets the value of the index property.
    Gets the value of the item property.
     
    protected abstract double
    getWidthOf(VFXTableColumn<T,?> column, boolean forceLayout)
    This method should be responsible for computing the ideal width of a cell given the corresponding column so that its content can be fully shown.
    javafx.beans.property.ReadOnlyIntegerProperty
    Specifies the index of the item displayed by the row and its cells.
    javafx.beans.property.ReadOnlyObjectProperty<T>
    Specifies the object displayed by the row and its cells.
    protected void
    This core method is responsible for sizing and positioning the cells in the row.
    protected void
    Overridden to be a no-op.
    protected void
    This is crucial to call when the row's cells change.
    void
    onCreated(VFXContainer<T> container)
    Called when a cell is created and associated with a VFXContainer.
    protected abstract boolean
    This method mainly exists to react to cell factory changes.
    protected boolean
    Caches all the row's cells by iterating over the state map and calling saveCell(VFXTableColumn, VFXTableCell).
    protected void
    Asks the given column to save the given cell in its cache.
    protected void
    setIndex(int index)
    Sets the value of the index property.
    protected void
    setItem(T item)
    Sets the value of the item property.
    javafx.scene.layout.Region
    Converts the cell to a Node.
    protected abstract void
    updateColumns(io.github.palexdev.mfxcore.base.beans.range.IntegerRange columnsRange, boolean changed)
    Implementations of this method should mainly react to two types of change in the table:
    void
    updateIndex(int index)
    Automatically called by the framework when the cell needs to update its index.
    void
    updateItem(T item)
    Automatically called by the framework when the cell needs to update its item.

    Methods inherited from class javafx.scene.layout.Region

    backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, getBackground, getBorder, getClassCssMetaData, getCssMetaData, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty

    Methods inherited from class javafx.scene.Parent

    getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, requestLayout, requestParentLayout, setNeedsLayout, updateBounds

    Methods inherited from class javafx.scene.Node

    accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, focusVisibleProperty, focusWithinProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isFocusVisible, isFocusWithin, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface javafx.css.Styleable

    getStyleableNode

    Methods inherited from interface io.github.palexdev.virtualizedfx.cells.base.VFXCell

    afterLayout, beforeLayout, onCache, onDeCache
  • Property Details

    • index

      public javafx.beans.property.ReadOnlyIntegerProperty indexProperty
      Specifies the index of the item displayed by the row and its cells.
      See Also:
    • item

      public javafx.beans.property.ReadOnlyObjectProperty<T> itemProperty
      Specifies the object displayed by the row and its cells.
      See Also:
  • Field Details

  • Constructor Details

    • VFXTableRow

      public VFXTableRow(T item)
  • Method Details

    • updateColumns

      protected abstract void updateColumns(io.github.palexdev.mfxcore.base.beans.range.IntegerRange columnsRange, boolean changed)
      Implementations of this method should mainly react to two types of change in the table:

      1) the visible columns changes, or more in general the state's columns range changes

      2) changes in the columns' list that may not necessarily change the range. In particular, this type of change is distinguished by the 'change' parameter set to true. In this case, the row's state should always be computed as there is no information on how the list changed, a 'better safe than sorry' approach.

    • replaceCells

      protected abstract boolean replaceCells(VFXTableColumn<T,VFXTableCell<T>> column)
      This method mainly exists to react to cell factory changes. When a column changes its factory, there is no need to re-compute each rows' state, rather we can just replace the cells for that column with new ones. Implementations should have a proper algorithm for the sake of performance.
    • getWidthOf

      protected abstract double getWidthOf(VFXTableColumn<T,?> column, boolean forceLayout)
      This method should be responsible for computing the ideal width of a cell given the corresponding column so that its content can be fully shown. This is important for the table's autosize feature to work properly!
      Parameters:
      forceLayout - it may happen that this garbage that is JavaFX to still have an incomplete scene graph, meaning for example that skins are not still available for some controls/cells, which means that we could fail in computing any size. This may happen even if the table's layout has been already computed at least once. Internal checks try to identify such occasions and may pass 'true' to this method. What implementations could do to get a correct value is to force the cells to compute their layout (as well as all of their children) by invoking Node.applyCss(). Note, however, that this is going to be a costly operation at init, but it's pretty much the only way.
    • copyState

      protected void copyState(VFXTableRow<T> other)
      Sets this row's state to be exactly the same as the one given as parameter. This is mainly useful when the table changes its VFXTable.rowFactoryProperty() because while it's true that the old rows are to be disposed abd removed, the new ones would still have the same state of the old ones. In such occasions, it's a great optimization to just copy the state of the old corresponsig row rather than re-computing it from zero.

      To further detail what happens when this is called:

      - the index is updated to be the same as the 'other'

      - the columns range is copied over

      - the cells' map is copied over and the instance in the 'other' row is set to IndexBiMap.RowsStateMap.EMPTY

      - calls VFXTableCell.updateRow(VFXTableRow) on all the cells from the 'other' row

      - finally calls onCellsChanged()

      Last but not least, note that such operation is likely going to need a layout request, but it's not the rows' responsibility to do so.
    • clear

      protected void clear()
      Clears the row's state without disposing it. This will cause all cells to be cached by saveAllCells(), the index set to -1, the item set to null, the columns range set to Utils.INVALID_RANGE and the children list to be cleared.
    • onCellsChanged

      protected void onCellsChanged()
      This is crucial to call when the row's cells change. All cells are 'collected' as nodes by getCellsAsNodes() and added to the row's children list.
    • getCell

      protected VFXTableCell<T> getCell(int index, VFXTableColumn<T,VFXTableCell<T>> column, boolean useCache)
      This method is responsible for creating cells given the "parent" column (from which takes the cell factory), and its index. Before creating a new cell using the factory, this attempts to retrieve one from the column's cells' cache, and only if there are no cached cells, a new one is built. The cache usage is optional and can be avoided by passing false as the useCache parameter.

      In any case, the cell will be fully updated: VFXTableCell.updateRow(VFXTableRow), VFXTableCell.updateColumn(VFXTableColumn), VFXCell.updateItem(Object) (if de-cached), and VFXCell.updateIndex(int).

    • saveCell

      protected void saveCell(VFXTableColumn<T,VFXTableCell<T>> column, VFXTableCell<T> cell)
      Asks the given column to save the given cell in its cache. Beware that this operation won't remove the cell from the state map and the children list; therefore, you must do it before calling this

      By convention, when this is called, the cell's row and column properties are reset to null. This is to clearly indicate that the cell is not in the viewport anymore.

    • saveAllCells

      protected boolean saveAllCells()
      Caches all the row's cells by iterating over the state map and calling saveCell(VFXTableColumn, VFXTableCell). The difference here is that the state map is also cleared at the end.

      Beware that this will not call onCellsChanged(), therefore, if needed, you will have to do it afterward.

    • layoutCells

      protected void layoutCells()
      This core method is responsible for sizing and positioning the cells in the row. This is done by iterating over the columns range, getting every cell and, if not null, delegating the operation to VFXTableHelper.layoutCell(int, VFXTableCell).

      This only defines the algorithm and is not automatically called by the row. Rather, it's the default table skin to call this on each row upon a layout request received from the VFXTable.needsViewportLayoutProperty().

      Note that this implementation allows having columns that produce null cells.
    • toNode

      public javafx.scene.layout.Region toNode()
      Description copied from interface: VFXCell
      Converts the cell to a Node.

      Implementations can check these examples:

       
       // Example 1
       public class SimpleCell<T> extends Label implements VFXCell<T> {
           ...
           ...
      
           @Override
           public Node toNode() {
               return this;
           }
       }
      
       // Example 2
       public class SimpleCell<T> implements VFXCell<T> {
           private final Label label = ...;
           ...
           ...
      
           @Override
           public Node toNode() {
               return label;
           }
       }
       
       
      Specified by:
      toNode in interface VFXCell<T>
    • updateIndex

      public void updateIndex(int index)
      Description copied from interface: VFXCell
      Automatically called by the framework when the cell needs to update its index.

      Note though, that there is no 100% guarantee the new given index is different from the current one. If you have some operations happen when the index changes, for performance reasons, I recommend you to first ensure the new index really is different.

      See VFXCellBase and read how this is handled.

      Specified by:
      updateIndex in interface VFXCell<T>
    • updateItem

      public void updateItem(T item)
      Description copied from interface: VFXCell
      Automatically called by the framework when the cell needs to update its item.

      Note though, that there is no 100% guarantee the new given item is different from the current one. If you have some operations happen when the item changes, for performance reasons, I recommend you to first ensure the new item really is different.

      See VFXCellBase and read how this is handled.

      Specified by:
      updateItem in interface VFXCell<T>
    • onCreated

      public void onCreated(VFXContainer<T> container)
      Description copied from interface: VFXCell
      Called when a cell is created and associated with a VFXContainer. This method provides the cell with a reference to its container, allowing for any necessary initialization that depends on the container context.

      By default, this method does nothing. Subclasses can override it to implement container-specific setup or to access container properties and methods at the time of creation.

      Note: This method should only be called by the container that created this cell. Calling it with a different or incorrect container instance may lead to inconsistent behavior or errors.
      Specified by:
      onCreated in interface VFXCell<T>
      Parameters:
      container - the VFXContainer instance that owns this cell
    • defaultStyleClasses

      public List<String> defaultStyleClasses()
      Specified by:
      defaultStyleClasses in interface VFXStyleable
      Returns:
      a list containing all the component's default style classes
    • layoutChildren

      protected void layoutChildren()
      Overridden to be a no-op. We manage the layout manually like real giga-chads.
      Overrides:
      layoutChildren in class javafx.scene.Parent
    • dispose

      public void dispose()
      Automatically called by the table's system when the row is not needed anymore. Most of the operations are performed by clear(). In addition, the table's instance is set to null.
      Specified by:
      dispose in interface VFXCell<T>
    • getTable

      public VFXTable<T> getTable()
    • getIndex

      public int getIndex()
      Gets the value of the index property.
      Property description:
      Specifies the index of the item displayed by the row and its cells.
      Returns:
      the value of the index property
      See Also:
    • indexProperty

      public javafx.beans.property.ReadOnlyIntegerProperty indexProperty()
      Specifies the index of the item displayed by the row and its cells.
      Returns:
      the index property
      See Also:
    • setIndex

      protected void setIndex(int index)
      Sets the value of the index property.
      Property description:
      Specifies the index of the item displayed by the row and its cells.
      Parameters:
      index - the value for the index property
      See Also:
    • getItem

      public T getItem()
      Gets the value of the item property.
      Property description:
      Specifies the object displayed by the row and its cells.
      Returns:
      the value of the item property
      See Also:
    • itemProperty

      public javafx.beans.property.ReadOnlyObjectProperty<T> itemProperty()
      Specifies the object displayed by the row and its cells.
      Returns:
      the item property
      See Also:
    • setItem

      protected void setItem(T item)
      Sets the value of the item property.
      Property description:
      Specifies the object displayed by the row and its cells.
      Parameters:
      item - the value for the item property
      See Also:
    • getColumnsRange

      public io.github.palexdev.mfxcore.base.beans.range.IntegerRange getColumnsRange()
      The range of columns visible in the viewport. This should always be the same as the current VFXTableState, and it's used to make the row always have the correct cells displayed (in accord to the visualized columns).
    • getCellsUnmodifiable

      public SequencedMap<Integer,VFXTableCell<T>> getCellsUnmodifiable()
      Returns:
      the row's cells as an unmodifiable SequencedMap, mapped by the row's indexProperty().
    • getCells

      protected IndexBiMap.RowsStateMap<T,VFXTableCell<T>> getCells()
      Returns:
      the row's state map, which contains the cells both mapped by the row's index or the cell's "parent" column.
    • getCellsByIndex

      protected SequencedMap<Integer,VFXTableCell<T>> getCellsByIndex()
      Returns:
      the row's cells as a SequencedMap, mapped by the row's indexProperty().
    • getCellsAsNodes

      public List<javafx.scene.Node> getCellsAsNodes()
      Converts and collects all the cells from the row's state map to JavaFX nodes by using VFXCell.toNode().