/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . intellij . plugins . h cl . find Usage s Ċ Ċ import Ġcom . intellij . lang . cache Builder . Words Scanner Ċ import Ġcom . intellij . lang . find Usage s . Find Usage s Provider Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Named Element Ċ import Ġorg . intellij . plugins . h cl . H CL Lexer Ċ import Ġorg . intellij . plugins . h cl . psi .* Ċ Ċ open Ġclass ĠH CL Find Usage s Provider Ġ: ĠFind Usage s Provider Ġ{ ĊĠ Ġoverride Ġfun Ġget Words Scanner (): ĠWord s Scanner ? Ġ{ ĊĠĠĠ Ġreturn ĠH CL Words Scanner ( H CL Lexer ()) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcan Find Usage s For ( psi Element : ĠPsi Element ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( psi Element Ġ! is ĠPsi Named Element Ġ|| Ġpsi Element Ġ! is ĠH CLE lement ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( psi Element Ġis ĠH CL StringLiteral Ġ|| Ġpsi Element Ġis ĠH CL Identifier ) Ġ{ ĊĠĠĠĠĠ Ġ@ Suppress (" USE LESS _ CAST ") ĊĠĠĠĠĠ Ġval Ġparent Ġ= Ġ( psi Element Ġas ĠPsi Element ). parent ĊĠĠĠĠĠ Ġif Ġ( parent Ġis ĠH CL Block ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpsi Element Ġ=== Ġparent . name Identifier ĊĠĠĠĠĠ Ġ} Ġelse Ġif ( parent Ġis ĠH CL Property ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpsi Element Ġ=== Ġparent . name Identifier ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Help Id ( psi Element : ĠPsi Element ): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetType ( element : ĠPsi Element ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( element Ġis ĠH CL Block ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ" Block (' ${ element . name Elements . first () !!. text }') " ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( element Ġis ĠH CL Property ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ" Property " ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( element Ġis ĠH CL Identifier Ġ|| Ġelement Ġis ĠH CL StringLiteral ) Ġ{ ĊĠĠĠĠĠ Ġval Ġparent Ġ= Ġelement . parent ĊĠĠĠĠĠ Ġif Ġ( parent Ġis ĠH CL Block ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . name Elements . first () !!. text ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( H CL Psi Util . is Property Key ( element )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Property " ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( element Ġis ĠPsi Named Element ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠĠĠĠĠ Ġreturn Ġelement . name Ġ?: ĊĠĠĠĠĠ Ġreturn Ġ"< Unt yped ĠPsi Named Element ${ element . java Class . name }> " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ"< Unt yped Ġnon - Psi Named Element Ġ${ element . node . elementType }> " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Descript ive Name ( element : ĠPsi Element ): ĠString Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġif Ġ( element Ġis ĠPsi Named Element ) Ġelement . name Ġelse Ġnull ĊĠĠĠ Ġreturn Ġname Ġ?: Ġ"< Not ĠAn ĠPsi Named Element Ġ${ element . node . elementType }> " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetNode Text ( element : ĠPsi Element , Ġuse FullName : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( use FullName ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( element Ġis ĠH CL Block ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . fullName ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġget Descript ive Name ( element ) ĊĠ Ġ} Ċ } Ċ