use crate::fyrox::{
core::pool::Handle,
gui::{
formatted_text::WrapMode,
scroll_viewer::ScrollViewerBuilder,
text::TextMessage,
text_box::TextBoxBuilder,
widget::WidgetBuilder,
window::{WindowBuilder, WindowMessage, WindowTitle},
BuildContext, Thickness, UserInterface,
},
};
use fyrox::gui::text_box::TextBox;
use fyrox::gui::window::{Window, WindowAlignment};
pub struct DocWindow {
pub window: Handle<Window>,
text: Handle<TextBox>,
}
impl DocWindow {
pub fn new(ctx: &mut BuildContext) -> Self {
let text;
let window = WindowBuilder::new(
WidgetBuilder::new()
.with_name("DocPanel")
.with_width(400.0)
.with_height(300.0),
)
.open(false)
.with_content(
ScrollViewerBuilder::new(WidgetBuilder::new())
.with_content({
text = TextBoxBuilder::new(
WidgetBuilder::new().with_margin(Thickness::uniform(3.0)),
)
.with_editable(false)
.with_wrap(WrapMode::Word)
.build(ctx);
text
})
.build(ctx),
)
.with_title(WindowTitle::text("Documentation"))
.build(ctx);
Self { window, text }
}
pub fn open(&self, doc: String, ui: &UserInterface) {
ui.send(self.text, TextMessage::Text(doc));
ui.send(
self.window,
WindowMessage::Open {
alignment: WindowAlignment::Center,
modal: false,
focus_content: true,
},
);
}
}