// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . execution . run Toolbar Ċ Ċ import Ġcom . intellij . application . subscribe Ċ import Ġcom . intellij . execution . Execution Listener Ċ import Ġcom . intellij . execution . Execution Manager Ċ import Ġcom . intellij . execution . process . Process Handler Ċ import Ġcom . intellij . execution . runners . Execution Environment Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . project . Project Ċ Ċ class ĠRun Toolbar Component Service ( val Ġproject : ĠProject ) Ġ{ ĊĠ Ġprivate Ġval Ġextra Slots Ġ= ĠRun Toolbar Slot Manager . getInstance ( project ) ĊĊĠ Ġprivate Ġval Ġexecution s : ĠMutable Map < Long , ĠExecution Environment > Ġ= Ġmutable Map Of () ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġif Ġ( Run Toolbar Process . is Available ()) Ġ{ ĊĠĠĠĠĠ ĠExecution Manager . EXEC UTION _ TOPIC . subscribe ( project , Ġobject Ġ: ĠExecution Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess Started ( executor Id : ĠString , Ġenv : ĠExecution Environment , Ġhandler : ĠProcess Handler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( env . project Ġ== Ġproject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart ( env ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess Terminated ( executor Id : ĠString , Ġenv : ĠExecution Environment , Ġhandler : ĠProcess Handler , Ġexit Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( env . project Ġ== Ġproject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop ( env ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstart ( env : ĠExecution Environment ) Ġ{ ĊĠĠĠ Ġif ( is Re levant ( env )) Ġ{ ĊĠĠĠĠĠ Ġexecution s [ env . execution Id ] Ġ= Ġenv ĊĠĠĠĠĠ Ġextra Slots . process Started ( env ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstop ( env : ĠExecution Environment ) Ġ{ ĊĠĠĠ Ġif ( is Re levant ( env )) Ġ{ ĊĠĠĠĠĠ Ġexecution s . remove ( env . execution Id ) ĊĠĠĠĠĠ Ġextra Slots . process Stopped ( env . execution Id ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġis Re levant ( environment : ĠExecution Environment ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġenvironment . get Run Toolbar Process () Ġ!= Ġnull ĊĠ Ġ} Ċ }