/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 ĠAl jos cha ĠG re be Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . alm ight y alp aca . jetbrains . plugins . discord . plugin . settings . gui . preview Ċ Ċ import Ġcom . alm ight y alp aca . jetbrains . plugins . discord . plugin . render . Renderer Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . awt . event . Hierarchy Event Ċ import Ġjavax . swing . Image Icon Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . Timer Ċ Ċ class ĠJ Preview Ġ: ĠJLabel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpreview Ġ= ĠPreview Renderer () ĊĊĠĠĠ Ġprivate Ġval Ġworker Ġ= ĠTimer ( 1 0 0 ) Ġ{ Ġupdate () Ġ} ĊĊĠĠĠ Ġvar Ġtype : ĠRenderer . Type . Application Ġ= ĠRenderer . Type . Application ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠImage Icon ( preview . dummy ) ĊĊĠĠĠĠĠĠĠ Ġupdate ( true ) ĊĊĠĠĠĠĠĠĠ Ġworker . start () ĊĊĠĠĠĠĠĠĠ Ġadd Hierarchy Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . has Change Flag ( Hierarchy Event . SHOW ING _ CHANGED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġupdate ( force : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( modified , Ġimage ) Ġ= Ġrun Blocking Ġ{ Ġpreview . draw ( type , Ġforce ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠImage Icon ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠH ierarchy Event . has Change Flag ( flag : ĠInt ) Ġ= Ġ( change Flags Ġand Ġflag . to Long ()) Ġ!= Ġ 0 L Ċ