Class VirtualFlow<T extends IndexedCell>
- Type Parameters:
T
- The type of the item contained within the virtual flow cells
- All Implemented Interfaces:
Styleable
,EventTarget
ListView
, TreeView
,
TableView
, and TreeTableView
.- Since:
- 9
-
Property Summary
TypePropertyDescriptionfinal IntegerProperty
Indicates the number of cells that should be in the flow.final ObjectProperty
<Callback<VirtualFlow<T>, T>> Setting a custom cell factory has the effect of deferring all cell creation, allowing for total customization of the cell.final DoubleProperty
For optimisation purposes, some use cases can trade dynamic cell length for speed - if fixedCellSize is greater than zero we'll use that rather than determine it by querying the cell itself.final BooleanProperty
Indicates whether the VirtualFlow viewport is capable of being panned by the user (either via the mouse or touch events).final DoubleProperty
The position of the VirtualFlow within its list of cells.final BooleanProperty
Indicates the primary direction of virtualization.Properties declared in class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
Properties declared in class javafx.scene.Parent
needsLayout
Properties declared in 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 declared in class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
Fields declared in class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
This method will remove all cells from the VirtualFlow and remove them, adding them to the 'pile' (that is, a place from where cells can be used at a later date).final IntegerProperty
Indicates the number of cells that should be in the flow.final ObjectProperty
<Callback<VirtualFlow<T>, T>> Setting a custom cell factory has the effect of deferring all cell creation, allowing for total customization of the cell.final DoubleProperty
For optimisation purposes, some use cases can trade dynamic cell length for speed - if fixedCellSize is greater than zero we'll use that rather than determine it by querying the cell itself.protected T
getAvailableCell
(int prefIndex) Get a cell which can be used in the layout.getCell
(int index) Return a cell for the given index.final int
Gets the value of thecellCount
property.final Callback
<VirtualFlow<T>, T> Returns the current cell factory.protected int
getCellIndex
(T cell) Return the index for a given cell.getCells()
Returns the list of cells displayed in the current viewport.Locates and returns the first non-empty IndexedCell that is partially or completely visible.protected T
Returns the first visible cell whose bounds are entirely within the viewport.final double
Gets the value of thefixedCellSize
property.protected final ScrollBar
getHbar()
Returns the scroll bar used for scrolling horizontally.Locates and returns the last non-empty IndexedCell that is currently partially or completely visible.protected T
Returns the last visible cell whose bounds are entirely within the viewport.final double
Gets the value of theposition
property.protected T
getPrivateCell
(int index) Creates and returns a new cell for the given index.protected final ScrollBar
getVbar()
Returns the scroll bar used for scrolling vertically.double
Returns the length of the viewport portion of theVirtualFlow
as computed during the layout pass.getVisibleCell
(int index) Gets a cell for the given index if the cell has been created and laid out.final boolean
Gets the value of thepannable
property.final boolean
Gets the value of thevertical
property.final BooleanProperty
Indicates whether the VirtualFlow viewport is capable of being panned by the user (either via the mouse or touch events).final DoubleProperty
The position of the VirtualFlow within its list of cells.protected void
Informs theVirtualFlow
that a layout pass should be done, and cell contents have changed.protected void
Informs theVirtualFlow
that a layout pass should be done, and the cell contents have not changed.protected void
Informs theVirtualFlow
that a layout pass should be done, and that the cell factory has changed.protected void
Informs theVirtualFlow
that a layout pass should be done and only the cell layout will be requested.void
Overridden to implement somewhat more efficient support for layout.protected void
resizeCell
(T cell) Resizes the given cell.double
scrollPixels
(double delta) Given a delta value representing a number of pixels, this method attempts to move the VirtualFlow in the given direction (positive is down/right, negative is up/left) the given number of pixels.void
scrollTo
(int index) Adjusts the cells such that the cell in the given index will be fully visible in the viewport.void
Adjusts the cells such that the selected cell will be fully visible in the viewport (but only just).void
scrollToBottom
(T lastCell) Adjust the position of cells so that the specified cell will be positioned at the end of the viewport.void
scrollToTop
(int index) Adjusts the cells such that the cell in the given index will be fully visible in the viewport, and positioned at the very top of the viewport.void
scrollToTop
(T firstCell) Adjust the position of cells so that the specified cell will be positioned at the start of the viewport.final void
setCellCount
(int value) Sets the value of thecellCount
property.final void
setCellFactory
(Callback<VirtualFlow<T>, T> value) Sets a new cell factory to use in the VirtualFlow.protected void
setCellIndex
(T cell, int index) The VirtualFlow uses this method to set a cells index (rather than callingIndexedCell.updateIndex(int)
directly), so it is a perfect place for subclasses to override if this if of interest.final void
setFixedCellSize
(double value) Sets the value of thefixedCellSize
property.final void
setPannable
(boolean value) Sets the value of thepannable
property.final void
setPosition
(double value) Sets the value of theposition
property.final void
setVertical
(boolean value) Sets the value of thevertical
property.final BooleanProperty
Indicates the primary direction of virtualization.Methods declared in 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 declared in class javafx.scene.Parent
getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, layoutChildren, needsLayoutProperty, requestParentLayout, setNeedsLayout, updateBounds
Methods declared in 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, lookup, 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, queryAccessibleAttribute, 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 declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods declared in interface javafx.css.Styleable
getStyleableNode
-
Property Details
-
vertical
Indicates the primary direction of virtualization. If true, then the primary direction of virtualization is vertical, meaning that cells will stack vertically on top of each other. If false, then they will stack horizontally next to each other.- See Also:
-
pannable
Indicates whether the VirtualFlow viewport is capable of being panned by the user (either via the mouse or touch events).- See Also:
-
cellCount
Indicates the number of cells that should be in the flow. The user of the VirtualFlow must set this appropriately. When the cell count changes the VirtualFlow responds by updating the visuals. If the items backing the cells change, but the count has not changed, you must call the reconfigureCells() function to update the visuals.- See Also:
-
position
The position of the VirtualFlow within its list of cells. This is a value between 0 and 1.- See Also:
-
fixedCellSize
For optimisation purposes, some use cases can trade dynamic cell length for speed - if fixedCellSize is greater than zero we'll use that rather than determine it by querying the cell itself.- See Also:
-
cellFactory
public final ObjectProperty<Callback<VirtualFlow<T extends IndexedCell>,T extends IndexedCell>> cellFactoryPropertySetting a custom cell factory has the effect of deferring all cell creation, allowing for total customization of the cell. Internally, the VirtualFlow is responsible for reusing cells - all that is necessary is for the custom cell factory to return from this function a cell which might be usable for representing any item in the VirtualFlow.
Refer to the
Cell
class documentation for more detail.- See Also:
-
-
Constructor Details
-
VirtualFlow
public VirtualFlow()Creates a new VirtualFlow instance.
-
-
Method Details
-
setVertical
public final void setVertical(boolean value) Sets the value of thevertical
property.- Property description:
- Indicates the primary direction of virtualization. If true, then the primary direction of virtualization is vertical, meaning that cells will stack vertically on top of each other. If false, then they will stack horizontally next to each other.
- Parameters:
value
- the value for thevertical
property- See Also:
-
isVertical
public final boolean isVertical()Gets the value of thevertical
property.- Property description:
- Indicates the primary direction of virtualization. If true, then the primary direction of virtualization is vertical, meaning that cells will stack vertically on top of each other. If false, then they will stack horizontally next to each other.
- Returns:
- the value of the
vertical
property - See Also:
-
verticalProperty
Indicates the primary direction of virtualization. If true, then the primary direction of virtualization is vertical, meaning that cells will stack vertically on top of each other. If false, then they will stack horizontally next to each other.- Returns:
- the
vertical
property - See Also:
-
isPannable
public final boolean isPannable()Gets the value of thepannable
property.- Property description:
- Indicates whether the VirtualFlow viewport is capable of being panned by the user (either via the mouse or touch events).
- Returns:
- the value of the
pannable
property - See Also:
-
setPannable
public final void setPannable(boolean value) Sets the value of thepannable
property.- Property description:
- Indicates whether the VirtualFlow viewport is capable of being panned by the user (either via the mouse or touch events).
- Parameters:
value
- the value for thepannable
property- See Also:
-
pannableProperty
Indicates whether the VirtualFlow viewport is capable of being panned by the user (either via the mouse or touch events).- Returns:
- the
pannable
property - See Also:
-
getCellCount
public final int getCellCount()Gets the value of thecellCount
property.- Property description:
- Indicates the number of cells that should be in the flow. The user of the VirtualFlow must set this appropriately. When the cell count changes the VirtualFlow responds by updating the visuals. If the items backing the cells change, but the count has not changed, you must call the reconfigureCells() function to update the visuals.
- Returns:
- the value of the
cellCount
property - See Also:
-
setCellCount
public final void setCellCount(int value) Sets the value of thecellCount
property.- Property description:
- Indicates the number of cells that should be in the flow. The user of the VirtualFlow must set this appropriately. When the cell count changes the VirtualFlow responds by updating the visuals. If the items backing the cells change, but the count has not changed, you must call the reconfigureCells() function to update the visuals.
- Parameters:
value
- the value for thecellCount
property- See Also:
-
cellCountProperty
Indicates the number of cells that should be in the flow. The user of the VirtualFlow must set this appropriately. When the cell count changes the VirtualFlow responds by updating the visuals. If the items backing the cells change, but the count has not changed, you must call the reconfigureCells() function to update the visuals.- Returns:
- the
cellCount
property - See Also:
-
getPosition
public final double getPosition()Gets the value of theposition
property.- Property description:
- The position of the VirtualFlow within its list of cells. This is a value between 0 and 1.
- Returns:
- the value of the
position
property - See Also:
-
setPosition
public final void setPosition(double value) Sets the value of theposition
property.- Property description:
- The position of the VirtualFlow within its list of cells. This is a value between 0 and 1.
- Parameters:
value
- the value for theposition
property- See Also:
-
positionProperty
The position of the VirtualFlow within its list of cells. This is a value between 0 and 1.- Returns:
- the
position
property - See Also:
-
setFixedCellSize
public final void setFixedCellSize(double value) Sets the value of thefixedCellSize
property.- Property description:
- For optimisation purposes, some use cases can trade dynamic cell length for speed - if fixedCellSize is greater than zero we'll use that rather than determine it by querying the cell itself.
- Parameters:
value
- the value for thefixedCellSize
property- See Also:
-
getFixedCellSize
public final double getFixedCellSize()Gets the value of thefixedCellSize
property.- Property description:
- For optimisation purposes, some use cases can trade dynamic cell length for speed - if fixedCellSize is greater than zero we'll use that rather than determine it by querying the cell itself.
- Returns:
- the value of the
fixedCellSize
property - See Also:
-
fixedCellSizeProperty
For optimisation purposes, some use cases can trade dynamic cell length for speed - if fixedCellSize is greater than zero we'll use that rather than determine it by querying the cell itself.- Returns:
- the
fixedCellSize
property - See Also:
-
setCellFactory
Sets a new cell factory to use in the VirtualFlow. This forces all old cells to be thrown away, and new cells to be created with the new cell factory.- Parameters:
value
- the new cell factory
-
getCellFactory
Returns the current cell factory.- Returns:
- the current cell factory
-
cellFactoryProperty
Setting a custom cell factory has the effect of deferring all cell creation, allowing for total customization of the cell. Internally, the VirtualFlow is responsible for reusing cells - all that is necessary is for the custom cell factory to return from this function a cell which might be usable for representing any item in the VirtualFlow.
Refer to the
Cell
class documentation for more detail.- Returns:
- the cell factory property
- See Also:
-
requestLayout
public void requestLayout()Overridden to implement somewhat more efficient support for layout. The VirtualFlow can generally be considered as being unmanaged, in that whenever the position changes, or other such things change, we need to perform a layout but there is no reason to notify the parent. However when things change which may impact the preferred size (such as vertical, createCell, and configCell) then we need to notify the parent.- Overrides:
requestLayout
in classParent
-
getAvailableCell
Get a cell which can be used in the layout. This function will reuse cells from the pile where possible, and will create new cells when necessary.- Parameters:
prefIndex
- the preferred index- Returns:
- the available cell
-
addAllToPile
protected void addAllToPile()This method will remove all cells from the VirtualFlow and remove them, adding them to the 'pile' (that is, a place from where cells can be used at a later date). This method is protected to allow subclasses to clean up appropriately. -
getVisibleCell
Gets a cell for the given index if the cell has been created and laid out. "Visible" is a bit of a misnomer, the cell might not be visible in the viewport (it may be clipped), but does distinguish between cells that have been created and are in use vs. those that are in the pile or not created.- Parameters:
index
- the index- Returns:
- the visible cell
-
getLastVisibleCell
Locates and returns the last non-empty IndexedCell that is currently partially or completely visible. This function may return null if there are no cells, or if the viewport length is 0.- Returns:
- the last visible cell
-
getFirstVisibleCell
Locates and returns the first non-empty IndexedCell that is partially or completely visible. This really only ever returns null if there are no cells or the viewport length is 0.- Returns:
- the first visible cell
-
scrollToTop
Adjust the position of cells so that the specified cell will be positioned at the start of the viewport. The given cell must already be "live".- Parameters:
firstCell
- the first cell
-
scrollToBottom
Adjust the position of cells so that the specified cell will be positioned at the end of the viewport. The given cell must already be "live".- Parameters:
lastCell
- the last cell
-
scrollTo
Adjusts the cells such that the selected cell will be fully visible in the viewport (but only just).- Parameters:
cell
- the cell
-
scrollTo
public void scrollTo(int index) Adjusts the cells such that the cell in the given index will be fully visible in the viewport.- Parameters:
index
- the index
-
scrollToTop
public void scrollToTop(int index) Adjusts the cells such that the cell in the given index will be fully visible in the viewport, and positioned at the very top of the viewport.- Parameters:
index
- the index
-
scrollPixels
public double scrollPixels(double delta) Given a delta value representing a number of pixels, this method attempts to move the VirtualFlow in the given direction (positive is down/right, negative is up/left) the given number of pixels. It returns the number of pixels actually moved.- Parameters:
delta
- the delta value- Returns:
- the number of pixels actually moved
-
getCell
Return a cell for the given index. This may be called for any cell, including beyond the range defined by cellCount, in which case an empty cell will be returned. The returned value should not be stored for any reason.- Parameters:
index
- the index- Returns:
- the cell
-
setCellIndex
The VirtualFlow uses this method to set a cells index (rather than callingIndexedCell.updateIndex(int)
directly), so it is a perfect place for subclasses to override if this if of interest.- Parameters:
cell
- The cell whose index will be updated.index
- The new index for the cell.
-
getCellIndex
Return the index for a given cell. This allows subclasses to customise how cell indices are retrieved.- Parameters:
cell
- the cell- Returns:
- the index
-
getHbar
Returns the scroll bar used for scrolling horizontally. A developer who needs to be notified when a scroll is happening could attach a listener to theScrollBar.valueProperty()
.- Returns:
- the scroll bar used for scrolling horizontally
- Since:
- 12
-
getVbar
Returns the scroll bar used for scrolling vertically. A developer who needs to be notified when a scroll is happening could attach a listener to theScrollBar.valueProperty()
. TheRegion.getWidth()
is also useful when adding a component over theTableView
in order to clip it so that it doesn't overlap theScrollBar
.- Returns:
- the scroll bar used for scrolling vertically
- Since:
- 12
-
getViewportLength
public double getViewportLength()Returns the length of the viewport portion of theVirtualFlow
as computed during the layout pass. For a vertical flow this is based on the height and for a horizontal flow on the width of the clip view.- Returns:
- the viewport length in pixels
- Since:
- 23
-
resizeCell
Resizes the given cell. IfisVertical()
is set totrue
, the cell width will be the maximum between the viewport width and the sum of all the cells'prefWidth
. The cell height will be computed by the cell itself unlessfixedCellSizeEnabled
is set totrue
, thengetFixedCellSize()
is used. IfisVertical()
is set tofalse
, the width and height calculations are reversed.- Parameters:
cell
- the cell to resize- Since:
- 12
-
getCells
Returns the list of cells displayed in the current viewport.The cells are ordered such that the first cell in this list is the first in the view, and the last cell is the last in the view. When pixel scrolling, the list is simply shifted and items drop off the beginning or the end, depending on the order of scrolling.
- Returns:
- the cells displayed in the current viewport
- Since:
- 12
-
getLastVisibleCellWithinViewport
Returns the last visible cell whose bounds are entirely within the viewport. When manually inserting rows, one may need to know which cell indices are visible in the viewport.- Returns:
- last visible cell whose bounds are entirely within the viewport
- Since:
- 12
-
getFirstVisibleCellWithinViewport
Returns the first visible cell whose bounds are entirely within the viewport. When manually inserting rows, one may need to know which cell indices are visible in the viewport.- Returns:
- first visible cell whose bounds are entirely within the viewport
- Since:
- 12
-
reconfigureCells
protected void reconfigureCells()Informs theVirtualFlow
that a layout pass should be done, and the cell contents have not changed. For example, this might be called from aTableView
orListView
when a layout is needed and no cells have been added or removed.- Since:
- 12
-
recreateCells
protected void recreateCells()Informs theVirtualFlow
that a layout pass should be done, and that the cell factory has changed. All cells in the viewport are recreated with the new cell factory.- Since:
- 12
-
rebuildCells
protected void rebuildCells()Informs theVirtualFlow
that a layout pass should be done, and cell contents have changed. All cells are removed and then added properly in the viewport.- Since:
- 12
-
requestCellLayout
protected void requestCellLayout()Informs theVirtualFlow
that a layout pass should be done and only the cell layout will be requested.- Since:
- 12
-
getPrivateCell
Creates and returns a new cell for the given index.If the requested index is not already an existing visible cell, it will create a cell for the given index and insert it into the
VirtualFlow
container. If the index exists, simply returns the visible cell. From that point on, it will be unmanaged, and is up to the caller of this method to manage it.This is useful if a row that should not be visible must be accessed (a row that always stick to the top for example). It can then be easily created, correctly initialized and inserted in the
VirtualFlow
container.- Parameters:
index
- the cell index- Returns:
- a cell for the given index inserted in the VirtualFlow container
- Since:
- 12
-