/* Ċ Ġ* Ġ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 . jetbrains . debugger . frame Ċ Ċ import Ġcom . intellij . icons . All Icons Ċ import Ġcom . intellij . ui . Colo red Text Container Ċ import Ġcom . intellij . ui . Simple Text Attributes Ċ import Ġcom . intellij . x debugger . evaluation . X Debugger Evaluator Ċ import Ġcom . intellij . x debugger . frame . X Composite Node Ċ import Ġcom . intellij . x debugger . frame . X Stack Frame Ċ import Ġorg . jetbrains . concurrency . Promise Ċ import Ġorg . jetbrains . debugger .* Ċ Ċ // ĠisIn Library Content Ġcall Ġcould Ġbe Ġcost ly , Ġso Ġwe Ġcompute Ġit Ġonly Ġonce Ġ( our Ġcustomize Presentation Ġcalled Ġon Ġeach Ġrep aint ) Ċ class ĠCall Frame View Ġ@ Jvm Over loads Ġconstructor ( val Ġcall Frame : ĠCall Frame , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġview Support : ĠDebugger View Support , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscript : ĠScript ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Info : ĠSource Info ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Library Content : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġvm : ĠVm ? Ġ= Ġnull ) Ġ: ĠX Stack Frame (), ĠVariable Context Ġ{ ĊĠ Ġprivate Ġval Ġsource Info Ġ= Ġsource Info Ġ?: Ġview Support . getSource Info ( script , Ġcall Frame ) ĊĠ Ġprivate Ġval ĠisIn Library Content : ĠBoolean Ġ= ĠisIn Library Content Ġ?: Ġ( this . source Info Ġ!= Ġnull Ġ&& Ġview Support . isIn Library Content ( this . source Info , Ġscript )) ĊĊĠ Ġprivate Ġvar Ġevaluator : ĠX Debugger Evaluator ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġget Equality Object (): ĠAny Ġ= Ġcall Frame . equality Object ĊĊĠ Ġoverride Ġfun Ġcompute Children ( node : ĠX Composite Node ) Ġ{ ĊĠĠĠ Ġnode . set Already Sorted ( true ) ĊĠĠĠ Ġcreate And Add Scope List ( node , Ġcall Frame . variable Scopes , Ġthis , Ġcall Frame ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġevaluate Context : ĠEvaluate Context ĊĠĠĠ Ġget () Ġ= Ġcall Frame . evaluate Context ĊĊĠ Ġoverride Ġfun Ġwatch able As Evaluation Expression (): ĠBoolean Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġmember Filter : ĠPromise < Member Filter > ĊĠĠĠ Ġget () Ġ= Ġview Support . get Member Filter ( this ) ĊĊĠ Ġfun Ġget Member Filter ( scope : ĠScope ): ĠPromise < Member Filter > Ġ= Ġcreate Variable Context ( scope , Ġthis , Ġcall Frame ). member Filter ĊĊĠ Ġoverride Ġfun Ġget Evaluator (): ĠX Debugger Evaluator ? Ġ{ ĊĠĠĠ Ġif Ġ( evaluator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġevaluator Ġ= Ġview Support . create Frame Evaluator ( this ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġevaluator ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Source Position (): ĠSource Info ? Ġ= Ġsource Info ĊĊĠ Ġoverride Ġfun Ġcustomize Presentation ( component : ĠCo lo red Text Container ) Ġ{ ĊĠĠĠ Ġif Ġ( source Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġscript Name Ġ= Ġif Ġ( script Ġ== Ġnull ) Ġ" unknown " Ġelse Ġscript . url . trim Parameters (). to Decoded Form () ĊĠĠĠĠĠ Ġval Ġline Ġ= Ġcall Frame . line ĊĠĠĠĠĠ Ġcomponent . append ( if Ġ( line Ġ== Ġ- 1 ) Ġscript Name Ġelse Ġ"$ script Name :$ line ", ĠSimple Text Attributes . ERROR _ ATTRIBUTES ) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠfileName Ġ= Ġsource Info . file . name ĊĠĠĠ Ġval Ġline Ġ= Ġsource Info . line Ġ+ Ġ 1 ĊĊĠĠĠ Ġval Ġtext Attributes Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Library Content Ġ|| Ġcall Frame . is From Async Stack ) ĠSimple Text Attributes . GRAY ED _ ATTRIBUTES ĊĠĠĠĠĠĠĠ Ġelse ĠSimple Text Attributes . REG ULAR _ ATTRIBUTES ĊĊĠĠĠ Ġval Ġfunction Name Ġ= Ġsource Info . function Name ĊĠĠĠ Ġif Ġ( function Name Ġ== Ġnull Ġ|| Ġ( function Name . isEmpty () Ġ&& Ġcall Frame . has Only Global Scope )) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( fileName . startsWith (" index .")) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Info . file . parent ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcomponent . append ("${ it . name }/ ", Ġtext Attributes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcomponent . append ("$ fileName :$ line ", Ġtext Attributes ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġif Ġ( function Name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponent . append (" anonymous ", Ġif Ġ( isIn Library Content ) ĠSimple Text Attributes . GRAY ED _ ITAL IC _ ATTRIBUTES Ġelse ĠSimple Text Attributes . REG ULAR _ ITAL IC _ ATTRIBUTES ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponent . append ( function Name , Ġtext Attributes ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcomponent . append (" (), Ġ$ fileName :$ line ", Ġtext Attributes ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcomponent . setIcon ( All Icons . Debugger . Stack Frame ) ĊĠ Ġ} Ċ }