use std::collections::HashMap;
use crate::ui_data::UiDataRef;
use crate::{element::Element, ui_data::UiData};
pub (crate) type Properties = HashMap<String, String>;
pub static MOUSE_MOVE: &str = "mousemove";
pub static MOUSE_UP: &str = "mouseup";
pub static MOUSE_DOWN: &str = "mousedown";
pub static MOUSE_CLICK: &str = "click";
pub static MOUSE_DBLCLICK: &str = "dblclick";
pub static KEY_UP: &str = "keyup";
pub static KEY_PRESS: &str = "keypress";
pub static KEY_DOWN: &str = "keydown";
pub static SCROLL: &str = "scroll";
pub static CLICK: &str = "click";
pub static CHANGE: &str = "change";
pub static SELECT: &str = "select";
pub static FOCUS: &str = "focus";
pub static BLUR: &str = "blur";
pub static FOCUS_IN: &str = "focusin";
pub static FOCUS_OUT: &str = "focusout";
#[derive(Clone)]
pub struct Event {
ui: UiDataRef,
source: String,
properties: Properties,
}
impl Event {
pub (crate) fn new(ui: UiDataRef, source: String, properties: Properties) -> Event {
Event{ui, source, properties}
}
pub fn element(&self) -> Element {
UiData::element(&self.ui, &self.source)
}
pub fn property_str(&self, key: &str) -> Option<&str> {
if ! self.properties.contains_key(key) {
return None;
}
Some(&self.properties[key])
}
}