/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠModified Ġwork Ġcopyright Ġ( c ) Ġ 2 0 2 2 Ġnd tp Ċ Ġ* ĠOriginal Ġwork Ġcopyright Ġ( c ) Ġ 2 0 2 0 ĠShop ify ĠInc . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġdev . testify . actions . utility Ċ Ċ 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 . util . Icon Loader Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . search . Filename Index Ċ import Ġdev . testify . baseline Image Name Ċ import Ġorg . jetbrains . kotlin . idea . util . project Structure . module Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ Ċ abstract Ġclass ĠBase File Action ( protected Ġval Ġanchor Element : ĠPsi Element ) Ġ: ĠAn Action () Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġbaseline Image Name Ġ= Ġanchor Element . baseline Image Name ĊĠĠĠ Ġabstract Ġval Ġmenu Text : ĠString ĊĠĠĠ Ġabstract Ġval Ġicon : ĠString ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġupdate ( an ActionEvent : ĠAn ActionEvent ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠisIn Project Ġ= Ġan ActionEvent . is Baseline In Project ĊĊĠĠĠĠĠĠĠ Ġan ActionEvent . presentation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġmenu Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= ĠisIn Project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġ( an ActionEvent . project Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠIcon Loader . get Icon ("/ icons /${ this @ Base File Action . icon }. svg ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfinal Ġoverride Ġfun ĠactionPerformed ( event : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevent . find Baseline Image ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Action On Virtual File ( it , Ġevent . project !! , Ġevent . modifiers ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAn ActionEvent . find Baseline Image (): ĠVirtual File ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= Ġanchor Element . containing File ĊĠĠĠĠĠĠĠ Ġif Ġ( psi File Ġis ĠK t File Ġ&& Ġpsi File . module Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilename Index . get Virtual Files ByName ( project , Ġbaseline Image Name , Ġpsi File . module !!. module Content Scope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( files . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfiles . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠAn ActionEvent . is Baseline In Project : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfind Baseline Image () Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġperform Action On Virtual File ( virtual File : ĠVirtual File , Ġproject : ĠProject , Ġmodifiers : ĠInt ) ĊĊĠĠĠ Ġprotected Ġfun Ġshort DisplayName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfullName Ġ= Ġanchor Element . baseline Image Name . replace ("_ ", Ġ"__ ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fullName . length Ġ> Ġ 4 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Ġ= ĠfullName . split ("__ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ names [ 0 ]. take ( 1 8 )} ... ${ names [ 1 ]. take Last ( 2 2 )}" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfullName ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ