package Ġnl . h ann ah sten . tex ify idea . gutter Ċ Ċ import Ġcom . intellij . code Insight . daemon . Related Item Line Marker Info Ċ import Ġcom . intellij . code Insight . daemon . Related Item Line Marker Provider Ċ import Ġcom . intellij . code Insight . navigation . Navigation G utter Icon Builder Ċ import Ġcom . intellij . openapi . roots . Project Root Manager Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġnl . h ann ah sten . tex ify idea . Tex ify Icons Ċ import Ġnl . h ann ah sten . tex ify idea . lang . Lat ex Regular Command Ċ import Ġnl . h ann ah sten . tex ify idea . lang . Required File Argument Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Commands Ċ import Ġnl . h ann ah sten . tex ify idea . util . files . find File Ċ import Ġnl . h ann ah sten . tex ify idea . util . files . find Root File Ċ import Ġnl . h ann ah sten . tex ify idea . util . required Parameters Ċ import Ġjava . util .* Ċ import Ġjavax . swing . Icon Ċ Ċ /** Ċ Ġ* Ġ@ author ĠH ann ah ĠS che lle ken s Ċ Ġ*/ Ċ class ĠLat ex Navigation G utter Ġ: ĠRelated Item Line Marker Provider () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠIG NORE _ FILE _ ARGUMENT S Ġ= ĠHashSet ( listOf ("\\ Require Package ", Ġ"\\ usepackage ", Ġ"\\ document class ", Ġ"\\ Load Class ", Ġ"\\ Load Class WithOptions ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcollect Navigation Markers ( element : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult : ĠMutable Collection < in ĠRelated Item Line Marker Info <* >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġmake Ġmarkers Ġwhen Ġdealing Ġwith Ġcommands . ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġ! is ĠLat ex Commands ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfull Command Ġ= Ġelement . command Token . text Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠTrue Ġwhen Ġit Ġdoesnt Ġhave Ġa Ġrequired Ġ_ file _ Ġargument , Ġbut Ġmust Ġbe Ġhandled . ĊĠĠĠĠĠĠĠ Ġval Ġignore File Argument Ġ= ĠIG NORE _ FILE _ ARGUMENT S . contains ( full Command ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFetch Ġthe Ġcorresponding ĠLat ex Regular Command Ġobject . ĊĠĠĠĠĠĠĠ Ġval Ġcommand Name Ġ= Ġfull Command . substring ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġcommand H uh Ġ= ĠLat ex Regular Command [ command Name ] ĊĠĠĠĠĠĠĠ Ġif Ġ( command H uh Ġ== Ġnull Ġ&& Ġ! ignore File Argument ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġcommand H uh !!. get Arguments Of ( Required File Argument :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments . isEmpty () Ġ&& Ġ! ignore File Argument ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġrequired Ġfile Ġarguments . ĊĠĠĠĠĠĠĠ Ġval Ġargument Ġ= Ġif Ġ( ignore File Argument ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequired File Argument ("", Ġ" sty ", Ġ" cls ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequired Params Ġ= Ġelement . required Parameters () ĊĠĠĠĠĠĠĠ Ġif Ġ( required Params . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġfilename . ĠSub string Ġis Ġto Ġremove Ġ{ Ġand Ġ}. ĊĠĠĠĠĠĠĠ Ġvar ĠfileName Ġ= Ġrequired Params [ 0 ]. group . text ĊĠĠĠĠĠĠĠ ĠfileName Ġ= ĠfileName . substring ( 1 , ĠfileName . length Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLook Ġup Ġtarget Ġfile . ĊĠĠĠĠĠĠĠ Ġval Ġcontaining File Ġ= Ġelement . get Containing File () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġroots Ġ= ĠArrayList < Virtual File >() ĊĠĠĠĠĠĠĠ Ġval Ġroot File Ġ= Ġcontaining File . find Root File () ĊĠĠĠĠĠĠĠ Ġif Ġ( root File . containing Directory Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġroots . add ( root File . containing Directory . virtual File ) ĊĠĠĠĠĠĠĠ Ġval Ġroot Manager Ġ= ĠProject Root Manager . getInstance ( element . getProject ()) ĊĠĠĠĠĠĠĠ ĠCollections . addAll ( roots , Ġ* root Manager . content Source Roots ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġfile : ĠVirtual File ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( root Ġin Ġroots ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound File Ġ= Ġroot . find File ( fileName , Ġargument . supported Extensions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġfound File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠBuild Ġg utter Ġicon . ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNavigation G utter Icon Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( Tex ify Icons . get Icon From Extension ( file . extension )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget ( Psi Manager . getInstance ( element . getProject ()). find File ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tooltip Text (" Go Ġto Ġreferenced Ġfile Ġ'" Ġ+ Ġfile . name Ġ+ Ġ"' ") ĊĊĠĠĠĠĠĠĠ Ġresult . add ( builder . create Line Marker Info ( element )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Navigate Ġto Ġreferenced Ġfile " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Icon (): ĠIcon ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTex ify Icons . LAT EX _ FILE ĊĠĠĠ Ġ} Ċ } Ċ