use crate::jab::context::AccessibleContext;
use std::sync::Arc;
pub type AccessibleContextType = Arc<AccessibleContext<'static>>;
pub(crate) enum AccessibleCallback {
CaretUpdate(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
FocusGained(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MouseClicked(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MouseEntered(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MouseExited(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MousePressed(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MouseReleased(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MenuCanceled(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MenuDeselected(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
MenuSelected(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PopupMenuCanceled(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PopupMenuWillBecomeInvisible(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PopupMenuWillBecomeVisible(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PropertySelectionChange(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PropertyTextChange(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PropertyVisibleDataChange(Box<dyn Fn(AccessibleContextType) + Sync + Send>),
PropertyChange(Box<dyn Fn(AccessibleContextType, String, String, String) + Sync + Send>),
PropertyNameChange(Box<dyn Fn(AccessibleContextType, String, String) + Sync + Send>),
PropertyDescriptionChange(Box<dyn Fn(AccessibleContextType, String, String) + Sync + Send>),
PropertyStateChange(Box<dyn Fn(AccessibleContextType, String, String) + Sync + Send>),
PropertyValueChange(Box<dyn Fn(AccessibleContextType, String, String) + Sync + Send>),
PropertyCaretChange(Box<dyn Fn(AccessibleContextType, i32, i32) + Sync + Send>),
PropertyChildChange(
Box<
dyn Fn(AccessibleContextType, AccessibleContextType, AccessibleContextType)
+ Sync
+ Send,
>,
),
PropertyActiveDescendentChange(
Box<
dyn Fn(AccessibleContextType, AccessibleContextType, AccessibleContextType)
+ Sync
+ Send,
>,
),
PropertyTableModelChange(Box<dyn Fn(AccessibleContextType, String, String) + Sync + Send>),
JavaShutdown(Box<dyn Fn(i32) + Sync + Send>),
}