pub struct TreeViewState {
pub selected_path: Option<Vec<usize>>,
pub expanded: HashSet<Vec<usize>>,
pub offset: usize,
pub filter: Option<String>,
pub filter_mode: bool,
}Expand description
Tree view state for StatefulWidget pattern.
Tracks the current selection, expanded nodes, scroll offset, and filter state for the tree view.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.select(vec![0, 1]);
state.expand(vec![0]);Fields§
§selected_path: Option<Vec<usize>>Currently selected node path (indices from root)
expanded: HashSet<Vec<usize>>Set of expanded node paths
offset: usizeVertical scroll offset
filter: Option<String>Current filter text
filter_mode: boolWhether filter mode is active
Implementations§
Source§impl TreeViewState
impl TreeViewState
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new tree view state with default values.
§Returns
A new TreeViewState with no selection, no expanded nodes,
and no active filter.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let state = TreeViewState::new();
assert!(state.selected_path.is_none());
assert!(state.expanded.is_empty());Source§impl TreeViewState
impl TreeViewState
Sourcepub fn collapse_all(&mut self)
pub fn collapse_all(&mut self)
Collapses all nodes in the tree.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.expand(vec![0]);
state.expand(vec![0, 1]);
state.collapse_all();
assert!(state.expanded.is_empty());Source§impl TreeViewState
impl TreeViewState
Source§impl TreeViewState
impl TreeViewState
Sourcepub fn expand_all<T>(&mut self, nodes: &[TreeNode<T>])
pub fn expand_all<T>(&mut self, nodes: &[TreeNode<T>])
Expands all nodes in the tree.
Recursively collects all expandable node paths and adds them to the expanded set.
§Arguments
nodes- The tree nodes to expand.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeViewState};
let child = TreeNode::new("Child");
let parent = TreeNode::with_children("Parent", vec![child]);
let nodes = vec![parent];
let mut state = TreeViewState::new();
state.expand_all(&nodes);
assert!(state.is_expanded(&[0]));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn is_expanded(&self, path: &[usize]) -> bool
pub fn is_expanded(&self, path: &[usize]) -> bool
Checks if a node is expanded.
§Arguments
path- The path to the node to check.
§Returns
true if the node is expanded, false otherwise.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
assert!(!state.is_expanded(&[0]));
state.expand(vec![0]);
assert!(state.is_expanded(&[0]));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn toggle_expansion(&mut self, path: Vec<usize>)
pub fn toggle_expansion(&mut self, path: Vec<usize>)
Toggles expansion of a node at the given path.
If the node is expanded, it will be collapsed. If the node is collapsed, it will be expanded.
§Arguments
path- The path to the node to toggle.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.toggle_expansion(vec![0]);
assert!(state.is_expanded(&[0]));
state.toggle_expansion(vec![0]);
assert!(!state.is_expanded(&[0]));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn append_to_filter(&mut self, c: char)
pub fn append_to_filter(&mut self, c: char)
Appends a character to the filter text.
§Arguments
c- The character to append.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.enter_filter_mode();
state.append_to_filter('t');
state.append_to_filter('e');
assert_eq!(state.filter, Some("te".to_string()));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn backspace_filter(&mut self)
pub fn backspace_filter(&mut self)
Removes the last character from the filter text.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.set_filter("test".to_string());
state.backspace_filter();
assert_eq!(state.filter, Some("tes".to_string()));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn clear_filter(&mut self)
pub fn clear_filter(&mut self)
Clears the current filter.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.set_filter("test".to_string());
state.clear_filter();
assert!(state.filter.is_none());Source§impl TreeViewState
impl TreeViewState
Sourcepub fn enter_filter_mode(&mut self)
pub fn enter_filter_mode(&mut self)
Enters filter mode.
Sets filter_mode to true and initializes the filter
to an empty string if not already set.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.enter_filter_mode();
assert!(state.filter_mode);
assert_eq!(state.filter, Some(String::new()));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn exit_filter_mode(&mut self)
pub fn exit_filter_mode(&mut self)
Exits filter mode.
Sets filter_mode to false but preserves the current filter text.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.enter_filter_mode();
state.set_filter("test".to_string());
state.exit_filter_mode();
assert!(!state.filter_mode);
assert_eq!(state.filter, Some("test".to_string()));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn filter_text(&self) -> Option<&str>
pub fn filter_text(&self) -> Option<&str>
Gets the current filter text.
§Returns
The current filter text, or None if no filter is set.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
assert!(state.filter_text().is_none());
state.set_filter("test".to_string());
assert_eq!(state.filter_text(), Some("test"));Source§impl TreeViewState
impl TreeViewState
Sourcepub fn is_filter_mode(&self) -> bool
pub fn is_filter_mode(&self) -> bool
Source§impl TreeViewState
impl TreeViewState
Sourcepub fn set_filter(&mut self, filter: String)
pub fn set_filter(&mut self, filter: String)
Source§impl TreeViewState
impl TreeViewState
Sourcepub fn clear_selection(&mut self)
pub fn clear_selection(&mut self)
Clears the current selection.
§Example
use ratatui_toolkit::tree_view::TreeViewState;
let mut state = TreeViewState::new();
state.select(vec![0]);
state.clear_selection();
assert!(state.selected_path.is_none());Trait Implementations§
Source§impl Clone for TreeViewState
impl Clone for TreeViewState
Source§fn clone(&self) -> TreeViewState
fn clone(&self) -> TreeViewState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TreeViewState
impl Debug for TreeViewState
Source§impl Default for TreeViewState
impl Default for TreeViewState
Source§fn default() -> TreeViewState
fn default() -> TreeViewState
Auto Trait Implementations§
impl Freeze for TreeViewState
impl RefUnwindSafe for TreeViewState
impl Send for TreeViewState
impl Sync for TreeViewState
impl Unpin for TreeViewState
impl UnwindSafe for TreeViewState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().