re_context_menu/actions/
copy_entity_path.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use re_viewer_context::Item;

use crate::{ContextMenuAction, ContextMenuContext};

pub struct CopyEntityPathToClipboard;

impl ContextMenuAction for CopyEntityPathToClipboard {
    fn supports_multi_selection(&self, _ctx: &ContextMenuContext<'_>) -> bool {
        true
    }

    fn supports_item(&self, _ctx: &ContextMenuContext<'_>, item: &Item) -> bool {
        match item {
            Item::AppId(_)
            | Item::TableId(_)
            | Item::DataSource(_)
            | Item::StoreId(_)
            | Item::Container(_)
            | Item::View(_)
            | Item::RedapEntry(_)
            | Item::RedapServer(_) => false,
            Item::DataResult(..) | Item::InstancePath(_) | Item::ComponentPath(_) => true,
        }
    }

    fn label(&self, ctx: &ContextMenuContext<'_>) -> String {
        if ctx.selection.len() == 1 {
            "Copy entity path".to_owned()
        } else {
            "Copy entity paths".to_owned()
        }
    }

    fn process_selection(&self, ctx: &ContextMenuContext<'_>) {
        ctx.selection.copy_to_clipboard(ctx.egui_context());
    }
}