package Ġcom . github . jk 1 . y tpl ugin . issues Ċ Ċ import Ġcom . github . jk 1 . y tpl ugin . Component Aware Ċ import Ġcom . intellij . concurrency . Job Scheduler Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . components . Service Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġjava . util . concurrent . Scheduled Future Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . swing . Swing Utilities Ċ Ċ /** Ċ Ġ* ĠMan ages Ġtimed Ġissue Ġstore Ġupdates Ġfor Ġactive Ġprojects Ċ Ġ* Ġtodo : Ġthe Ġservice Ġis Ġinitialized Ġl az ily , Ġso Ġit 's Ġonly Ġbehave Ġas Ġexpected Ġbecause Ġof Ġa Ġ# subscribe Ġcall Ċ Ġ* Ġtodo : Ġconvert Ġinto Ġa Ġpost Ġstartup Ġactivity Ċ Ġ*/ Ċ @ Service Ċ class ĠIssue Store Updater Service ( override Ġval Ġproject : ĠProject ) Ġ: ĠDis posable , ĠComponent Aware Ġ{ ĊĊĠĠĠ Ġ// Ġ Ġtodo : Ġcustom izable Ġupdate Ġinterval ĊĠĠĠ Ġprivate Ġval Ġtimed Refresh Task : ĠScheduled Future < *> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJob Scheduler . get Scheduler (). schedule With Fixed Delay ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! project . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Manager Component . getAll Configured You Track Repositories (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissue Store Component [ it ]. update ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 5 , Ġ 5 , ĠTimeUnit . MIN UTES ) ĊĊĠĠĠ Ġprivate Ġval Ġlisteners : ĠMutable Set < () Ġ-> ĠUnit > Ġ= Ġmutable Set Of () ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġtimed Refresh Task . cancel ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsubscribe ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon After Update () Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . invoke () Ġ} ĊĠĠĠ Ġ} Ċ }