glues_tui/context/notebook/
tree_item.rs

1use glues_core::{
2    data::{Directory, Note},
3    types::Id,
4};
5
6#[derive(Clone)]
7pub struct TreeItem {
8    pub depth: usize,
9    pub target: bool,
10    pub selectable: bool,
11    pub kind: TreeItemKind,
12}
13
14#[derive(Clone)]
15pub enum TreeItemKind {
16    Note { note: Note },
17    Directory { directory: Directory, opened: bool },
18}
19
20impl TreeItem {
21    pub fn is_directory(&self) -> bool {
22        matches!(self.kind, TreeItemKind::Directory { .. })
23    }
24
25    pub fn id(&self) -> &Id {
26        match &self.kind {
27            TreeItemKind::Note { note, .. } => &note.id,
28            TreeItemKind::Directory { directory, .. } => &directory.id,
29        }
30    }
31
32    pub fn name(&self) -> String {
33        match &self.kind {
34            TreeItemKind::Note { note, .. } => &note.name,
35            TreeItemKind::Directory { directory, .. } => &directory.name,
36        }
37        .clone()
38    }
39}