UniversalInteractableStep

双击切换路点

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.model.steps.UniversalInteractableStep
行数 21(api/model/steps 第二小)
声明 public abstract class ...<T extends IWaypointAndLocationProvider> extends ...(:15)

README.md 推荐路径之二: or UniversalInteractableStep when double-click should toggle a waypoint。

泛型收窄

类 泛型上界
UniversalLocationInteractableStep T extends ILocationProvider
本类 T extends IWaypointAndLocationProvider

⚠️ 收窄到「有路点能力」的数据点类型, 因为双击要创建路点,需要 IWaypointAndLocationProvider。

21 行做了什么

javadoc(:9)明写 UniversalInteractableRenderer supplies default double-click waypoint behavior —— 即本类自己不实现双击逻辑, 而是由 UniversalInteractableRenderer 的 onClick(...)(:54-68)在未被子类回调消费时 执行默认的路点切换。

⚠️ 所以本类只是类型标记(携带 IWaypointAndLocationProvider 泛型信息), 实际逻辑在渲染器侧。21 行里只有构造器(:18-20)与大量 javadoc。

默认行为的完整链路

鼠标点击
  ↓
UniversalInteractableRenderer.onMapClick(...)        // :54  final
  ↓
  1. 命中测试找出 hoveredRenderStep
  ↓
  2. 若配置了 withClickAction(action) → 调它(:141)
  ↓
  3. 若它返回 false(未消费)→ onClick(...) 默认路径(:74)
  ↓
  4. 双击 → 切换路点(updateActiveWaypoint / clearActiveWaypoint)

⚠️ 源码注释(:22)明写 A configured click callback runs before the default behavior. If it does not consume a double-click, waypoint-… —— 即自定义回调优先,未消费才走默认路点切换。

withKeyPressAction 的兄弟

UniversalInteractableRenderer 的 withKeyPressAction(IntPredicate)(:152)对应 onKeyPressed(:118), 与 ACTION_KEY(默认 DELETE)并存 —— 配了 withKeyPressAction 就接管按键。

相关