package Ġcom . sk yn ight . sc rc py . base Ċ Ċ import Ġcom . google . gson . Json Parser Ċ import Ġcom . sk yn ight . sc rc py . Control Listener Ċ import Ġcom . sk yn ight . sc rc py . windows . Log Output Window Ċ import Ġcom . sk yn ight . sc rc py . base . Base Index . Companion . Data Save Ċ import Ġcom . sk yn ight . sc rc py . base . Base Index . Companion . Save Color Ċ import Ġcom . sk yn ight . sc rc py . base . Base Index . Companion . Save Console Setting Ċ import Ġjava . awt . Color Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjavax . swing . UI Manager Ċ Ċ class ĠControl Center Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontrol Listener : ĠControl Listener ĊĊĠĠĠ Ġfun Ġset Control Listener ( control Listener : ĠControl Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . control Listener Ġ= Ġcontrol Listener ĊĠĠĠĠĠĠĠ ĠLog Output Window . take Log (" Start Loading ") ĊĠĠĠĠĠĠĠ ĠLoad Language . get Load Language ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Control Listener (): ĠControl Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . control Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġ@ set : Synchron ized ĊĠĠĠ Ġvar Ġis W ired Method Ġ= Ġtrue ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġlog Output Window Ġ= Ġtrue ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġconsole less Ġ= Ġfalse ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġtips Ġ= Ġtrue ĊĊĠĠĠ Ġ@ Suppress (" Private PropertyName ") ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar ĠF G Color Ġ= ĠColor ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ@ Suppress (" Private PropertyName ") ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar ĠBG Color Ġ= ĠColor ( 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Control Center Ġby Ġlazy ( Lazy Thread Safety Mode . SYN CH RON IZED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Manager . set Look And Feel ( UI Manager . getSystem Look And Feel ClassName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠControl Center () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt 1 Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( Data Save Ġ+ ĠFile . separator Ġ+ Ġ" Custom Settings ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . instance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson File Ġ= Ġfile . inputStream (). buffered Reader (). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log (" Read ĠCustom ĠSettings \ n $ json File ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson Parser (). parse ( json File ). as JsonObject ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Output Window Ġ= Ġjson . get (" Log Output Window "). as Boolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole less Ġ= Ġjson . get (" Console less "). as Boolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtips Ġ= Ġjson . get (" Tips "). as Boolean ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Console Settings () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Console Settings () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . instance . isVisible Ġ= Ġlog Output Window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log (" Log Output Window : Ġ$ log Output Window ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Log (" Console less : Ġ$ console less ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Log (" Tips : Ġ$ tips ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġt 1 . start () ĊĊĠĠĠĠĠĠĠ Ġval Ġt 2 Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( Data Save Ġ+ ĠFile . separator Ġ+ Ġ" Color Settings ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson File Ġ= Ġfile . inputStream (). buffered Reader (). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log (" Read ĠColor ĠSettings \ n $ json File ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson Parser (). parse ( json File ). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbg Ġ= Ġjson . get (" BG Color "). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBG Color Ġ= ĠColor ( bg . get (" R "). as Int , Ġbg . get (" G "). as Int , Ġbg . get (" B "). as Int ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfg Ġ= Ġjson . get (" FG Color "). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF G Color Ġ= ĠColor ( fg . get (" R "). as Int , Ġfg . get (" G "). as Int , Ġfg . get (" B "). as Int ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġt 2 . start () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWaitFor Ġcomplete Ġof Ġtwo Ġthreads ĊĠĠĠĠĠĠĠ Ġvar Ġtimer Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( t 1 . is Alive Ġ|| Ġt 2 . is Alive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// e . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠLog Output Window . take Log (" Initial ĠLoad ĠCustom ĠSettings ĠTime Ġspend : Ġ${ timer } ms "). new Line () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Log Output Window ( boolean : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . log Output Window Ġ= Ġboolean ĊĠĠĠĠĠĠĠ Ġchange Console Settings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Log Output Window (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . log Output Window ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Console less ( boolean : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . console less Ġ= Ġboolean ĊĠĠĠĠĠĠĠ Ġchange Console Settings () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Console less (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . console less ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Tips ( boolean : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tips Ġ= Ġboolean ĊĠĠĠĠĠĠĠ Ġchange Console Settings () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Tips (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . tips ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget BG Color (): ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBG Color ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset BG Color ( color : ĠColor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( color . rgb Ġ== ĠBG Color . rgb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . BG Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color Settings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget FG Color (): ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠF G Color ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset FG Color ( color : ĠColor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( color . rgb Ġ== ĠF G Color . rgb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . FG Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color Settings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Console Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( Data Save Ġ+ ĠFile . separator Ġ+ Ġ" Custom Settings ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Writer Ġ= ĠFile Writer ( file , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= ĠString . format ( Save Console Setting , Ġlog Output Window , Ġconsole less , Ġtips ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ("$ file Ġchanged Ġas :\ n $ s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . write ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . close () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . instance . isVisible Ġ= Ġlog Output Window ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Color Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( Data Save Ġ+ ĠFile . separator Ġ+ Ġ" Color Settings ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Writer Ġ= ĠFile Writer ( file , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠBackground ĠColor ĠRGB , Ġ ĠFore ground ĠColor ĠRGB */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= ĠString . format ( Save Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBG Color . red , ĠBG Color . green , ĠBG Color . blue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF G Color . red , ĠF G Color . green , ĠF G Color . blue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ("$ file Ġchanged Ġas :\ n $ s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . write ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Output Window . take Log ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ