use std::io::Stdout;
use crossterm::event::KeyEvent;
use dyn_clone::DynClone;
use tui::{backend::CrosstermBackend, layout::Rect, Frame};
use super::{FrameworkClean, ItemInfo};
#[allow(unused)]
pub trait FrameworkItem: DynClone {
fn selectable(&self) -> bool {
true
}
fn select(&mut self, framework: &FrameworkClean) -> bool {
true
}
fn deselect(&mut self, framework: &FrameworkClean) -> bool {
true
}
fn render(
&mut self,
frame: &mut Frame<CrosstermBackend<Stdout>>,
framework: &FrameworkClean,
area: Rect,
popup_render: bool,
info: ItemInfo,
) {
}
fn load_item(&mut self, framework: &FrameworkClean) {}
fn key_event(&mut self, framework: FrameworkClean, key: KeyEvent) {}
}
impl Clone for Box<dyn FrameworkItem> {
fn clone(&self) -> Self {
*dyn_clone::clone_box(&*self)
}
}