deploy_feedback_button.rs

 1// use gpui::{
 2//     elements::*,
 3//     platform::{CursorStyle, MouseButton},
 4//     Entity, View, ViewContext, WeakViewHandle,
 5// };
 6// use workspace::{item::ItemHandle, StatusItemView, Workspace};
 7
 8// use crate::feedback_editor::{FeedbackEditor, GiveFeedback};
 9
10// pub struct DeployFeedbackButton {
11//     active: bool,
12//     workspace: WeakViewHandle<Workspace>,
13// }
14
15// impl Entity for DeployFeedbackButton {
16//     type Event = ();
17// }
18
19// impl DeployFeedbackButton {
20//     pub fn new(workspace: &Workspace) -> Self {
21//         DeployFeedbackButton {
22//             active: false,
23//             workspace: workspace.weak_handle(),
24//         }
25//     }
26// }
27
28// impl View for DeployFeedbackButton {
29//     fn ui_name() -> &'static str {
30//         "DeployFeedbackButton"
31//     }
32
33//     fn render(&mut self, cx: &mut ViewContext<Self>) -> AnyElement<Self> {
34//         let active = self.active;
35//         let theme = theme::current(cx).clone();
36//         Stack::new()
37//             .with_child(
38//                 MouseEventHandler::new::<Self, _>(0, cx, |state, _| {
39//                     let style = &theme
40//                         .workspace
41//                         .status_bar
42//                         .panel_buttons
43//                         .button
44//                         .in_state(active)
45//                         .style_for(state);
46
47//                     Svg::new("icons/feedback.svg")
48//                         .with_color(style.icon_color)
49//                         .constrained()
50//                         .with_width(style.icon_size)
51//                         .aligned()
52//                         .constrained()
53//                         .with_width(style.icon_size)
54//                         .with_height(style.icon_size)
55//                         .contained()
56//                         .with_style(style.container)
57//                 })
58//                 .with_cursor_style(CursorStyle::PointingHand)
59//                 .on_click(MouseButton::Left, move |_, this, cx| {
60//                     if !active {
61//                         if let Some(workspace) = this.workspace.upgrade(cx) {
62//                             workspace
63//                                 .update(cx, |workspace, cx| FeedbackEditor::deploy(workspace, cx))
64//                         }
65//                     }
66//                 })
67//                 .with_tooltip::<Self>(
68//                     0,
69//                     "Send Feedback",
70//                     Some(Box::new(GiveFeedback)),
71//                     theme.tooltip.clone(),
72//                     cx,
73//                 ),
74//             )
75//             .into_any()
76//     }
77// }
78
79// impl StatusItemView for DeployFeedbackButton {
80//     fn set_active_pane_item(&mut self, item: Option<&dyn ItemHandle>, cx: &mut ViewContext<Self>) {
81//         if let Some(item) = item {
82//             if let Some(_) = item.downcast::<FeedbackEditor>() {
83//                 self.active = true;
84//                 cx.notify();
85//                 return;
86//             }
87//         }
88//         self.active = false;
89//         cx.notify();
90//     }
91// }