1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//! Object Tree Panel - Object management
//!
//! A comprehensive panel for managing all chart objects including:
//! - Data Window: Real-time OHLCV data at cursor position
//! - Source Tree: Hierarchical view of indicators and drawings
//! - Full object management: visibility, lock, delete, duplicate, reorder
//!
//! # Architecture
//!
//! ```text
//! object_tree/
//! ├── mod.rs # Public API
//! ├── config.rs # Configuration
//! ├── state.rs # State management
//! ├── types.rs # Core types (SourceItem, DataWindowInfo, etc.)
//! ├── actions.rs # Action enum
//! ├── panel.rs # Main widget
//! ├── data_window.rs # Data Window section
//! ├── source_tree.rs # Source tree rendering
//! ├── item_row.rs # Individual item rendering
//! └── context_menu.rs # Right-click context menu
//! ```
//!
//! # Example
//!
//! ```no_run
//! use egui_open_trading_charts_rs::ui::widget_bar::panels::object_tree::{
//! ObjectTreePanel, ObjectTreeAction, SourceItem, DataWindowInfo
//! };
//!
//! let mut panel = ObjectTreePanel::new();
//! let mut sources = vec![
//! SourceItem::indicator(1, "SMA(20)", egui::Color32::YELLOW),
//! SourceItem::drawing(2, DrawingToolType::TrendLine, egui::Color32::BLUE),
//! ];
//!
//! let action = panel.show(ui, Some(&data_window_info), &mut sources);
//! match action {
//! ObjectTreeAction::Delete(id) => { /* Handle delete */ }
//! ObjectTreeAction::ToggleVisibility(id) => { /* Handle visibility */ }
//! _ => {}
//! }
//! ```
//!
//! Feature-complete object tree panel.
// Re-export public API
pub use ObjectTreeAction;
pub use ObjectTreeConfig;
pub use ObjectTreePanel;
pub use ObjectTreeState;
pub use ;