use cushy::dialog::MessageBox;
use cushy::widget::MakeWidget;
use cushy::widgets::layers::Modal;
use cushy::window::PendingWindow;
use cushy::{App, Open};

#[cushy::main]
fn main(app: &mut App) -> cushy::Result {
    let modal = Modal::new();
    let pending = PendingWindow::default();
    let window = pending.handle();

    pending
        .with_root(
            "Show in Modal layer"
                .into_button()
                .on_click({
                    let modal = modal.clone();
                    move |_| {
                        example_message().open(&modal);
                    }
                })
                .and("Show above window".into_button().on_click({
                    move |_| {
                        example_message().open(&window);
                    }
                }))
                .and("Show in app".into_button().on_click({
                    let app = app.clone();
                    move |_| {
                        example_message().open(&app);
                    }
                }))
                .into_rows()
                .centered()
                .expand()
                .and(modal)
                .into_layers(),
        )
        .open(app)?;
    Ok(())
}

fn example_message() -> MessageBox {
    MessageBox::message("This is a dialog").with_explanation("This is some explanation text")
}
