/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 - 2 0 2 1 ĠRe ece ĠH . ĠD un n Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 Ġ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 Ġuk . co . re ec ed un n . intellij . plugin . core . execution . ui Ċ Ċ import Ġcom . intellij . execution . filters . File Hyper link Info Ċ import Ġcom . intellij . execution . filters . Hyper link Info Ċ import Ġcom . intellij . execution . impl . Console View Util Ċ import Ġcom . intellij . execution . impl . Editor Hyper link Support Ċ import Ġcom . intellij . execution . ui . Console View ContentType Ċ import Ġcom . intellij . openapi . action System .* Ċ import Ġcom . intellij . openapi . action System . ex . Action Manager Ex Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . editor . Editor Factory Ċ import Ġcom . intellij . openapi . editor . Scroll Type Ċ import Ġcom . intellij . openapi . editor . actions . Scroll To The End Toolbar Action Ċ import Ġcom . intellij . openapi . editor . actions . Toggle Use Soft Wrap s Toolbar Action Ċ import Ġcom . intellij . openapi . editor . colors . Editor Colors Listener Ċ import Ġcom . intellij . openapi . editor . colors . Editor Colors Manager Ċ import Ġcom . intellij . openapi . editor . ex . Editor Ex Ċ import Ġcom . intellij . openapi . editor . ex . Markup Model Ex Ċ import Ġcom . intellij . openapi . editor . ex . Range Highlight er Ex Ċ import Ġcom . intellij . openapi . editor . impl . Document Impl Ċ import Ġcom . intellij . openapi . editor . impl . Document Markup Model Ċ import Ġcom . intellij . openapi . editor . impl . soft wrap . Soft Wrap App liance Places Ċ import Ġcom . intellij . openapi . editor . markup . Highlight er Layer Ċ import Ġcom . intellij . openapi . editor . markup . Highlight er Target Area Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġcom . intellij . ui . components . panels . Wrapper Ċ import Ġcom . intellij . util . Alarm Ċ import Ġcom . intellij . util . System Properties Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . execution . ui . impl . Console View Token Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . execution . ui . impl . Console View Token Buffer Ċ import Ġuk . co . re ec ed un n . intellij . plugin . core . ui . B orders Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . border . Border Ċ import Ġkotlin . math . min Ċ Ċ // ĠThe ĠIntelliJ ĠConsole View Impl Ġshould Ġbe Ġused Ġwhen Ġthe Ġfollowing Ġissues Ġare Ġfixed : Ċ // Ġ 1 . ĠIDEA - 2 5 6 3 6 3 Ġ: ĠSupport Ġcustom ĠToken Buffer Ġsizes Ġfor ĠConsole View Impl Ġinstances . Ċ // Ġ 2 . ĠIDEA - 2 5 6 6 1 2 Ġ: ĠConsole View Impl Ġoverrides Ġsyntax Ġhighlighting Ġon Ġthe Ġoutput Ġtext . Ċ open Ġclass ĠText Console View ( val Ġproject : ĠProject ) Ġ: ĠConsole View Impl (), ĠConsole View Ex Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCONTENT _ TYPE Ġ= ĠKey . create < Console View ContentType >(" Console View ContentType ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠFL USH _ DELAY Ġ= ĠSystem Properties . getInt Property (" console . flush . delay . ms ", Ġ 2 0 0 ). to Long () ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFL USH _ IM MEDI ATE LY Ġ= Ġ 0 . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Le aking This ") ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). message Bus . connect ( this ). subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Colors Manager . TOPIC , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Colors Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). assertIs Dispatch Thread () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( project . is Disposed Ġ|| Ġeditor Ġ== Ġnull ) Ġreturn @ Editor Colors Listener ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠDocument Markup Model . for Document ( editor !!. document , Ġproject , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . all Highlight ers . as Sequence (). filter Is Instance < Range Highlight er Ex >(). forEach Ġ{ Ġtoken Marker Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġtoken Marker . getUser Data ( CONTENT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contentType Ġ!= Ġnull Ġ&& ĠcontentType . attributes Key Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Marker . setText Attributes ( contentType . attributes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġeditor : ĠEditor Ex ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġvar Ġhyper links : ĠEditor Hyper link Support ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġem ulate Car riage Return : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( editor ?. document Ġas ? ĠDocument Impl )?. set Accept Slash R ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Le aking This ") ĊĠĠĠ Ġprivate Ġval Ġalarm Ġ= ĠAlarm ( this ) ĊĊĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠAny () ĊĠĠĠ Ġprivate Ġval Ġtokens Ġ= ĠConsole View Token Buffer () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Console Editor (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ!= Ġnull ) Ġreturn Ġeditor !!. component ĊĊĠĠĠĠĠĠĠ Ġeditor Ġ= ĠConsole View Util . setup Console Editor ( project , Ġtrue , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġeditor ?. context Menu GroupId Ġ= Ġnull Ġ// Ġdisabling Ġdefault Ġcontext Ġmenu ĊĠĠĠĠĠĠĠ Ġ( editor ?. document Ġas ? ĠDocument Impl )?. set Accept Slash R ( em ulate Car riage Return ) ĊĊĠĠĠĠĠĠĠ Ġhyper links Ġ= ĠEditor Hyper link Support ( editor !! , Ġproject ) ĊĠĠĠĠĠĠĠ Ġreturn Ġeditor !!. component ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġflush Deferred Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġdeferred : ĠArray < Console View Token > ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tokens . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred Ġ= Ġtokens . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġeditor !!. document ĊĠĠĠĠĠĠĠ Ġvar Ġstart Length Ġ= Ġdocument . text Length ĊĠĠĠĠĠĠĠ Ġdocument . insert String ( start Length , Ġdeferred . join ToString ("") Ġ{ Ġit . text Ġ}) ĊĊĠĠĠĠĠĠĠ Ġvar ĠcontentType Start Ġ= Ġstart Length ĊĠĠĠĠĠĠĠ Ġvar Ġprevious ContentType : ĠConsole View ContentType ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdeferred . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Length Ġ= Ġstart Length Ġ+ Ġit . text . length ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . contentType Ġ== Ġnull Ġ|| Ġprevious ContentType Ġ=== Ġit . contentType Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious ContentType Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious ContentType Ġ= Ġit . contentType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Token Range Highlight er ( previous ContentType !! , ĠcontentType Start , Ġstart Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Start Ġ= Ġstart Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious ContentType Ġ= Ġit . contentType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . hyperlink Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhyper links !!. create Hyper link ( start Length , Ġend Length , Ġnull , Ġit . hyperlink Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Length Ġ= Ġend Length ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( previous ContentType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Token Range Highlight er ( previous ContentType !! , ĠcontentType Start , Ġdocument . text Length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Token Range Highlight er ( contentType : ĠConsole View ContentType , Ġstart Offset : ĠInt , Ġend Offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). assertIs Dispatch Thread () ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠDocument Markup Model . for Document ( editor !!. document , Ġproject , Ġtrue ) Ġas ĠMark up Model Ex ĊĠĠĠĠĠĠĠ Ġval Ġlayer Ġ= ĠHighlight er Layer . SY NTAX Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġmodel . add Range Highlight er And Change Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType . attributes Key , Ġstart Offset , Ġend Offset , Ġlayer , ĠHighlight er Target Area . EX ACT _ RANGE , Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġex : ĠRange Highlight er Ex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ex . text Attributes Key Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . setText Attributes ( contentType . attributes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . put UserData ( CONTENT _ TYPE , ĠcontentType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġflush Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrequested Ġ= ĠAtomic Boolean () ĊĊĠĠĠĠĠĠĠ Ġfun Ġqueue ( delay : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm . is Disposed ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delay Ġ== ĠFL USH _ IM MEDI ATE LY Ġ|| Ġrequested . compare AndSet ( false , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm . add Request ( this , Ġdelay , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflush Deferred Text () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġregion ĠConsole View Ex ĊĊĠĠĠ Ġoverride Ġval Ġoffset : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġeditor !!. caret Model . offset ĊĊĠĠĠ Ġoverride Ġfun Ġscroll To Top ( offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflush . queue ( FLUSH _ IM MEDI ATE LY ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Offset Ġ= Ġmin ( offset , Ġcontent Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscrolling Ġ= Ġeditor !!. scroll ing Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcaret Ġ= Ġeditor !!. caret Model ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaret . moveTo Offset ( move Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscrolling . scroll Vert ically ( editor !!. visual Position To XY ( caret . visual Position ). y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Console Border ( border : ĠBorder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor ?. setBorder ( border ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Action Toolbar ( place : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= ĠDefault Action Group () ĊĠĠĠĠĠĠĠ Ġactions . addAll (* create Console Actions ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠAction Manager Ex . getInstance Ex (). create Action Toolbar ( place , Ġactions , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setTarget Component ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetting Ġa Ġborder Ġon Ġthe Ġtoolbar Ġremoves Ġthe Ġstandard Ġpadding / spacing , ĊĠĠĠĠĠĠĠ Ġ// Ġso Ġset Ġthe Ġborder Ġon Ġa Ġpanel Ġthat Ġwraps Ġthe Ġtoolbar Ġelement . ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= ĠWrapper () ĊĠĠĠĠĠĠĠ Ġwrapper . add ( toolbar . component ) ĊĠĠĠĠĠĠĠ Ġwrapper . border Ġ= ĠB orders . Console Toolbar Right ĊĠĠĠĠĠĠĠ Ġadd ( wrapper , ĠBorderLayout . LINE _ START ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Console Text ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= ĠString Util . convert Line Separ ators ( text , Ġem ulate Car riage Return ) ĊĠĠĠĠĠĠĠ Ġeditor !!. document . setText ( new Text ) ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ// Ġregion ĠConsole View ĊĊĠĠĠ Ġoverride Ġfun Ġhas Deferred Output (): ĠBoolean Ġ= Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtokens . isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform When No Deferred Output ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflush Deferred Text () ĊĠĠĠĠĠĠĠ Ġrunnable . run () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor !!. document . setText ("") ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprint ( text : ĠString , ĠcontentType : ĠConsole View ContentType ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= ĠString Util . convert Line Separ ators ( text , Ġem ulate Car riage Return ) ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . add ( Console View Token ( new Text , ĠcontentType )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġflush . queue ( FLUSH _ DELAY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprint Hyper link ( hyperlink Text : ĠString , Ġinfo : ĠHyper link Info ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= ĠString Util . convert Line Separ ators ( hyperlink Text , Ġem ulate Car riage Return ) ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . add ( Console View Token ( new Text , Ġinfo )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġflush . queue ( FLUSH _ DELAY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetContent Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġeditor ?. document Ġ?: Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument . text Length Ġ+ Ġsynchronized ( lock ) Ġ{ Ġtokens . length Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Console Actions (): ĠArray < An Action > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠToggle Use Soft Wrap s Toolbar Action ( Soft Wrap App liance Places . CONSOLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Editor ( e : ĠAn ActionEvent ): ĠEditor ? Ġ= Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll To The End Toolbar Action ( editor !! ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Manager . getInstance (). getAction (" Print "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClear All Action ( this ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadditional Ġ= Ġcreate Additional Console Actions () ĊĠĠĠĠĠĠĠ Ġif Ġ( additional . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary Ġ= ĠDefault Action Group () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprimary . addAll (* actions ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecondary Ġ= ĠDefault Action Group () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecondary . addAll (* additional ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( primary , ĠSe parator (), Ġsecondary ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġactions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcreate Additional Console Actions (): ĠArray < An Action > Ġ= ĠarrayOf () ĊĊĠĠĠ Ġoverride Ġfun Ġget Component (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( create Console Editor (), ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll To ( offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflush . queue ( FLUSH _ IM MEDI ATE LY ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Offset Ġ= Ġmin ( offset , Ġcontent Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor !!. caret Model . moveTo Offset ( move Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor !!. scroll ing Model . scrollTo Caret ( Scroll Type . MAKE _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġhyper links Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . invoke And Wait IfNeeded ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! editor !!. is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Factory . getInstance (). release Editor ( editor !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ// Ġregion ĠData Provider ĊĊĠĠĠ Ġoverride Ġfun ĠgetData ( data Id : ĠString ): ĠAny ? Ġ= Ġwhen Ġ( data Id ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCommon Data Keys . EDITOR . name Ġ-> Ġeditor ĊĠĠĠĠĠĠĠ ĠCommon Data Keys . NAV IG AT ABLE . name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġeditor !!. caret Model . logical Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġhyper links !!. get Hyper link Info By Line And Col ( pos . line , Ġpos . column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopen FileDescriptor Ġ= Ġ( info Ġas ? ĠFile Hyper link Info )?. descriptor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( open FileDescriptor ?. file ?. isValid Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen FileDescriptor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . getData ( data Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region Ċ } Ċ