#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TreeViewAction {
SelectPrev,
SelectNext,
SelectParent,
SelectFirstChild,
Expand,
Collapse,
ExpandOrSelectFirstChild,
CollapseOrSelectParent,
ToggleNode,
ToggleRecursive,
ExpandAll,
CollapseAll,
ToggleGuides,
ToggleMark,
SelectFirst,
SelectLast,
SelectColumnLeft,
SelectColumnRight,
SelectFirstColumn,
SelectLastColumn,
ScrollViewUp,
ScrollViewDown,
ScrollLeft,
ScrollRight,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TreeEditAction {
ReorderUp,
ReorderDown,
AddChild,
Rename,
Detach,
Delete,
Yank,
Paste,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TreeAction<Custom = ()> {
View(TreeViewAction),
Edit(TreeEditAction),
Custom(Custom),
}
impl<C> From<TreeViewAction> for TreeAction<C> {
fn from(action: TreeViewAction) -> Self {
Self::View(action)
}
}
impl<C> From<TreeEditAction> for TreeAction<C> {
fn from(action: TreeEditAction) -> Self {
Self::Edit(action)
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TreeEditRequest<Id> {
ReorderUp { node: Id, parent: Id },
ReorderDown { node: Id, parent: Id },
AddChild { parent: Id },
Rename { node: Id },
Detach { node: Id, parent: Id },
Delete { node: Id },
Yank { node: Id },
Paste { parent: Id },
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TreeIntent<Id, Custom = ()> {
LoadChildren(Id),
Edit(TreeEditRequest<Id>),
Custom(Custom),
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TreeEvent<Id, Custom = ()> {
Changed,
Unchanged,
Intent(TreeIntent<Id, Custom>),
}