Class CircularPane

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.layout.Pane
jfxtras.scene.layout.CircularPane
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget

public class CircularPane extends javafx.scene.layout.Pane
This pane lays it children out in a circle or part of a circle (arc). In order to understand how to use this pane, it is important to understand how it places its children. Placing nodes on a circle in essence is not that difficult; a circle is 360 degrees, so each node is spaced 360 / n degrees apart, the real challenge is to determine how large the circle must be. Nodes in JavaFX are rectangles with a width and a height, but for calculating in a circle the rectangular shape is impractical. So CircularPane treats its child nodes as circles, or for better visualization: as beads on a chain. The first step is to determine how large a single bead is. This already is an interesting question. A beat should encompass the contents of the node, but CircularPane does not know what exactly is drawn in the node. It could be a simple flat or vertical line, where the encompassing circle's diameter is equal to the width or height (whichever is the largest). But if the contents is an X or a rectangle, then then encompassing circle's diameter is equal to the diagonal. Since CircularPane does not know, it has to assume the worst and use the diagonal. But the childrenAreCircles property allows the user to inform CircularPane than all the children are circular (or smaller), so it can then use the width or height to calculate the encompassing circle (bead). CircularPane segments the 360 degrees in equal parts; 360 / number of children. The largest bead determines the distance from the origin to where it fits in a segment, and this determines the size of the chain. By setting a debug color, the beads will be drawn and will clarify the layout.
  • Property Summary

    Properties
    Type
    Property
    Description
    javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>>
    animateInFinished
    javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>>
    animateOutFinished
    final javafx.beans.property.ReadOnlyBooleanProperty
    animatingIn
    final javafx.beans.property.ReadOnlyBooleanProperty
    animatingOut
    final javafx.beans.property.ReadOnlyBooleanProperty
    animating
    javafx.beans.property.ObjectProperty<javafx.util.Duration>
    animationDuration
    javafx.beans.property.ObjectProperty<CircularPane.AnimationInterpolation>
    animationInterpolation: calculate the position of a node during the animation (default: move from origin), use node.relocate to position node (or manually apply layoutBounds.minX/Y)
    javafx.beans.property.ObjectProperty<Double>
    arc in degrees: the arc is used to determine the end position; default = 360 = north (top)
    javafx.beans.property.ObjectProperty<Boolean>
    childrenAreCircular: if all children are circular, then we can use a different size
    javafx.beans.property.ObjectProperty<Boolean>
    clipAwayExcessWhitespace: cut away excess whitespace on the outside
    javafx.beans.property.ObjectProperty<Double>
    diameter: diameter of the whole layout
    javafx.beans.property.ObjectProperty<Double>
    gap: space between nodes
    javafx.beans.property.ObjectProperty<javafx.scene.paint.Paint>
    debug: show debug hints
    javafx.beans.property.ObjectProperty<Double>
    StartAngle in degrees: the startAngle is used to determine the starting position; default = 0 = north (top)

    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, 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
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
     
    class 
    This class holds additional layout information for animation.
    private class 
     
    private class 
     
    class 
    This class holds layout information at pane level
    protected static enum 
     
    class 
    This class holds layout information at node level
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>>
     
    private final javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>>
     
    private javafx.beans.property.ReadOnlyBooleanWrapper
     
    private javafx.beans.property.ReadOnlyBooleanWrapper
     
    private javafx.beans.property.ReadOnlyBooleanWrapper
     
    private final javafx.beans.property.ObjectProperty<javafx.util.Duration>
     
    private final javafx.beans.property.ObjectProperty<CircularPane.AnimationInterpolation>
     
    (package private) final Map<javafx.scene.Node,CircularPane.AnimationLayoutInfo>
     
    private final javafx.beans.property.ObjectProperty<Double>
     
     
    private final javafx.beans.property.ObjectProperty<Boolean>
     
    private final javafx.beans.property.ObjectProperty<Boolean>
     
    private final javafx.beans.property.ObjectProperty<Double>
     
    private final javafx.beans.property.ObjectProperty<Double>
     
    private boolean
     
    private final AtomicInteger
     
    private final Map<javafx.scene.Node,CircularPane.Bead>
     
    private final Map<javafx.scene.Node,CircularPane.Connector>
     
    private final javafx.beans.property.ObjectProperty<javafx.scene.paint.Paint>
     
    private final javafx.beans.property.ObjectProperty<Double>
     
    (package private) javafx.animation.Transition
     

    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
     
  • Method Summary

    Modifier and Type
    Method
    Description
    add(javafx.scene.Node node)
     
    protected void
    animate(double rate)
     
    static void
    animateAppear(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
     
    static void
    animateFromTheOrigin(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
     
    static void
     
    void
     
    javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>>
    animateInFinished
    void
     
    javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>>
    animateOutFinished
    static void
    animateOverTheArc(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
     
    static void
    animateOverTheArcWithFade(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
     
    static void
    animateSpiralOut(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
     
    final javafx.beans.property.ReadOnlyBooleanProperty
    animatingIn
    final javafx.beans.property.ReadOnlyBooleanProperty
    animatingOut
    final javafx.beans.property.ReadOnlyBooleanProperty
    animating
    javafx.beans.property.ObjectProperty<javafx.util.Duration>
    animationDuration
    javafx.beans.property.ObjectProperty<CircularPane.AnimationInterpolation>
    animationInterpolation: calculate the position of a node during the animation (default: move from origin), use node.relocate to position node (or manually apply layoutBounds.minX/Y)
    javafx.beans.property.ObjectProperty<Double>
    arc in degrees: the arc is used to determine the end position; default = 360 = north (top)
     
    private double
    calculateNodeHeight(javafx.scene.Node n, CircularPane.MinPrefMax size)
     
    private double
    calculateNodeWidth(javafx.scene.Node n, CircularPane.MinPrefMax size)
     
    private static double
    calculateX(double chainDiameter, double angle)
     
    private static double
    calculateY(double chainDiameter, double angle)
     
    javafx.beans.property.ObjectProperty<Boolean>
    childrenAreCircular: if all children are circular, then we can use a different size
    javafx.beans.property.ObjectProperty<Boolean>
    clipAwayExcessWhitespace: cut away excess whitespace on the outside
    protected double
    computeChainDiameter(double beadDiameter)
    The chain is the circle that runs through the bead's centers
    protected double
    computeMaxHeight(double width)
     
    protected double
    computeMaxWidth(double height)
     
    protected double
    computeMinHeight(double width)
     
    protected double
    computeMinWidth(double height)
     
    protected double
    computePrefHeight(double width)
     
    protected double
    computePrefWidth(double height)
     
    private static double
    degreesToRadials(double d)
     
    protected double
     
    private double
     
    private double
     
    javafx.beans.property.ObjectProperty<Double>
    diameter: diameter of the whole layout
    javafx.beans.property.ObjectProperty<Double>
    gap: space between nodes
    javafx.util.Duration
    Gets the value of the animationDuration property.
    Gets the value of the animationInterpolation property.
    Gets the value of the arc property.
    Gets the value of the childrenAreCircular property.
    Gets the value of the clipAwayExcessWhitespace property.
    Gets the value of the diameter property.
    Gets the value of the gap property.
    private List<javafx.scene.Node>
     
    javafx.event.EventHandler<javafx.event.ActionEvent>
     
    javafx.event.EventHandler<javafx.event.ActionEvent>
     
    javafx.scene.paint.Paint
    Gets the value of the showDebug property.
    Gets the value of the startAngle property.
    private Double
     
    final boolean
    Gets the value of the animating property.
    final boolean
    Gets the value of the animatingIn property.
    final boolean
    Gets the value of the animatingOut property.
    protected void
     
    remove(javafx.scene.Node node)
     
    void
     
    private void
    setAnimating(boolean value)
     
    private void
    setAnimatingIn(boolean value)
     
    private void
    setAnimatingOut(boolean value)
     
    void
    setAnimationDuration(javafx.util.Duration value)
    Sets the value of the animationDuration property.
    void
    Sets the value of the animationInterpolation property.
    void
    setArc(Double value)
    Sets the value of the arc property.
    void
    Sets the value of the childrenAreCircular property.
    void
    Sets the value of the clipAwayExcessWhitespace property.
    void
    Sets the value of the diameter property.
    void
    setGap(Double value)
    Sets the value of the gap property.
    void
    setOnAnimateInFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
     
    void
    setOnAnimateOutFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
     
    void
    setShowDebug(javafx.scene.paint.Paint value)
    Sets the value of the showDebug property.
    void
    Sets the value of the startAngle property.
    javafx.beans.property.ObjectProperty<javafx.scene.paint.Paint>
    debug: show debug hints
    javafx.beans.property.ObjectProperty<Double>
    StartAngle in degrees: the startAngle is used to determine the starting position; default = 0 = north (top)
    withAnimationDuration(javafx.util.Duration value)
     
     
    withArc(Double value)
     
     
     
     
    withGap(Double value)
     
    Id
    withOnAnimateOutFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
     
    withShowDebug(javafx.scene.paint.Paint value)
     
     
    witOnhAnimateInFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
     

    Methods inherited from class javafx.scene.layout.Pane

    getChildren

    Methods inherited from class javafx.scene.layout.Region

    backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, 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, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, 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, 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, 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
  • Property Details

  • Field Details

    • startAngleObjectProperty

      private final javafx.beans.property.ObjectProperty<Double> startAngleObjectProperty
    • arcObjectProperty

      private final javafx.beans.property.ObjectProperty<Double> arcObjectProperty
    • gapObjectProperty

      private final javafx.beans.property.ObjectProperty<Double> gapObjectProperty
    • diameterObjectProperty

      private final javafx.beans.property.ObjectProperty<Double> diameterObjectProperty
    • childrenAreCircularObjectProperty

      private final javafx.beans.property.ObjectProperty<Boolean> childrenAreCircularObjectProperty
    • clipAwayExcessWhitespaceObjectProperty

      private final javafx.beans.property.ObjectProperty<Boolean> clipAwayExcessWhitespaceObjectProperty
    • animationDurationObjectProperty

      private final javafx.beans.property.ObjectProperty<javafx.util.Duration> animationDurationObjectProperty
    • animationInterpolationObjectProperty

      private final javafx.beans.property.ObjectProperty<CircularPane.AnimationInterpolation> animationInterpolationObjectProperty
    • animating

      private javafx.beans.property.ReadOnlyBooleanWrapper animating
    • animatingIn

      private javafx.beans.property.ReadOnlyBooleanWrapper animatingIn
    • animatingOut

      private javafx.beans.property.ReadOnlyBooleanWrapper animatingOut
    • animateInFinishedObjectProperty

      private final javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>> animateInFinishedObjectProperty
    • animateOutFinishedObjectProperty

      private final javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>> animateOutFinishedObjectProperty
    • showDebugObjectProperty

      private final javafx.beans.property.ObjectProperty<javafx.scene.paint.Paint> showDebugObjectProperty
    • layingoutChildren

      private final AtomicInteger layingoutChildren
    • initial

      private boolean initial
    • nodeToBeadMap

      private final Map<javafx.scene.Node,CircularPane.Bead> nodeToBeadMap
    • nodeToConnectorMap

      private final Map<javafx.scene.Node,CircularPane.Connector> nodeToConnectorMap
    • calculateLayoutCache

      private final Map<CircularPane.MinPrefMax,CircularPane.LayoutInfo> calculateLayoutCache
    • transition

      javafx.animation.Transition transition
    • animationLayoutInfos

      final Map<javafx.scene.Node,CircularPane.AnimationLayoutInfo> animationLayoutInfos
  • Constructor Details

    • CircularPane

      public CircularPane()
  • Method Details

    • withId

      public CircularPane withId(String v)
      Id
    • startAngleProperty

      public javafx.beans.property.ObjectProperty<Double> startAngleProperty()
      StartAngle in degrees: the startAngle is used to determine the starting position; default = 0 = north (top)
      Returns:
      the startAngle property
      See Also:
    • getStartAngle

      public Double getStartAngle()
      Gets the value of the startAngle property.
      Property description:
      StartAngle in degrees: the startAngle is used to determine the starting position; default = 0 = north (top)
      Returns:
      the value of the startAngle property
      See Also:
    • setStartAngle

      public void setStartAngle(Double value)
      Sets the value of the startAngle property.
      Property description:
      StartAngle in degrees: the startAngle is used to determine the starting position; default = 0 = north (top)
      Parameters:
      value - the value for the startAngle property
      See Also:
    • withStartAngle

      public CircularPane withStartAngle(Double value)
    • getStartAngle360

      private Double getStartAngle360()
    • arcProperty

      public javafx.beans.property.ObjectProperty<Double> arcProperty()
      arc in degrees: the arc is used to determine the end position; default = 360 = north (top)
      Returns:
      the arc property
      See Also:
    • getArc

      public Double getArc()
      Gets the value of the arc property.
      Property description:
      arc in degrees: the arc is used to determine the end position; default = 360 = north (top)
      Returns:
      the value of the arc property
      See Also:
    • setArc

      public void setArc(Double value)
      Sets the value of the arc property.
      Property description:
      arc in degrees: the arc is used to determine the end position; default = 360 = north (top)
      Parameters:
      value - the value for the arc property
      See Also:
    • withArc

      public CircularPane withArc(Double value)
    • gapProperty

      public javafx.beans.property.ObjectProperty<Double> gapProperty()
      gap: space between nodes
      Returns:
      the gap property
      See Also:
    • getGap

      public Double getGap()
      Gets the value of the gap property.
      Property description:
      gap: space between nodes
      Returns:
      the value of the gap property
      See Also:
    • setGap

      public void setGap(Double value)
      Sets the value of the gap property.
      Property description:
      gap: space between nodes
      Parameters:
      value - the value for the gap property
      See Also:
    • withGap

      public CircularPane withGap(Double value)
    • diameterProperty

      public javafx.beans.property.ObjectProperty<Double> diameterProperty()
      diameter: diameter of the whole layout
      Returns:
      the diameter property
      See Also:
    • getDiameter

      public Double getDiameter()
      Gets the value of the diameter property.
      Property description:
      diameter: diameter of the whole layout
      Returns:
      the value of the diameter property
      See Also:
    • setDiameter

      public void setDiameter(Double value)
      Sets the value of the diameter property.
      Property description:
      diameter: diameter of the whole layout
      Parameters:
      value - the value for the diameter property
      See Also:
    • withDiameter

      public CircularPane withDiameter(Double value)
    • childrenAreCircularProperty

      public javafx.beans.property.ObjectProperty<Boolean> childrenAreCircularProperty()
      childrenAreCircular: if all children are circular, then we can use a different size
      Returns:
      the childrenAreCircular property
      See Also:
    • getChildrenAreCircular

      public Boolean getChildrenAreCircular()
      Gets the value of the childrenAreCircular property.
      Property description:
      childrenAreCircular: if all children are circular, then we can use a different size
      Returns:
      the value of the childrenAreCircular property
      See Also:
    • setChildrenAreCircular

      public void setChildrenAreCircular(Boolean value)
      Sets the value of the childrenAreCircular property.
      Property description:
      childrenAreCircular: if all children are circular, then we can use a different size
      Parameters:
      value - the value for the childrenAreCircular property
      See Also:
    • withChildrenAreCircular

      public CircularPane withChildrenAreCircular(Boolean value)
    • clipAwayExcessWhitespaceProperty

      public javafx.beans.property.ObjectProperty<Boolean> clipAwayExcessWhitespaceProperty()
      clipAwayExcessWhitespace: cut away excess whitespace on the outside
      Returns:
      the clipAwayExcessWhitespace property
      See Also:
    • getClipAwayExcessWhitespace

      public Boolean getClipAwayExcessWhitespace()
      Gets the value of the clipAwayExcessWhitespace property.
      Property description:
      clipAwayExcessWhitespace: cut away excess whitespace on the outside
      Returns:
      the value of the clipAwayExcessWhitespace property
      See Also:
    • setClipAwayExcessWhitespace

      public void setClipAwayExcessWhitespace(Boolean value)
      Sets the value of the clipAwayExcessWhitespace property.
      Property description:
      clipAwayExcessWhitespace: cut away excess whitespace on the outside
      Parameters:
      value - the value for the clipAwayExcessWhitespace property
      See Also:
    • withClipAwayExcessWhitespace

      public CircularPane withClipAwayExcessWhitespace(Boolean value)
    • animationDurationProperty

      public javafx.beans.property.ObjectProperty<javafx.util.Duration> animationDurationProperty()
      animationDuration
      Returns:
      the animationDuration property
      See Also:
    • getAnimationDuration

      public javafx.util.Duration getAnimationDuration()
      Gets the value of the animationDuration property.
      Property description:
      animationDuration
      Returns:
      the value of the animationDuration property
      See Also:
    • setAnimationDuration

      public void setAnimationDuration(javafx.util.Duration value)
      Sets the value of the animationDuration property.
      Property description:
      animationDuration
      Parameters:
      value - the value for the animationDuration property
      See Also:
    • withAnimationDuration

      public CircularPane withAnimationDuration(javafx.util.Duration value)
    • animationInterpolationProperty

      public javafx.beans.property.ObjectProperty<CircularPane.AnimationInterpolation> animationInterpolationProperty()
      animationInterpolation: calculate the position of a node during the animation (default: move from origin), use node.relocate to position node (or manually apply layoutBounds.minX/Y)
      Returns:
      the animationInterpolation property
      See Also:
    • getAnimationInterpolation

      public CircularPane.AnimationInterpolation getAnimationInterpolation()
      Gets the value of the animationInterpolation property.
      Property description:
      animationInterpolation: calculate the position of a node during the animation (default: move from origin), use node.relocate to position node (or manually apply layoutBounds.minX/Y)
      Returns:
      the value of the animationInterpolation property
      See Also:
    • setAnimationInterpolation

      public void setAnimationInterpolation(CircularPane.AnimationInterpolation value)
      Sets the value of the animationInterpolation property.
      Property description:
      animationInterpolation: calculate the position of a node during the animation (default: move from origin), use node.relocate to position node (or manually apply layoutBounds.minX/Y)
      Parameters:
      value - the value for the animationInterpolation property
      See Also:
    • withAnimationInterpolation

      public CircularPane withAnimationInterpolation(CircularPane.AnimationInterpolation value)
    • animatingProperty

      public final javafx.beans.property.ReadOnlyBooleanProperty animatingProperty()
      animating
      Returns:
      the animating property
      See Also:
    • setAnimating

      private void setAnimating(boolean value)
    • isAnimating

      public final boolean isAnimating()
      Gets the value of the animating property.
      Property description:
      animating
      Returns:
      the value of the animating property
      See Also:
    • animatingInProperty

      public final javafx.beans.property.ReadOnlyBooleanProperty animatingInProperty()
      animatingIn
      Returns:
      the animatingIn property
      See Also:
    • setAnimatingIn

      private void setAnimatingIn(boolean value)
    • isAnimatingIn

      public final boolean isAnimatingIn()
      Gets the value of the animatingIn property.
      Property description:
      animatingIn
      Returns:
      the value of the animatingIn property
      See Also:
    • animatingOutProperty

      public final javafx.beans.property.ReadOnlyBooleanProperty animatingOutProperty()
      animatingOut
      Returns:
      the animatingOut property
      See Also:
    • setAnimatingOut

      private void setAnimatingOut(boolean value)
    • isAnimatingOut

      public final boolean isAnimatingOut()
      Gets the value of the animatingOut property.
      Property description:
      animatingOut
      Returns:
      the value of the animatingOut property
      See Also:
    • animateInFinishedProperty

      public javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>> animateInFinishedProperty()
      animateInFinished
      Returns:
      the animateInFinished property
    • getOnAnimateInFinished

      public javafx.event.EventHandler<javafx.event.ActionEvent> getOnAnimateInFinished()
    • setOnAnimateInFinished

      public void setOnAnimateInFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
    • witOnhAnimateInFinished

      public CircularPane witOnhAnimateInFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
    • animateOutFinishedProperty

      public javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>> animateOutFinishedProperty()
      animateOutFinished
      Returns:
      the animateOutFinished property
    • getOnAnimateOutFinished

      public javafx.event.EventHandler<javafx.event.ActionEvent> getOnAnimateOutFinished()
    • setOnAnimateOutFinished

      public void setOnAnimateOutFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
    • withOnAnimateOutFinished

      public CircularPane withOnAnimateOutFinished(javafx.event.EventHandler<javafx.event.ActionEvent> value)
    • showDebugProperty

      public javafx.beans.property.ObjectProperty<javafx.scene.paint.Paint> showDebugProperty()
      debug: show debug hints
      Returns:
      the showDebug property
      See Also:
    • getShowDebug

      public javafx.scene.paint.Paint getShowDebug()
      Gets the value of the showDebug property.
      Property description:
      debug: show debug hints
      Returns:
      the value of the showDebug property
      See Also:
    • setShowDebug

      public void setShowDebug(javafx.scene.paint.Paint value)
      Sets the value of the showDebug property.
      Property description:
      debug: show debug hints
      Parameters:
      value - the value for the showDebug property
      See Also:
    • withShowDebug

      public CircularPane withShowDebug(javafx.scene.paint.Paint value)
    • computeMinWidth

      protected double computeMinWidth(double height)
      Overrides:
      computeMinWidth in class javafx.scene.layout.Region
    • computeMinHeight

      protected double computeMinHeight(double width)
      Overrides:
      computeMinHeight in class javafx.scene.layout.Region
    • computePrefWidth

      protected double computePrefWidth(double height)
      Overrides:
      computePrefWidth in class javafx.scene.layout.Region
    • computePrefHeight

      protected double computePrefHeight(double width)
      Overrides:
      computePrefHeight in class javafx.scene.layout.Region
    • computeMaxWidth

      protected double computeMaxWidth(double height)
      Overrides:
      computeMaxWidth in class javafx.scene.layout.Region
    • computeMaxHeight

      protected double computeMaxHeight(double width)
      Overrides:
      computeMaxHeight in class javafx.scene.layout.Region
    • layoutChildren

      protected void layoutChildren()
      Overrides:
      layoutChildren in class javafx.scene.Parent
    • requestLayout

      public void requestLayout()
      Overrides:
      requestLayout in class javafx.scene.Parent
    • calculateLayout

      protected CircularPane.LayoutInfo calculateLayout(CircularPane.MinPrefMax size)
    • animateIn

      public void animateIn()
    • animateOut

      public void animateOut()
    • animate

      protected void animate(double rate)
    • animateFromTheOrigin

      public static void animateFromTheOrigin(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
      Parameters:
      progress -
      animationLayoutInfo -
    • animateSpiralOut

      public static void animateSpiralOut(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
      Parameters:
      progress -
      animationLayoutInfo -
    • animateFromTheOriginWithFadeRotate

      public static void animateFromTheOriginWithFadeRotate(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
      Parameters:
      progress -
      animationLayoutInfo -
    • animateOverTheArc

      public static void animateOverTheArc(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
      Parameters:
      progress -
      animationLayoutInfo -
    • animateOverTheArcWithFade

      public static void animateOverTheArcWithFade(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
      Parameters:
      progress -
      animationLayoutInfo -
    • animateAppear

      public static void animateAppear(double progress, CircularPane.AnimationLayoutInfo animationLayoutInfo)
      Parameters:
      progress -
      animationLayoutInfo -
    • add

      public CircularPane add(javafx.scene.Node node)
    • remove

      public CircularPane remove(javafx.scene.Node node)
    • getManagedChildrenWithoutBeads

      private List<javafx.scene.Node> getManagedChildrenWithoutBeads()
    • calculateX

      private static double calculateX(double chainDiameter, double angle)
    • calculateY

      private static double calculateY(double chainDiameter, double angle)
    • computeChainDiameter

      protected double computeChainDiameter(double beadDiameter)
      The chain is the circle that runs through the bead's centers
      Parameters:
      size -
      width -
      Returns:
    • determineBeadDiameter

      protected double determineBeadDiameter(CircularPane.MinPrefMax size)
    • determineBeadDiameterUsingWidthOrHeight

      private double determineBeadDiameterUsingWidthOrHeight(CircularPane.MinPrefMax size)
    • determineBeadDiameterUsingTheDiagonal

      private double determineBeadDiameterUsingTheDiagonal(CircularPane.MinPrefMax size)
    • calculateNodeWidth

      private double calculateNodeWidth(javafx.scene.Node n, CircularPane.MinPrefMax size)
    • calculateNodeHeight

      private double calculateNodeHeight(javafx.scene.Node n, CircularPane.MinPrefMax size)
    • degreesToRadials

      private static double degreesToRadials(double d)