sql_cli/debug/
viewport_debug.rs1use crate::debug::debug_trace::{DebugSection, DebugSectionBuilder, DebugTrace, Priority};
2use crate::ui::viewport_manager::ViewportManager;
3use std::sync::Arc;
4
5pub struct ViewportDebugProvider {
7 viewport_manager: Arc<ViewportManager>,
8}
9
10impl ViewportDebugProvider {
11 pub fn new(viewport_manager: Arc<ViewportManager>) -> Self {
12 Self { viewport_manager }
13 }
14}
15
16impl DebugTrace for ViewportDebugProvider {
17 fn name(&self) -> &str {
18 "ViewportManager"
19 }
20
21 fn debug_sections(&self) -> Vec<DebugSection> {
22 let mut builder = DebugSectionBuilder::new();
23
24 builder.add_section("VIEWPORT STATE", "", Priority::VIEWPORT);
26
27 let crosshair_row = self.viewport_manager.get_crosshair_row();
29 let crosshair_col = self.viewport_manager.get_crosshair_col();
30 builder.add_field(
31 "Crosshair Position",
32 format!("row={}, col={}", crosshair_row, crosshair_col),
33 );
34
35 let viewport_range = self.viewport_manager.get_viewport_range();
37 builder.add_field(
38 "Viewport Range",
39 format!("{}-{}", viewport_range.start, viewport_range.end),
40 );
41
42 let viewport_rows = self.viewport_manager.get_viewport_rows();
44 builder.add_field(
45 "Viewport Rows",
46 format!("{}-{}", viewport_rows.start, viewport_rows.end),
47 );
48
49 builder.add_field(
51 "Packing Mode",
52 format!("{:?}", self.viewport_manager.get_packing_mode()),
53 );
54
55 builder.add_field("Cursor Locked", self.viewport_manager.is_cursor_locked());
57 builder.add_field(
58 "Viewport Locked",
59 self.viewport_manager.is_viewport_locked(),
60 );
61
62 builder.build()
71 }
72
73 fn debug_summary(&self) -> Option<String> {
74 let viewport_rows = self.viewport_manager.get_viewport_rows();
75 let viewport_cols = self.viewport_manager.get_viewport_range();
76 let crosshair_row = self.viewport_manager.get_crosshair_row();
77 let crosshair_col = self.viewport_manager.get_crosshair_col();
78 Some(format!(
79 "Viewport: {} rows x {} cols, Crosshair: ({}, {})",
80 viewport_rows.end - viewport_rows.start,
81 viewport_cols.end - viewport_cols.start,
82 crosshair_row,
83 crosshair_col
84 ))
85 }
86
87 fn is_active(&self) -> bool {
88 true }
90}