package Ġorg . jetbrains . b unches . idea . actions Ċ Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . popup . Popup Step Ċ import Ġcom . intellij . openapi . ui . popup . util . Base List Popup Step Ċ import Ġcom . intellij . openapi . util . Ref Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . openapi . wm . WindowManager Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġcom . intellij . ui . popup . list . List Popup Impl Ċ import Ġcom . intellij . x debugger . impl . ui . Debugger UI Util Ċ import Ġorg . jetbrains . b unches . idea . util . B unch FileUtils Ċ import Ġorg . jetbrains . b unches . idea . util . get Virtual File ĊĊ Ċ class ĠB unch Navigate Action Ġ: ĠAn Action (" Navigate Ġto Ġrelated ") Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSHOW _ AD : ĠRef < Boolean > Ġ= ĠRef ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġe . project Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcurrent File Ġ= Ġe . get Virtual File () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmain File Ġ= Ġif Ġ( B unch FileUtils . is B unch File ( current File , Ġproject )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB unch FileUtils . get Main File ( current File , Ġproject ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent File ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= ĠB unch FileUtils . getAll B unch Files ( main File , Ġproject , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġfiles Popup List Ġ= ĠList Popup Impl ( project , ĠMy Items List ( project , Ġcurrent File , Ġmain File , Ġfiles )) ĊĠĠĠĠĠĠĠ ĠDebugger UI Util . register Extra Handle Shortcut s ( files Popup List , ĠSHOW _ AD ," B unch Navigate Action ") ĊĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= ĠWindow Manager . getInstance (). suggest Parent Window ( project ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġfiles Popup List . show In Center Of ( window ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMy Items List ( ĊĠĠĠĠĠĠĠ Ġval Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġfile : ĠVirtual File , ĊĠĠĠĠĠĠĠ Ġmain File : ĠVirtual File , ĊĠĠĠĠĠĠĠ Ġbunch Files : ĠList < Virtual File > ĊĠĠĠ Ġ) Ġ: ĠBase List Popup Step < Virtual File >(" Navigate Ġto Ġ", ĠgetList ( file , Ġmain File , Ġbunch Files ), Ġmain File . fileType . icon ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : ĠVirtual File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain File : ĠVirtual File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbunch Files : ĠList < Virtual File > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠMutable List < Virtual File > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Virtual File >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Ġ!= Ġmain File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( main File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( b unch Files . minus ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ch osen ( selected Value : ĠVirtual File , Ġfinal Choice : ĠBoolean ): ĠPopup Step < *> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( final Choice ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Main File Ġ= ĠPsi Manager . getInstance ( project ). find File ( selected Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠPopup Step . FINAL _ CHO ICE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Main File . navigate ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPopup Step . FINAL _ CHO ICE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetText For ( value : ĠVirtual File ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue . name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }