From dca4788fb87875398af6774fbb5ea22317fe621c Mon Sep 17 00:00:00 2001
From: Federico Lolli <federico.lolli@skywarder.eu>
Date: Thu, 7 Nov 2024 18:52:18 +0100
Subject: [PATCH] Moved default pane in its own module

---
 src/ui/panes.rs         | 89 ++---------------------------------------
 src/ui/panes/default.rs | 85 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 89 insertions(+), 85 deletions(-)
 create mode 100644 src/ui/panes/default.rs

diff --git a/src/ui/panes.rs b/src/ui/panes.rs
index 8a7f376..951d14e 100644
--- a/src/ui/panes.rs
+++ b/src/ui/panes.rs
@@ -1,11 +1,11 @@
+mod default;
 mod messages_viewer;
 mod plot_2d;
 
 use enum_dispatch::enum_dispatch;
-use plot_2d::Plot2DPane;
 use serde::{Deserialize, Serialize};
 
-use super::composable_view::{PaneAction, PaneResponse};
+use super::composable_view::PaneResponse;
 
 #[enum_dispatch(Pane)]
 pub trait PaneBehavior {
@@ -18,94 +18,13 @@ pub trait PaneBehavior {
 #[derive(Clone, Debug, Serialize, Deserialize)]
 #[enum_dispatch]
 pub enum Pane {
-    Default(DefaultPane),
+    Default(default::DefaultPane),
     MessagesViewer(messages_viewer::MessagesViewerPane),
     Plot2D(plot_2d::Plot2DPane),
 }
 
 impl Default for Pane {
     fn default() -> Self {
-        Pane::Default(DefaultPane::default())
-    }
-}
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-pub struct DefaultPane {
-    occupied: f32,
-    fixed: bool,
-    contains_pointer: bool,
-}
-
-impl Default for DefaultPane {
-    fn default() -> Self {
-        DefaultPane {
-            occupied: 0.0,
-            fixed: false,
-            contains_pointer: false,
-        }
-    }
-}
-
-impl PaneBehavior for DefaultPane {
-    fn ui(&mut self, ui: &mut egui::Ui) -> PaneResponse {
-        let mut response = PaneResponse::default();
-        let pane_rect = ui.max_rect();
-
-        let parent = ui.vertical_centered(|ui| {
-            let hpad = (pane_rect.height() - self.occupied) / 2.0;
-            if self.fixed {
-                ui.add_space(hpad);
-            }
-            let mut height_occupied = 0.0;
-            let btn = ui.button("Vertical Split");
-            if btn.clicked() {
-                response.set_action(PaneAction::SplitV);
-                log::debug!("Vertical Split button clicked");
-            }
-            height_occupied += btn.rect.height();
-            let btn = ui.button("Horizontal Split");
-            if btn.clicked() {
-                response.set_action(PaneAction::SplitH);
-                log::debug!("Horizontal Split button clicked");
-            }
-            height_occupied += btn.rect.height();
-            let btn = ui.button("Plot");
-            if btn.clicked() {
-                response.set_action(PaneAction::Replace(Box::new(Pane::Plot2D(
-                    Plot2DPane::default(),
-                ))));
-            }
-            height_occupied += btn.rect.height();
-            if !self.fixed {
-                self.occupied = height_occupied;
-                ui.ctx().request_discard("test");
-                self.fixed = true;
-            }
-            if self.fixed {
-                ui.add_space(hpad);
-            }
-            ui.set_min_height(pane_rect.height());
-        });
-
-        self.contains_pointer = parent.response.contains_pointer();
-
-        if parent
-            .response
-            .interact(egui::Sense::click_and_drag())
-            .on_hover_cursor(egui::CursorIcon::Grab)
-            .dragged()
-        {
-            response.set_drag_started();
-        };
-
-        response
-    }
-
-    fn tab_title(&self) -> egui::WidgetText {
-        "Default".into()
-    }
-
-    fn contains_pointer(&self) -> bool {
-        self.contains_pointer
+        Pane::Default(default::DefaultPane::default())
     }
 }
diff --git a/src/ui/panes/default.rs b/src/ui/panes/default.rs
new file mode 100644
index 0000000..16f5d96
--- /dev/null
+++ b/src/ui/panes/default.rs
@@ -0,0 +1,85 @@
+use super::{plot_2d::Plot2DPane, Pane, PaneBehavior};
+use serde::{Deserialize, Serialize};
+
+use crate::ui::composable_view::{PaneAction, PaneResponse};
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+pub struct DefaultPane {
+    occupied: f32,
+    fixed: bool,
+    contains_pointer: bool,
+}
+
+impl Default for DefaultPane {
+    fn default() -> Self {
+        DefaultPane {
+            occupied: 0.0,
+            fixed: false,
+            contains_pointer: false,
+        }
+    }
+}
+
+impl PaneBehavior for DefaultPane {
+    fn ui(&mut self, ui: &mut egui::Ui) -> PaneResponse {
+        let mut response = PaneResponse::default();
+        let pane_rect = ui.max_rect();
+
+        let parent = ui.vertical_centered(|ui| {
+            let hpad = (pane_rect.height() - self.occupied) / 2.0;
+            if self.fixed {
+                ui.add_space(hpad);
+            }
+            let mut height_occupied = 0.0;
+            let btn = ui.button("Vertical Split");
+            if btn.clicked() {
+                response.set_action(PaneAction::SplitV);
+                log::debug!("Vertical Split button clicked");
+            }
+            height_occupied += btn.rect.height();
+            let btn = ui.button("Horizontal Split");
+            if btn.clicked() {
+                response.set_action(PaneAction::SplitH);
+                log::debug!("Horizontal Split button clicked");
+            }
+            height_occupied += btn.rect.height();
+            let btn = ui.button("Plot");
+            if btn.clicked() {
+                response.set_action(PaneAction::Replace(Box::new(Pane::Plot2D(
+                    Plot2DPane::default(),
+                ))));
+            }
+            height_occupied += btn.rect.height();
+            if !self.fixed {
+                self.occupied = height_occupied;
+                ui.ctx().request_discard("test");
+                self.fixed = true;
+            }
+            if self.fixed {
+                ui.add_space(hpad);
+            }
+            ui.set_min_height(pane_rect.height());
+        });
+
+        self.contains_pointer = parent.response.contains_pointer();
+
+        if parent
+            .response
+            .interact(egui::Sense::click_and_drag())
+            .on_hover_cursor(egui::CursorIcon::Grab)
+            .dragged()
+        {
+            response.set_drag_started();
+        };
+
+        response
+    }
+
+    fn tab_title(&self) -> egui::WidgetText {
+        "Default".into()
+    }
+
+    fn contains_pointer(&self) -> bool {
+        self.contains_pointer
+    }
+}
-- 
GitLab