/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠSer ge ĠMer z li ak ov Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . ep ist atic . no . test fx Ċ Ċ import Ġjavafx . application . Platform Ċ import Ġjava . util . concurrent . Semaphore Ċ Ċ /** Ċ Ġ* ĠExec utes Ġa Ġblock Ġof ĠJava FX Ġin Ġthe ĠJava FX Ġapplication Ġthread Ċ Ġ* Ġand Ġpropag ates Ġthe Ġexception Ġback Ġto Ġcalling Ġthread . Ċ Ġ* ĠBlocks Ġuntil Ġcode Ġhas Ġcompleted Ċ Ġ*/ Ċ class ĠFX Block ( private Ġval Ġrunnable : Runnable ) Ġ{ ĊĊ ĉ private Ġvar Ġsuccess Ġ= Ġfalse Ċ ĉ private Ġvar Ġerror : Throwable ? Ġ= Ġnull ĊĊ ĉ fun Ġrun () Ġ{ Ċĉ ĉ success Ġ= Ġfalse Ċĉ ĉ val Ġsemaphore Ġ= ĠSem aphore ( 0 ) ĊĊĉ ĉ // run Ġthe ĠJava FX Ġcode Ġin Ġthe ĠFX Ġapplication Ġthread Ċĉ ĉ Platform . run Later Ġ{ Ċĉĉ ĉ try Ġ{ Ċĉĉĉ ĉ run nable . run () Ċĉĉĉ ĉ success Ġ= Ġtrue Ċĉĉ ĉ } Ċĉĉ ĉ catch Ġ( e : ĠThrowable ) Ġ{ Ċĉĉĉ ĉ error Ġ= Ġe Ċĉĉ ĉ } Ċĉĉ ĉ finally Ġ{ Ċĉĉĉ ĉ semaphore . release () Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ semaphore . acquire () Ġ// wait Ġuntil ĠFX Ġcode Ġcompleted Ċĉ ĉ if Ġ(! success ) Ċĉĉ ĉ throw ( error !! ) Ċ ĉ } Ċ }