feat: Adding toggle (#8)

* feat: Adding toggle

* Update src/lib.rs

Return unneded

Co-authored-by: EdJoPaTo <github@edjopato.de>

Co-authored-by: EdJoPaTo <github@edjopato.de>
This commit is contained in:
Nicholas Roller
2022-02-06 15:13:29 -05:00
committed by GitHub
parent c50c0329d9
commit 7ff37c6227
3 changed files with 17 additions and 0 deletions
+3
View File
@@ -82,6 +82,9 @@ fn main() -> Result<(), Box<dyn Error>> {
Key::Right => { Key::Right => {
app.tree.open(); app.tree.open();
} }
Key::Char('\n') => {
app.tree.toggle();
}
Key::Down => { Key::Down => {
app.tree.next(); app.tree.next();
} }
+4
View File
@@ -60,4 +60,8 @@ impl<'a> StatefulTree<'a> {
pub fn open(&mut self) { pub fn open(&mut self) {
self.state.open(self.state.selected()); self.state.open(self.state.selected());
} }
pub fn toggle(&mut self) {
self.state.toggle();
}
} }
+10
View File
@@ -58,6 +58,16 @@ impl TreeState {
self.opened.remove(identifier) self.opened.remove(identifier)
} }
/// Toggles a tree node.
/// If the node is in opened then it calls `close()`. Otherwise it calls `open()`.
pub fn toggle(&mut self) {
if self.opened.contains(&self.selected()) {
self.close(&self.selected());
} else {
self.open(self.selected());
}
}
pub fn close_all(&mut self) { pub fn close_all(&mut self) {
self.opened.clear(); self.opened.clear();
} }