52 lines
1.0 KiB
Rust
52 lines
1.0 KiB
Rust
use tui_tree_widget::{TreeItem, TreeState};
|
|
|
|
pub struct StatefulTree<'a> {
|
|
pub state: TreeState<&'static str>,
|
|
pub items: Vec<TreeItem<'a, &'static str>>,
|
|
}
|
|
|
|
impl<'a> StatefulTree<'a> {
|
|
#[allow(dead_code)]
|
|
pub fn new() -> Self {
|
|
Self {
|
|
state: TreeState::default(),
|
|
items: Vec::new(),
|
|
}
|
|
}
|
|
|
|
pub fn with_items(items: Vec<TreeItem<'a, &'static str>>) -> Self {
|
|
Self {
|
|
state: TreeState::default(),
|
|
items,
|
|
}
|
|
}
|
|
|
|
pub fn first(&mut self) {
|
|
self.state.select_first(&self.items);
|
|
}
|
|
|
|
pub fn last(&mut self) {
|
|
self.state.select_last(&self.items);
|
|
}
|
|
|
|
pub fn down(&mut self) {
|
|
self.state.key_down(&self.items);
|
|
}
|
|
|
|
pub fn up(&mut self) {
|
|
self.state.key_up(&self.items);
|
|
}
|
|
|
|
pub fn left(&mut self) {
|
|
self.state.key_left();
|
|
}
|
|
|
|
pub fn right(&mut self) {
|
|
self.state.key_right();
|
|
}
|
|
|
|
pub fn toggle(&mut self) {
|
|
self.state.toggle_selected();
|
|
}
|
|
}
|