package Ġorg . are nd . tool Window . errors . tree Ċ Ċ import Ġcom . intellij . icons . All Icons Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . action System . Toggle Action Ċ import Ġcom . intellij . openapi . application . Modal ity State Ċ import Ġcom . intellij . openapi . application . run In Ed t Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . editor . Editor Factory Ċ import Ġcom . intellij . openapi . editor . event . Caret Event Ċ import Ġcom . intellij . openapi . editor . event . Caret Listener Ċ import Ġcom . intellij . openapi . file Editor . File Editor Ċ import Ġcom . intellij . openapi . file Editor . File Editor Manager Ċ import Ġcom . intellij . openapi . file Editor . Text Editor Ċ import Ġcom . intellij . openapi . project . D umb Aware Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . ui . Auto Scroll From Source Handler Ċ import Ġcom . intellij . ui . UI Bundle Ċ import Ġorg . are nd . actions . select Error From Editor Ċ import Ġorg . are nd . settings . Are nd Project Settings Ċ import Ġorg . are nd . tool Window . errors . MessageType Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap ĊĊ Ċ class ĠAre nd Error Tree Auto Scroll From Source ( private Ġval Ġproject : ĠProject , Ġprivate Ġval Ġtree : ĠAre nd Error Tree ) Ġ: ĠAuto Scroll From Source Handler ( project , Ġtree , Ġproject ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġaction Map Ġ= ĠHashMap < MessageType , ĠMy Action >() ĊĊĠĠĠ Ġfun Ġset Enabled ( types : ĠEnum Set < MessageType >, Ġenabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Set Ġ= Ġproject . service < Are nd Project Settings >(). auto Scroll From Source ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġtypes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! enabled Ġ|| Ġ(!( type Ġ== ĠMessageType . RESOL V ING Ġ|| Ġtype Ġ== ĠMessageType . PAR SING ) Ġ|| Ġfilter Set . contains ( MessageType . SHORT ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Map [ type ]?. template Presentation ?. isEnabled Ġ= Ġenabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( enabled Ġ&& Ġfilter Set . intersect ( types ). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Current Selection () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinstall () Ġ{ ĊĠĠĠĠĠĠĠ ĠEditor Factory . getInstance (). event Mult ic aster . add Caret Listener ( object Ġ: ĠCare t Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcaret Position Changed ( event : ĠCare t Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect In Alarm ( event . editor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġproject ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect In Alarm ( editor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ!= Ġnull Ġ&& Ġtree . is Showing Ġ&& Ġis Auto Scroll Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Alarm . cancel All Requests () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Alarm . add Request ({ Ġselect Element From Editor ( editor ) Ġ}, Ġalarm Delay , Ġmod ality State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Current Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Editor Ġ= Ġ( File Editor Manager . getInstance ( my Project ). selected Editor Ġas ? ĠText Editor )?. editor ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Editor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun In Ed t ( Modal ity State . NON _ MOD AL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect In Alarm ( selected Editor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Element From Editor ( editor : ĠEditor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( editor . project Ġ== Ġproject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Error From Editor ( project , Ġeditor , Ġnull , Ġalways Ġ= Ġfalse , Ġactivate Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect Element From Editor ( editor : ĠFile Editor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( editor Ġas ? ĠText Editor )?. editor ?. let Ġ{ Ġselect Element From Editor ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Auto Scroll Enabled ( enabled : ĠBoolean ) Ġ{} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġis Auto Scroll Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġproject . service < Are nd Project Settings >() ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . auto Scroll From Source . contains ( MessageType . GO AL ) Ġ&& Ġservice . messages Filter Set . contains ( MessageType . GO AL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠMy Action ( private Ġval Ġtype : ĠMessageType ) Ġ: ĠToggle Action (" Aut osc roll Ġfrom Ġ${ type . to Text ()} s ", Ġnull , Ġnull ), ĠD umb Aware Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Selected ( e : ĠAn ActionEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġproject . service < Are nd Project Settings >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsettings . auto Scroll From Source . contains ( type ) Ġ&& Ġsettings . messages Filter Set . contains ( type ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(!( type Ġ== ĠMessageType . RESOL V ING Ġ|| Ġtype Ġ== ĠMessageType . PAR SING ) Ġ|| Ġsettings . auto Scroll From Source . contains ( MessageType . SHORT ) Ġ&& Ġsettings . messages Filter Set . contains ( MessageType . SHORT )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetSelected ( e : ĠAn ActionEvent , Ġstate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġproject . service < Are nd Project Settings >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . auto Scroll From Source . add ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Current Selection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . auto Scroll From Source . remove ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin ĠEnum Set . of ( MessageType . RESOL V ING , ĠMessageType . PAR SING )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! state Ġ|| Ġsettings . messages Filter Set . contains ( type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Map [ type ]?. template Presentation ?. isEnabled Ġ= Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Action Group () Ġ= ĠDefault Action Group ( UI Bundle . message (" aut osc roll . from . source . action . description "), Ġtrue ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Presentation . icon Ġ= ĠAll Icons . General . Aut osc roll From Source ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin ĠMessageType . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠMy Action ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Map [ type ] Ġ= Ġaction ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġproject . service < Are nd Project Settings >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin ĠMessageType . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenabled Ġ= Ġsettings . messages Filter Set . contains ( type ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(!( type Ġ== ĠMessageType . RESOL V ING Ġ|| Ġtype Ġ== ĠMessageType . PAR SING ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . auto Scroll From Source . contains ( MessageType . SHORT ) Ġ&& Ġsettings . messages Filter Set . contains ( MessageType . SHORT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Map [ type ]?. template Presentation ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }