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 就接管按键。
相关
- UniversalLocationInteractableStep - 父类
- UniversalInteractableRenderer - 默认行为的实际实现处
- InteractableStep - 对应的遗留接口
- WaypointManager - 路点切换的最终执行方