/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 Ġbr . com . z up . be agle . plugin . util Ċ Ċ import Ġbr . com . z up . be agle . plugin . runner . Be agle Run Configuration Ċ import Ġcom . intellij . execution . Runner And Configuration Settings Ċ import Ġcom . intellij . execution . impl . Execution ManagerImpl Ċ import Ġcom . intellij . execution . ui . Run Content Descriptor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . openapi . vfs . Virtual File Event Ċ import Ġcom . intellij . openapi . vfs . Virtual File Listener Ċ import Ġcom . intellij . openapi . vfs . Virtual FileManager Ċ import Ġcom . intellij . openapi . vfs . new vfs . Bulk File Listener Ċ import Ġcom . intellij . openapi . vfs . new vfs . events . V File Event Ċ Ċ class ĠV fs Changes Listener ( private Ġval Ġproject : ĠProject ) Ġ Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġexecution Manager Ġ= ĠExecution ManagerImpl . getInstance ( this . project ) ĊĊĠĠĠ Ġfun Ġobserver Content Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . project . message Bus . connect (). subscribe ( Virtual FileManager . V FS _ CHANG ES , Ġobject Ġ: ĠBulk File Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter ( events : ĠMutable List < out ĠV File Event >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents . filter Ġ{ Ġit . is From Save Ġ&& ĠJson Converter Util . AVAILABLE _ EXTENSION S . contains ( it . file ?. extension ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrun Configuration Map Ġ= ĠHashMap < Virtual File , ĠBe agle Run Configuration >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptors Ġ= Ġexecution Manager . get Descriptors Ġ{ Ġfilter Running Configurations AndSet Run Configuration To Run Configurations Map ( it , Ġrun Configuration Map ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( run Configuration Map . containsKey ( event . file ) Ġ&& Ġcheck If Descriptor Is Running ( descriptors )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Run Configuration Ġ= Ġ( run Configuration Map [ event . file ] Ġas ĠBe agle Run Configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Run Configuration . java CommandLine State !!. compile And Execute Json Converter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . after ( events ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck If Descriptor Is Running ( descriptors : ĠList < Run Content Descriptor >) Ġ= Ġdescriptors . isNotEmpty () Ġ&& Ġ! descriptors [ 0 ]. process Handler !!. is Process Terminated ĊĊĠĠĠ Ġprivate Ġfun Ġfilter Running Configurations AndSet Run Configuration To Run Configurations Map ( run Configuration Settings : ĠRunner And Configuration Settings , Ġrun Configuration Map : ĠHashMap < Virtual File , ĠBe agle Run Configuration >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( run Configuration Settings . configuration Ġis ĠBe agle Run Configuration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( run Configuration Settings . configuration Ġas ĠBe agle Run Configuration ). enable Hot Reload On File Saved ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Run Configuration Ġ= Ġ( run Configuration Settings . configuration Ġas ĠBe agle Run Configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Configuration Map [ custom Run Configuration . clazz To Run Plugin !! ] Ġ= Ġcustom Run Configuration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }