Module org.snapfx

Class DockSideBarController

java.lang.Object
org.snapfx.sidebar.DockSideBarController

public final class DockSideBarController extends Object
Manages transient sidebar view state and sidebar interaction policy for SnapFX.

This controller stores UI-only sidebar state such as selected sidebar nodes, temporary overlay visibility, and temporary pinned-panel collapse flags. Persistent sidebar model state (pinned entries, pinned-open flags, persisted panel width) remains owned by DockGraph.

  • Constructor Details

    • DockSideBarController

      public DockSideBarController()
      Creates a controller with a default sidebar interaction state.
  • Method Details

    • getSideBarMode

      public DockSideBarMode getSideBarMode()
      Returns the current framework sidebar rendering mode.
      Returns:
      current sidebar mode
    • setSideBarMode

      public boolean setSideBarMode(DockSideBarMode mode)
      Sets the framework sidebar rendering mode.
      Parameters:
      mode - target mode, falls back to DockSideBarMode.AUTO when null
      Returns:
      true when the mode changed; otherwise false
    • isCollapsePinnedSideBarOnActiveIconClick

      public boolean isCollapsePinnedSideBarOnActiveIconClick()
      Returns whether active-icon click should collapse currently pinned-open side panels.
      Returns:
      true when active-icon click collapses pinned-open side panels
    • setCollapsePinnedSideBarOnActiveIconClick

      public void setCollapsePinnedSideBarOnActiveIconClick(boolean collapsePinnedSideBarOnActiveIconClick)
      Controls whether active-icon click should collapse currently pinned-open side panels.
      Parameters:
      collapsePinnedSideBarOnActiveIconClick - collapse policy flag
    • isOverlayOpen

      public boolean isOverlayOpen(javafx.geometry.Side side)
      Returns whether the transient overlay panel is currently open for a side.
      Parameters:
      side - sidebar side
      Returns:
      true when the overlay panel is open
    • isPinnedPanelCollapsed

      public boolean isPinnedPanelCollapsed(javafx.geometry.Side side)
      Returns whether the pinned-open side panel is temporarily collapsed for a side.
      Parameters:
      side - sidebar side
      Returns:
      true when a pinned-open panel is temporarily collapsed
    • hasOpenOverlays

      public boolean hasOpenOverlays()
      Returns whether any transient overlay sidebar panel is currently open.
      Returns:
      true when at least one transient overlay is open
    • onIconClicked

      public void onIconClicked(javafx.geometry.Side side, DockNode dockNode, boolean sidePinnedOpen)
      Updates transient state after a sidebar icon click.

      Behavior mirrors the previous SnapFX implementation: pinned-open sidebars toggle temporary collapse/expand behavior, while overlay sidebars toggle open/close behavior for the selected node.

      Parameters:
      side - sidebar side
      dockNode - selected node
      sidePinnedOpen - whether the side is currently pinned-open in the persistent model
    • onPanelPinnedOpen

      public void onPanelPinnedOpen(javafx.geometry.Side side, DockNode dockNode, boolean sidePinnedOpen)
      Updates transient state after pinning a panel open.
      Parameters:
      side - sidebar side
      dockNode - selected node
      sidePinnedOpen - whether the pin-open operation is currently reflected in the model
    • onPanelCollapsed

      public void onPanelCollapsed(javafx.geometry.Side side, DockNode dockNode, boolean sidePinnedOpen)
      Updates transient state after collapsing a pinned-open panel.
      Parameters:
      side - sidebar side
      dockNode - selected node
      sidePinnedOpen - whether the side is still pinned-open after collapse attempt
    • onPanelRestoreRequested

      public void onPanelRestoreRequested(javafx.geometry.Side side, DockNode dockNode)
      Updates transient state before restoring a node from sidebar to the main layout.
      Parameters:
      side - sidebar side
      dockNode - node to restore
    • onNodePinned

      public void onNodePinned(javafx.geometry.Side side, DockNode dockNode)
      Updates transient state after a node is pinned into a sidebar.
      Parameters:
      side - sidebar side
      dockNode - pinned node
    • onPinOpenApplied

      public void onPinOpenApplied(javafx.geometry.Side side, boolean sidePinnedOpen)
      Applies transient-state cleanup after attempting to pin-open a sidebar side.
      Parameters:
      side - sidebar side
      sidePinnedOpen - whether pin-open is currently active in the model
    • onCollapseApplied

      public void onCollapseApplied(javafx.geometry.Side side, boolean sidePinnedOpen)
      Applies transient-state cleanup after attempting to collapse a pinned-open sidebar side.
      Parameters:
      side - sidebar side
      sidePinnedOpen - whether the side remains pinned-open after the collapse attempt
    • closeTransientOverlays

      public boolean closeTransientOverlays(Predicate<javafx.geometry.Side> sidePinnedOpenResolver)
      Closes transient overlays for sides that are not currently pinned-open.
      Parameters:
      sidePinnedOpenResolver - callback used to query persistent pinned-open state by side
      Returns:
      true when at least one overlay was closed
    • pruneInvalidViewState

      public void pruneInvalidViewState(javafx.geometry.Side side, List<DockNode> pinnedNodes, boolean sidePinnedOpen)
      Reconciles transient state for a side against currently pinned nodes and pinned-open model state.
      Parameters:
      side - sidebar side
      pinnedNodes - currently pinned nodes on the side
      sidePinnedOpen - whether the side is currently pinned-open in the model
    • resolveSelectedNode

      public DockNode resolveSelectedNode(javafx.geometry.Side side, List<DockNode> pinnedNodes)
      Resolves the selected node for a sidebar side using current pinned-node state.
      Parameters:
      side - sidebar side
      pinnedNodes - currently pinned nodes on the side
      Returns:
      selected node for the side, or null when no pinned nodes are available
    • resetTransientViewState

      public void resetTransientViewState()
      Clears all transient sidebar view state.
    • forgetTransientStateForNode

      public void forgetTransientStateForNode(DockNode node)
      Removes transient state entries that reference a given node.
      Parameters:
      node - node whose transient state should be removed