/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . coroutines . swing Ċ Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . internal .* Ċ import Ġjava . awt . event .* Ċ import Ġjava . util . concurrent .* Ċ import Ġjavax . swing .* Ċ import Ġkotlin . coroutines .* Ċ Ċ /** Ċ Ġ* ĠDis patches Ġexecution Ġonto ĠSw ing Ġevent Ġdispatch ing Ġthread Ġand Ġprovides Ġnative Ġ[ delay ] Ġsupport . Ċ Ġ*/ Ċ @ Suppress (" unused ") Ċ public Ġval ĠDispatch ers . Swing Ġ: ĠSw ing Dispatcher ĊĠĠĠ Ġget () Ġ= Ġkotlinx . coroutines . swing . Swing Ċ Ċ /** Ċ Ġ* ĠDispatcher Ġfor ĠSw ing Ġevent Ġdispatch ing Ġthread . Ċ Ġ* Ċ Ġ* ĠThis Ġclass Ġprovides Ġtype - safety Ġand Ġa Ġpoint Ġfor Ġfuture Ġextensions . Ċ Ġ*/ Ċ public Ġsealed Ġclass ĠSw ing Dispatcher Ġ: ĠMain Coroutine Dispatcher (), ĠDelay Ġ{ ĊĠĠĠ Ġ/** Ġ@ suppress Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdispatch ( context : ĠCor outine Context , Ġblock : ĠRunnable ): ĠUnit Ġ= ĠSw ing Utilities . invoke Later ( block ) ĊĊĠĠĠ Ġ/** Ġ@ suppress Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġschedule Resume After Delay ( time Millis : ĠLong , Ġcontinuation : ĠC ancellable Continuation < Unit >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtimer Ġ= Ġschedule ( time Millis , ĠTimeUnit . MILLISECONDS , ĠActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( continu ation ) Ġ{ Ġresume Un dis patched ( Unit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcontinuation . invoke On Cancellation Ġ{ Ġtimer . stop () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ@ suppress Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinvoke On Timeout ( time Millis : ĠLong , Ġblock : ĠRunnable ): ĠDis posable Handle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtimer Ġ= Ġschedule ( time Millis , ĠTimeUnit . MILLISECONDS , ĠActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . run () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠDis posable Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġschedule ( time : ĠLong , Ġunit : ĠTimeUnit , Ġaction : ĠActionListener ): ĠTimer Ġ= ĊĠĠĠĠĠĠĠ ĠTimer ( unit . to Millis ( time ). coerce At Most ( Int . MAX _ VALUE . to Long ()). toInt (), Ġaction ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Repe ats Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠSw ing Dispatcher Factory Ġ: ĠMain Dispatcher Factory Ġ{ ĊĠĠĠ Ġoverride Ġval Ġload Priority : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Dispatcher ( all Factories : ĠList < Main Dispatcher Factory >): ĠMain Coroutine Dispatcher Ġ= ĠSw ing Ċ } Ċ Ċ private Ġobject ĠIm mediate Swing Dispatcher Ġ: ĠSw ing Dispatcher () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġimmediate : ĠMain Coroutine Dispatcher ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠ Ġoverride Ġfun Ġis Dispatch Needed ( context : ĠCor outine Context ): ĠBoolean Ġ= Ġ! Swing Utilities . is Event Dispatch Thread () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĠtoString Internal Impl () Ġ?: Ġ" Swing . immediate " Ċ } Ċ Ċ /** Ċ Ġ* ĠDis patches Ġexecution Ġonto ĠSw ing Ġevent Ġdispatch ing Ġthread Ġand Ġprovides Ġnative Ġ[ delay ] Ġsupport . Ċ Ġ*/ Ċ internal Ġobject ĠSw ing Ġ: ĠSw ing Dispatcher () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġimmediate : ĠMain Coroutine Dispatcher ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠIm mediate Swing Dispatcher ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĠtoString Internal Impl () Ġ?: Ġ" Swing " Ċ } Ċ