pub struct TreeNavigator {
pub keybindings: TreeKeyBindings,
}Expand description
Tree navigator with configurable keybindings.
Provides navigation methods for tree views with customizable key mappings.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item")];
let mut state = TreeViewState::new();
navigator.select_next(&nodes, &mut state);Fields§
§keybindings: TreeKeyBindingsThe keybindings for navigation.
Implementations§
Sourcepub fn with_keybindings(keybindings: TreeKeyBindings) -> Self
pub fn with_keybindings(keybindings: TreeKeyBindings) -> Self
Creates a tree navigator with custom keybindings.
§Arguments
keybindings- The custom keybindings to use.
§Returns
A new TreeNavigator with the specified keybindings.
§Example
use ratatui_toolkit::tree_view::{TreeKeyBindings, TreeNavigator};
let keybindings = TreeKeyBindings::default();
let navigator = TreeNavigator::with_keybindings(keybindings);Sourcepub fn handle_filter_key(&self, key: KeyCode, state: &mut TreeViewState) -> bool
pub fn handle_filter_key(&self, key: KeyCode, state: &mut TreeViewState) -> bool
Handles a key code in filter mode.
§Arguments
key- The key code to handle.state- The tree view state to update.
§Returns
true if the key was handled, false otherwise.
§Example
use crossterm::event::KeyCode;
use ratatui_toolkit::tree_view::{TreeNavigator, TreeViewState};
let navigator = TreeNavigator::new();
let mut state = TreeViewState::new();
state.enter_filter_mode();
navigator.handle_filter_key(KeyCode::Char('t'), &mut state);
assert_eq!(state.filter, Some("t".to_string()));Sourcepub fn handle_key<T>(
&self,
key: KeyEvent,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
) -> bool
pub fn handle_key<T>( &self, key: KeyEvent, nodes: &[TreeNode<T>], state: &mut TreeViewState, ) -> bool
Sourcepub fn handle_key_event<T>(
&self,
key: KeyEvent,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
) -> bool
pub fn handle_key_event<T>( &self, key: KeyEvent, nodes: &[TreeNode<T>], state: &mut TreeViewState, ) -> bool
Handles a key event and updates tree state.
§Arguments
key- The key event to handle.nodes- The tree nodes.state- The tree view state to update.
§Returns
true if the key was handled, false otherwise.
§Example
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item")];
let mut state = TreeViewState::new();
let key = KeyEvent::new(KeyCode::Char('j'), KeyModifiers::NONE);
let handled = navigator.handle_key_event(key, &nodes, &mut state);Sourcepub fn handle_key_event_filtered<T, F>(
&self,
key: KeyEvent,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
matcher: F,
) -> bool
pub fn handle_key_event_filtered<T, F>( &self, key: KeyEvent, nodes: &[TreeNode<T>], state: &mut TreeViewState, matcher: F, ) -> bool
Handles a key event with filtering support.
§Type Parameters
T- The node data type.F- The filter matcher function type.
§Arguments
key- The key event to handle.nodes- The tree nodes.state- The tree view state to update.matcher- A function that takes node data and filter, returns true if matches.
§Returns
true if the key was handled, false otherwise.
Sourcepub fn handle_key_filtered<T, F>(
&self,
key: KeyEvent,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
matcher: F,
) -> bool
pub fn handle_key_filtered<T, F>( &self, key: KeyEvent, nodes: &[TreeNode<T>], state: &mut TreeViewState, matcher: F, ) -> bool
Handles a key event with filtering support.
§Type Parameters
T- The node data type.F- The filter matcher function type.
§Arguments
key- The key event to handle.nodes- The tree nodes.state- The tree view state to update.matcher- A function that takes node data and filter, returns true if matches.
§Returns
true if the key was handled, false otherwise.
Sourcepub fn get_hotkey_items(&self) -> Vec<(String, &'static str)>
pub fn get_hotkey_items(&self) -> Vec<(String, &'static str)>
Sourcepub fn collapse_selected<T>(
&self,
_nodes: &[TreeNode<T>],
state: &mut TreeViewState,
)
pub fn collapse_selected<T>( &self, _nodes: &[TreeNode<T>], state: &mut TreeViewState, )
Collapses the selected node or moves to parent.
If the node is expanded, it collapses it. If the node is already collapsed, it moves to the parent.
§Arguments
_nodes- The tree nodes (unused but kept for API consistency).state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let child = TreeNode::new("Child");
let nodes = vec![TreeNode::with_children("Parent", vec![child])];
let mut state = TreeViewState::new();
state.select(vec![0]);
state.expand(vec![0]);
navigator.collapse_selected(&nodes, &mut state);
assert!(!state.is_expanded(&[0]));Sourcepub fn expand_selected<T>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
)
pub fn expand_selected<T>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, )
Expands the selected node.
Only expands if the node has children.
§Arguments
nodes- The tree nodes.state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let child = TreeNode::new("Child");
let nodes = vec![TreeNode::with_children("Parent", vec![child])];
let mut state = TreeViewState::new();
state.select(vec![0]);
navigator.expand_selected(&nodes, &mut state);
assert!(state.is_expanded(&[0]));Sourcepub fn goto_bottom<T>(&self, nodes: &[TreeNode<T>], state: &mut TreeViewState)
pub fn goto_bottom<T>(&self, nodes: &[TreeNode<T>], state: &mut TreeViewState)
Goes to the last visible item.
§Arguments
nodes- The tree nodes.state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item1"), TreeNode::new("Item2")];
let mut state = TreeViewState::new();
navigator.goto_bottom(&nodes, &mut state);
assert_eq!(state.selected_path, Some(vec![1]));Sourcepub fn goto_bottom_filtered<T, F>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
matcher: F,
)
pub fn goto_bottom_filtered<T, F>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, matcher: F, )
Sourcepub fn goto_top<T>(&self, nodes: &[TreeNode<T>], state: &mut TreeViewState)
pub fn goto_top<T>(&self, nodes: &[TreeNode<T>], state: &mut TreeViewState)
Goes to the first visible item.
§Arguments
nodes- The tree nodes.state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item1"), TreeNode::new("Item2")];
let mut state = TreeViewState::new();
state.select(vec![1]);
navigator.goto_top(&nodes, &mut state);
assert_eq!(state.selected_path, Some(vec![0]));Sourcepub fn goto_top_filtered<T, F>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
matcher: F,
)
pub fn goto_top_filtered<T, F>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, matcher: F, )
Sourcepub fn select_next<T>(&self, nodes: &[TreeNode<T>], state: &mut TreeViewState)
pub fn select_next<T>(&self, nodes: &[TreeNode<T>], state: &mut TreeViewState)
Selects the next visible item.
§Arguments
nodes- The tree nodes.state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item1"), TreeNode::new("Item2")];
let mut state = TreeViewState::new();
navigator.select_next(&nodes, &mut state);
assert_eq!(state.selected_path, Some(vec![0]));Sourcepub fn select_next_filtered<T, F>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
matcher: F,
)
pub fn select_next_filtered<T, F>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, matcher: F, )
Selects the next visible item with filtering support.
§Type Parameters
T- The node data type.F- The filter matcher function type.
§Arguments
nodes- The tree nodes.state- The tree view state to update.matcher- A function that takes node data and filter, returns true if matches.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
use ratatui_toolkit::tree_view::helpers::matches_filter;
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item1"), TreeNode::new("Item2")];
let mut state = TreeViewState::new();
navigator.select_next_filtered(&nodes, &mut state, |data, filter| {
matches_filter(data, filter)
});Sourcepub fn select_previous<T>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
)
pub fn select_previous<T>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, )
Selects the previous visible item.
§Arguments
nodes- The tree nodes.state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let nodes = vec![TreeNode::new("Item1"), TreeNode::new("Item2")];
let mut state = TreeViewState::new();
state.select(vec![1]);
navigator.select_previous(&nodes, &mut state);
assert_eq!(state.selected_path, Some(vec![0]));Sourcepub fn select_previous_filtered<T, F>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
matcher: F,
)
pub fn select_previous_filtered<T, F>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, matcher: F, )
Sourcepub fn toggle_selected<T>(
&self,
nodes: &[TreeNode<T>],
state: &mut TreeViewState,
)
pub fn toggle_selected<T>( &self, nodes: &[TreeNode<T>], state: &mut TreeViewState, )
Toggles expansion of the selected node.
Expands if collapsed, collapses if expanded. Only works on nodes with children.
§Arguments
nodes- The tree nodes.state- The tree view state to update.
§Example
use ratatui_toolkit::tree_view::{TreeNavigator, TreeNode, TreeViewState};
let navigator = TreeNavigator::new();
let child = TreeNode::new("Child");
let nodes = vec![TreeNode::with_children("Parent", vec![child])];
let mut state = TreeViewState::new();
state.select(vec![0]);
navigator.toggle_selected(&nodes, &mut state);
assert!(state.is_expanded(&[0]));
navigator.toggle_selected(&nodes, &mut state);
assert!(!state.is_expanded(&[0]));Trait Implementations§
Source§fn clone(&self) -> TreeNavigator
fn clone(&self) -> TreeNavigator
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
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().