1use ratatui::{
2 buffer::Buffer,
3 layout::{Alignment, Rect},
4 widgets::{Block, Borders, Paragraph, Widget, Wrap},
5};
6
7#[derive(Debug, Clone)]
8pub struct ErrorBox {
9 message: String,
10}
11
12impl ErrorBox {
13 #[must_use]
14 pub fn new(message: String) -> Self {
15 Self { message }
16 }
17
18 #[must_use]
19 pub fn dimensions(&self) -> (u16, u16) {
20 ((self.message.len() / 30) as u16 + 4, 30)
21 }
22
23 pub fn set_message(&mut self, message: String) {
24 self.message = message;
25 }
26}
27
28impl Default for ErrorBox {
29 fn default() -> Self {
30 Self::new(String::new())
31 }
32}
33
34impl Widget for ErrorBox {
35 fn render(self, area: Rect, buf: &mut Buffer) {
36 let paragraph = Paragraph::new(self.message)
37 .block(Block::default().borders(Borders::ALL))
38 .wrap(Wrap { trim: true })
39 .alignment(Alignment::Center);
40 paragraph.render(area, buf);
41 }
42}