package Ġorg . jb . cce . interpret ator Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . project . D umb Service Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jb . cce . Completion Invoker Ċ import Ġorg . jb . cce . Lookup Ċ import Ġorg . jb . cce . util . List Size Restriction Ċ Ċ class ĠDeleg ation Completion Invoker ( private Ġval Ġinvok er : ĠCompletion Invoker , Ġproject : ĠProject ) Ġ: ĠCompletion Invoker Ġ{ ĊĠĠĠ Ġprivate Ġval Ġapplication Listeners Restriction Ġ= ĠList Size Restriction . application Listeners () ĊĠĠĠ Ġprivate Ġval Ġd umb Service Ġ= ĠD umb Service . getInstance ( project ) ĊĊĠĠĠ Ġoverride Ġfun Ġmove Caret ( offset : ĠInt ) Ġ= Ġon Ed t Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . move Caret ( offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcall Completion ( expected Text : ĠString , Ġprefix : ĠString ): ĠLookup Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication Listeners Restriction . waitFor Size ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġread Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvok er . call Completion ( expected Text , Ġprefix ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish Completion ( expected Text : ĠString , Ġprefix : ĠString ) Ġ= Ġread Action Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . finish Completion ( expected Text , Ġprefix ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprint Text ( text : ĠString ) Ġ= Ġwrite Action Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . print Text ( text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Range ( begin : ĠInt , Ġend : ĠInt ) Ġ= Ġwrite Action Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . delete Range ( begin , Ġend ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen File ( file : ĠString ): ĠString Ġ= Ġread Action Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . open File ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose File ( file : ĠString ) Ġ= Ġon Ed t Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . close File ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisOpen ( file : ĠString ) Ġ= Ġread Action Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . isOpen ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetText (): ĠString Ġ= Ġread Action Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . getText () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġread Action ( run nable : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠT ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke And Wait Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġd umb Service . run Read Action In Smart Mode < T >( run nable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Action ( action : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke And Wait Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). run Write Action ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ed t ( action : Ġ() Ġ-> ĠUnit ) Ġ= ĠApplication Manager . getApplication (). invoke And Wait Ġ{ ĊĠĠĠĠĠĠĠ Ġaction () ĊĠĠĠ Ġ} Ċ }