diff options
author | Shav Kinderlehrer <[email protected]> | 2024-03-05 23:34:55 -0500 |
---|---|---|
committer | Shav Kinderlehrer <[email protected]> | 2024-03-05 23:34:55 -0500 |
commit | 022574877dbabc1fbb386dc3b59765de528107c9 (patch) | |
tree | e662b3808cd9903ecb76d6a61029ac69de701aa8 /src/component.rs | |
download | molehole-022574877dbabc1fbb386dc3b59765de528107c9.tar.gz molehole-022574877dbabc1fbb386dc3b59765de528107c9.zip |
Initial commit
Diffstat (limited to 'src/component.rs')
-rw-r--r-- | src/component.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/component.rs b/src/component.rs new file mode 100644 index 0000000..1896bc2 --- /dev/null +++ b/src/component.rs @@ -0,0 +1,43 @@ +use crossterm::event::{KeyEvent, MouseEvent}; +use eyre::Result; +use ratatui::prelude::{Frame, Rect}; + +use crate::action::Action; +use crate::app_event::AppEvent; + +pub trait Component { + fn init(&mut self) -> Result<()> { + Ok(()) + } + + #[allow(unused)] + fn handle_event(&mut self, event: AppEvent) -> Result<Option<Action>> { + match event { + AppEvent::Key(key_event) => Ok(self.handle_key_event(key_event)?), + AppEvent::Mouse(mouse_event) => { + Ok(self.handle_mouse_event(mouse_event)?) + } + _ => Ok(None), + } + } + + #[allow(unused)] + fn handle_key_event(&mut self, key: KeyEvent) -> Result<Option<Action>> { + Ok(None) + } + + #[allow(unused)] + fn handle_mouse_event( + &mut self, + mouse: MouseEvent, + ) -> Result<Option<Action>> { + Ok(None) + } + + #[allow(unused)] + fn update(&mut self, action: Action) -> Result<Option<Action>> { + Ok(None) + } + + fn render(&mut self, frame: &mut Frame, rect: Rect); +} |