// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 Ġ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 Ġorg . jetbrains . plugins . github . pull request Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġcom . intellij . openapi . wm . Ide Focus Manager Ċ import Ġcom . intellij . ui . Simple Text Attributes Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġorg . jetbrains . plugins . github . api . Github ApiRequest Executor Ċ import Ġorg . jetbrains . plugins . github . api . Github ApiRequest Executor Manager Ċ import Ġorg . jetbrains . plugins . github . authentication . accounts . Account Token Changed Listener Ċ import Ġorg . jetbrains . plugins . github . authentication . accounts . Github Account Ċ import Ġorg . jetbrains . plugins . github . authentication . accounts . Github Account Manager Ċ import Ġorg . jetbrains . plugins . github . ui . util . Dis posing Wrapper Ċ import Ġorg . jetbrains . plugins . github . util . Git Remote Url Coordinates Ċ import Ġorg . jetbrains . plugins . github . util . Github UI Util Ċ Ċ class ĠGH PR Request Executor Component ( private Ġval Ġrequest Executor Manager : ĠGithub ApiRequest Executor Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġproject : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġremote Url : ĠGit Remote Url Coordinates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount : ĠGithub Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Disposable : ĠDis posable ) ĊĠ Ġ: ĠDis posing Wrapper ( parent Disposable ) Ġ{ ĊĊĠ Ġprivate Ġval Ġcomponent Factory Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ Ġproject . service < GH PR Component Factory >() Ġ} ĊĊĠ Ġprivate Ġvar Ġrequest Executor : ĠGithub ApiRequest Executor ? Ġ= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġbackground Ġ= ĠUI Util . getList Background () ĊĊĠĠĠ ĠApplication Manager . getApplication (). message Bus . connect ( parent Disposable ) ĊĠĠĠĠĠ Ġ. subscribe ( Github Account Manager . ACCOUNT _ TOKEN _ CHANGED _ TOPIC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAccount Token Changed Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtoken Changed ( account : ĠGithub Account ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġupdate () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠ Ġif Ġ( request Executor Ġ!= Ġnull ) Ġreturn ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġexecutor Ġ= Ġrequest Executor Manager . get Executor ( account ) ĊĠĠĠĠĠ Ġset Actual Content ( executor ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġset Center ed Content ( Github UI Util . create Note With Action (:: create Request Executor With User Input ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġappend (" Log Ġin ", ĠSimple Text Attributes . LINK _ ATTRIBUTES , ĠRunnable Ġ{ Ġcreate Request Executor With User Input () Ġ}) ĊĠĠĠĠĠĠĠ Ġappend (" Ġto ĠGitHub Ġto Ġview Ġpull Ġrequests ", ĠSimple Text Attributes . GRAY ED _ ATTRIBUTES ) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Request Executor With User Input () Ġ{ ĊĠĠĠ Ġval Ġexecutor Ġ= Ġrequest Executor Manager . get Executor ( account , Ġproject ) ĊĠĠĠ Ġif Ġ( executor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġset Actual Content ( executor ) ĊĠĠĠĠĠ ĠIde Focus Manager . getInstance ( project ). request Focus In Project ( this @ GH PR Request Executor Component , Ġproject ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Actual Content ( executor : ĠGithub ApiRequest Executor . With Token Auth ) Ġ{ ĊĠĠĠ Ġrequest Executor Ġ= Ġexecutor ĊĠĠĠ Ġval Ġdis posable Ġ= ĠDis poser . new Disposable () ĊĠĠĠ Ġset Content ( component Factory . create Component ( remote Url , Ġaccount , Ġexecutor , Ġdis posable ), Ġdis posable ) ĊĠ Ġ} Ċ }