egui_charts/ui/widget_bar/
state.rs1use super::tabs::RightPanelTab;
6use crate::tokens::DESIGN_TOKENS;
7
8#[derive(Clone, Debug)]
10pub struct RightToolbarState {
11 pub active_tab: Option<RightPanelTab>,
13 pub expanded: bool,
15 pub panel_width: f32,
17}
18
19impl Default for RightToolbarState {
20 fn default() -> Self {
21 Self {
22 active_tab: None,
23 expanded: false,
24 panel_width: DESIGN_TOKENS.sizing.toolbar.right_panel_width,
25 }
26 }
27}
28
29impl RightToolbarState {
30 pub fn new() -> Self {
32 Self::default()
33 }
34
35 pub fn set_active_tab(&mut self, tab: Option<RightPanelTab>) {
37 self.active_tab = tab;
38 self.expanded = tab.is_some();
39 }
40
41 pub fn toggle_tab(&mut self, tab: RightPanelTab) {
43 if self.active_tab == Some(tab) {
44 self.active_tab = None;
45 self.expanded = false;
46 } else {
47 self.active_tab = Some(tab);
48 self.expanded = true;
49 }
50 }
51
52 pub fn is_tab_active(&self, tab: RightPanelTab) -> bool {
54 self.active_tab == Some(tab)
55 }
56
57 pub fn sync_from(&mut self, panel_width: f32, active_tab: Option<RightPanelTab>) {
59 self.panel_width = panel_width;
60 self.active_tab = active_tab;
61 self.expanded = active_tab.is_some();
62 }
63}