package Ġapp . gui . purge Ċ Ċ import Ġapp . Project Util Ċ import Ġcom . google . common . collect . ArrayList Multimap Ċ import Ġcom . google . common . collect . Multimap Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġjava . util . stream . Int Stream Ċ import Ġkotlin . streams . as Sequence Ċ Ċ class ĠMulti Repos Branches TableModel Ġ: ĠBr anches TableModel ( ĊĠĠĠĠĠĠĠ ĠarrayOf ( java . lang . Boolean :: class . java , ĠString :: class . java , ĠString :: class . java ), ĊĠĠĠĠĠĠĠ ĠarrayOf (" Select ", Ġ" Repository ", Ġ" Branch ") Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġshow Branches ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrow Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ ĠProject Util . list Repositories ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠGit Repo Info ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġgit Repo Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Repo Info . local Branches Ignore Current . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Row ( array Of ( true , Ġgit Repo Info . name , Ġit . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Branches ( project : ĠProject ): ĠMult imap < Git Repo Info , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgit Repo ByName Ġ= ĠProject Util . list Repositories ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠGit Repo Info ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . name Ġto Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠĠĠĠĠ Ġval Ġbranches To Git Repo Info Ġ= ĠArrayList Multimap . create < Git Repo Info , ĠString >() ĊĠĠĠĠĠĠĠ ĠInt Stream . range ( 0 , Ġrow Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠgetValue At ( it , Ġ 0 ) Ġas ĠBoolean Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Name Ġ= ĠgetValue At ( it , Ġ 1 ) Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbranch Name Ġ= ĠgetValue At ( it , Ġ 2 ) Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbranches To Git Repo Info . put ( git Repo ByName [ repo Name ], Ġbranch Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbranches To Git Repo Info ĊĠĠĠ Ġ} Ċ }