use crate::event::EventListener;
pub trait Widget {
fn add_event_listener(&mut self, listener: (impl EventListener + 'static));
fn set_id(&mut self, id: impl Into<String>);
fn get_id(&self) -> &str;
}
pub trait Button: Widget {
fn set_text(&mut self, text: impl Into<String>);
fn get_text(&self) -> &str;
}
pub struct RButton {
text: String,
id: String,
event_listener: Box<dyn EventListener>,
}
impl Widget for RButton {
fn add_event_listener(&mut self, listener: (impl EventListener + 'static)) {
self.event_listener = Box::new(listener);
}
fn set_id(&mut self, id: impl Into<String>) {
self.id = id.into();
}
fn get_id(&self) -> &str {
self.id.as_str()
}
}
impl Button for RButton {
fn set_text(&mut self, text: impl Into<String>) {
self.text = text.into();
}
fn get_text(&self) -> &str {
self.text.as_str()
}
}