1use gpui::{AnyView, WindowContext};
2
3pub trait Selectable {
4 fn selected(self, selected: bool) -> Self;
5 fn selected_tooltip(
6 self,
7 tooltip: Box<dyn Fn(&mut WindowContext) -> AnyView + 'static>,
8 ) -> Self;
9}
10
11#[derive(Debug, Default, PartialEq, Eq, Hash, Clone, Copy)]
12pub enum Selection {
13 #[default]
14 Unselected,
15 Indeterminate,
16 Selected,
17}
18
19impl Selection {
20 pub fn inverse(&self) -> Self {
21 match self {
22 Self::Unselected | Self::Indeterminate => Self::Selected,
23 Self::Selected => Self::Unselected,
24 }
25 }
26}