use crossterm::event::KeyCode;
use crossterm::event::KeyModifiers;
use crate::widgets::KeyEventHandler;
use crate::Result;
use super::ScrollState;
pub enum ScrollEvent
{
Handled,
NotHandled,
}
impl KeyEventHandler<'_, ScrollEvent> for ScrollState
{
fn handle_key_event(
&mut self,
code: KeyCode,
_modifiers: KeyModifiers,
) -> Result<ScrollEvent>
{
match code
{
KeyCode::Up => self
.scrollview
.scroll_up(),
KeyCode::Down => self
.scrollview
.scroll_down(),
KeyCode::PageUp => self
.scrollview
.scroll_page_up(),
KeyCode::PageDown => self
.scrollview
.scroll_page_down(),
KeyCode::Home => self
.scrollview
.scroll_to_top(),
KeyCode::End => self
.scrollview
.scroll_to_bottom(),
_ => return Ok(ScrollEvent::NotHandled),
};
Ok(ScrollEvent::Handled)
}
}