package Ġio . nac ular . do od le . drawing . impl Ċ Ċ import Ġio . nac ular . do od le . focus . Native Focus Manager Ċ import Ġorg . w 3 c . dom . HTMLElement Ċ import Ġorg . w 3 c . dom . events . Event ĊĊ Ċ internal Ġclass ĠNative EventHandler Impl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfocus Manager : ĠNative Focus Manager ?, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġelement ĠĠĠĠ Ġ: ĠHTMLElement , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener ĠĠĠ Ġ: ĠNative EventListener Ċ ): ĠNative EventHandler Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġstart Consum ing Pointer Move Events ( only Self : ĠBoolean ) Ġ{ Ġelement . on pointer move Ġ= Ġ{ Ġmute Event ( it , Ġonly Self ) Ġ} Ġ} ĊĠĠĠ Ġoverride Ġfun Ġstop Consum ing Pointer Move Events Ġ( ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġelement . on pointer move Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Consum ing Pointer Press Events () Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on pointer up ĠĠ Ġ= Ġ{ Ġmute Event ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġelement . on pointer down Ġ= Ġ{ Ġmute Event ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġelement . on dbl click ĠĠĠ Ġ= Ġ{ Ġmute Event ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġstop Consum ing Pointer Press Events () Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on pointer up ĠĠ Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġelement . on pointer down Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġelement . on dbl click ĠĠĠ Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Consum ing Selection Events () Ġ{ Ġelement . onse lect Ġ= Ġ{ Ġmute Event ( it ) Ġ} Ġ} ĊĠĠĠ Ġoverride Ġfun Ġstop Consum ing Selection Events Ġ() Ġ{ Ġelement . onse lect Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Focus Listener Ġ Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on blur Ġ Ġ= Ġ{ Ġon Blur Ġ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġelement . on focus Ġ= Ġ{ Ġon Focus ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Focus Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on blur Ġ Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġelement . on focus Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfocus In ( event : ĠEvent ) Ġ{ Ġon Focus In ( event ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfocus Out ( event : ĠEvent ) Ġ{ Ġon Focus Out ( event ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Focus In Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . addEventListener (" focus in ", Ġ Ġ:: focus In Ġ) ĊĠĠĠĠĠĠĠ Ġelement . addEventListener (" focus out ", Ġ:: focus Out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Focus In Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . removeEventListener (" focus in ", Ġ Ġ:: focus In Ġ) ĊĠĠĠĠĠĠĠ Ġelement . removeEventListener (" focus out ", Ġ:: focus Out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Key Listener Ġ Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on keyup ĠĠĠ Ġ= Ġ{ Ġon KeyUp ĠĠ Ġ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġelement . on keydown Ġ Ġ= Ġ{ Ġon KeyDown Ġ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġelement . on keypress Ġ= Ġ{ Ġon KeyPress ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Key Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on keyup ĠĠĠ Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġelement . on keydown Ġ Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġelement . on keypress Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ClickListener ĠĠ Ġ() Ġ{ Ġelement . onclick Ġ Ġ= Ġ{ ĠonClick ( it ) Ġ} Ġ} ĊĠĠĠ Ġoverride Ġfun Ġunregister ClickListener Ġ() Ġ{ Ġelement . onclick Ġ Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Scroll Listener Ġ Ġ() Ġ{ Ġelement . on scroll Ġ= Ġ{ Ġon Scroll ( it ) Ġ} Ġ} ĊĠĠĠ Ġoverride Ġfun Ġunregister Scroll Listener () Ġ{ Ġelement . on scroll Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ChangeListener Ġ Ġ() Ġ{ Ġelement . on change Ġ= Ġ{ ĠonChange ( it ) Ġ} Ġ} ĊĠĠĠ Ġoverride Ġfun Ġunregister ChangeListener () Ġ{ Ġelement . on change Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Input Listener ĠĠ Ġ() Ġ{ Ġelement . on input Ġ Ġ= Ġ{ Ġon Input ( it ) Ġ} Ġ} ĊĠĠĠ Ġoverride Ġfun Ġunregister Input Listener Ġ() Ġ{ Ġelement . on input Ġ Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmute Event ( event : ĠEvent , Ġonly Self : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( only Self Ġ&& Ġevent . target Ġ!= Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevent . stopPropagation () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Blur ĠĠĠ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġfocus Manager ?. has Focus Owner Ġ= Ġfalse ; Ġlistener . on Focus Lost Ġ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon Focus ĠĠ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġfocus Manager ?. has Focus Owner Ġ= Ġtrue ; Ġ Ġlistener . on Focus G ained ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon KeyUp ĠĠ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . on KeyUp ĠĠĠĠĠ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon KeyDown Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . on KeyDown ĠĠĠ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon KeyPress ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . on KeyPress ĠĠ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun ĠonClick ĠĠ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . onClick ĠĠĠĠĠ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon Scroll Ġ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . on Scroll ĠĠĠĠ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun ĠonChange Ġ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . onChange ĠĠĠĠ Ġ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon Input ĠĠ Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġlistener . on Input ĠĠĠĠĠ Ġ( event ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Focus In Ġ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġfocus Manager ?. has Focus Owner Ġ= Ġtrue ; Ġ Ġlistener . on Focus G ained ( event ) Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon Focus Out ( event : ĠEvent ) Ġ= Ġtrue . also Ġ{ Ġfocus Manager ?. has Focus Owner Ġ= Ġfalse ; Ġlistener . on Focus Lost Ġ Ġ( event ) Ġ} Ċ } Ċ