seamless-glance 1.0.0

Fast, read-only AWS TUI for cloud infrastructure visibility and triage
use crate::ui::overlay::overlays::{ConfirmCommandState, DescribeOverlayState};

pub trait ScrollableOverlay {
    fn scroll_up(&mut self);
    fn scroll_down(&mut self);
    fn page_up(&mut self, lines: u16);
    fn page_down(&mut self, lines: u16);
    fn scroll_to_top(&mut self);
    fn scroll_to_bottom(&mut self);
}

impl ScrollableOverlay for DescribeOverlayState {
    fn scroll_up(&mut self) {
        self.scroll = self.scroll.saturating_sub(1);
    }

    fn scroll_down(&mut self) {
        self.scroll = self.scroll.saturating_add(1);
    }

    fn page_up(&mut self, lines: u16) {
        self.scroll = self.scroll.saturating_sub(lines);
    }

    fn page_down(&mut self, lines: u16) {
        self.scroll = self.scroll.saturating_add(lines);
    }

    fn scroll_to_top(&mut self) {
        self.scroll = 0;
    }

    fn scroll_to_bottom(&mut self) {
        self.scroll = u16::MAX;
    }
}

impl ScrollableOverlay for ConfirmCommandState {
    fn scroll_up(&mut self) {
        self.scroll = self.scroll.saturating_sub(1);
    }

    fn scroll_down(&mut self) {
        self.scroll = self.scroll.saturating_add(1);
    }

    fn page_up(&mut self, lines: u16) {
        self.scroll = self.scroll.saturating_sub(lines);
    }

    fn page_down(&mut self, lines: u16) {
        self.scroll = self.scroll.saturating_add(lines);
    }

    fn scroll_to_top(&mut self) {
        self.scroll = 0;
    }

    fn scroll_to_bottom(&mut self) {
        self.scroll = u16::MAX;
    }
}