Creates a new RotorNavigationService instance.
The context providing access to the active trace
Provides terse/verbose/off mode for message formatting
Used to push intersection-mode messages through the text alert region. The alert region re-mounts on every dispatch (keyed by a revision counter), which is what causes screen readers to re-announce on repeat key presses. Without this, identical messages dispatched only to the rotor area do not re-announce.
Advances to the next rotor navigation mode.
The name of the new rotor mode, or grid info if entering grid mode
Moves to the previous rotor navigation mode.
The name of the new rotor mode, or grid info if entering grid mode
Gets the current rotor mode index.
The current rotor index
Moves to the next data point in the specified direction based on current compare mode.
The direction to move ('left' or 'right')
Error message if move failed, null otherwise
Moves up to a data point with lower/higher value based on rotor mode, or moves up one grid cell in grid mode.
Error message if move failed, null otherwise
Moves down to a data point with lower/higher value based on rotor mode, or moves down one grid cell in grid mode.
Error message if move failed, null otherwise
Moves left to a data point with lower/higher value based on rotor mode, or moves left one grid cell in grid mode.
Error message if move failed, null otherwise
Moves right to a data point with lower/higher value based on rotor mode, or moves right one grid cell in grid mode.
Error message if move failed, null otherwise
Sets the rotor mode based on the current index and updates context state.
Gets the current rotor mode name.
Known limitation: rotorIndex is not reset when the active plot/trace changes. If the user cycles to a capability-gated mode (GRID_MODE or INTERSECTION_MODE) and focus then moves to a trace that does not advertise that capability, the modulo below silently wraps the index onto a different mode without announcing the switch. Resetting the rotor on context change is a broader UX decision tracked separately from this file.
The display name of the current rotor mode
Gets the comparison type for the current rotor mode.
'lower' or 'higher' based on the current mode
Manages rotor-based navigation for the active trace via alt+shift+up and alt+shift+down
Purpose:
Available modes vary by trace type:
Mode descriptions:
Responsibilities:
Dependencies:
Notes: