package Ġde . t uc he mn itz . se . exercise . core . config manager Ċ Ċ import Ġde . t uc he mn itz . se . exercise . persist . Abstract Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . IP ers ist Ċ import Ġde . t uc he mn itz . se . exercise . persist . Image Ċ import Ġde . t uc he mn itz . se . exercise . persist . Image Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . Image Collection . Companion . DEFAULT _ I MAGES Ċ import Ġde . t uc he mn itz . se . exercise . persist . Image Collection . Companion . default Image Path Ċ import Ġde . t uc he mn itz . se . exercise . persist . configs . Code Charts Config Ċ import Ġde . t uc he mn itz . se . exercise . persist . configs . Eye Tracking Config Ċ import Ġde . t uc he mn itz . se . exercise . persist . configs . Zoom Maps Config Ċ import Ġde . t uc he mn itz . se . exercise . persist . configs . collections . Code Charts Config Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . configs . collections . Eye Tracking Config Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . configs . collections . Zoom Maps Config Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . Code Charts Data Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . Eye Tracking Data Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . UserData Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . Zoom Maps Data Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . collections . Code Charts Data Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . collections . Eye Tracking Data Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . collections . UserData Collection Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . collections . Zoom Maps Data Collection Ċ import Ġjavafx . scene . input . KeyCode Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġorg . bson . B son Document Ċ import Ġorg . lit ote . km ongo .` in ` Ċ import Ġorg . lit ote . km ongo . desc ending Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġt orn ad of x . Controller Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġcovers Ġall Ġthe Ġlogic Ġfor Ġreading Ġand Ġwriting Ġthe Ġconfig Ġfile , Ġas Ġwell Ġas Ġhandling Ċ Ġ* Ġsettings Ġfor Ġall Ġtools . ĠIt Ġcan Ġsave Ġand Ġcreate Ġsetting , Ġbut Ġalso Ġstore Ġthem Ġinto Ġthe Ġdatabase Ċ Ġ* Ġor Ġretrieve Ġdata Ġfrom Ġthe Ġdatabase Ċ Ġ* Ċ Ġ* Ġ@ property Ġconfig FilePath Ġis Ġthe Ġpath Ġto Ġthe Ġconfig Ġfile . ĠIt 's Ġdefault Ġis Ġthe Ġrelative Ġpath Ġto Ġthis Ġapplication . Ċ Ġ*/ Ċ class ĠConfig Manager ( var Ġconfig FilePath : ĠString Ġ= Ġ" cfg . json ") Ġ: ĠController () Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠConfig Collections ( ĊĠĠĠĠĠĠĠ Ġval Ġcode Charts Config Collection : ĠCode Charts Config Collection , ĊĠĠĠĠĠĠĠ Ġval Ġzoom Maps Config Collection : ĠZoom Maps Config Collection , ĊĠĠĠĠĠĠĠ Ġval Ġeye Tracking Config Collection : ĠE ye Tracking Config Collection ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠData Collections ( ĊĠĠĠĠĠĠĠ Ġval Ġcode Charts Data Collection : ĠCode Charts Data Collection , ĊĠĠĠĠĠĠĠ Ġval Ġzoom Maps Data Collection : ĠZoom Maps Data Collection , ĊĠĠĠĠĠĠĠ Ġval Ġeye Tracking Data Collection : ĠE ye Tracking Data Collection , ĊĠĠĠĠĠĠĠ Ġval ĠuserData Collection : ĠUser Data Collection ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġcode Charts Config Collection : ĠCode Charts Config Collection Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġzoom Maps Config Collection : ĠZoom Maps Config Collection Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġeye Tracking Config Collection : ĠE ye Tracking Config Collection Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval Ġcode Charts Data Collection : ĠCode Charts Data Collection Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġzoom Maps Data Collection : ĠZoom Maps Data Collection Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġeye Tracking Data Collection : ĠE ye Tracking Data Collection Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval ĠuserData Collection : ĠUser Data Collection Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval Ġimage Collection : ĠImage Collection Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval Ġconfig Collections Ġ= ĠConfig Collections ( ĊĠĠĠĠĠĠĠ Ġcode Charts Config Collection , ĊĠĠĠĠĠĠĠ Ġzoom Maps Config Collection , ĊĠĠĠĠĠĠĠ Ġeye Tracking Config Collection ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġdata Collections Ġ= ĠData Collections ( ĊĠĠĠĠĠĠĠ Ġcode Charts Data Collection , ĊĠĠĠĠĠĠĠ Ġzoom Maps Data Collection , ĊĠĠĠĠĠĠĠ Ġeye Tracking Data Collection , ĊĠĠĠĠĠĠĠ ĠuserData Collection ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar ĠcurrentUser Ġ= ĠUser Data ( default Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġfun Ġuser S av able () Ġ= ĠuserData Collection . findOne ById ( currentUser ._ id ) Ġ== Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Config Manager :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ@ Serializable ĊĠĠĠĠĠĠĠ Ġval Ġgeneral Settings Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGeneral ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfullscreen Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġjava . awt . Toolkit . getDefault Toolkit (). screen Size . getWidth (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġjava . awt . Toolkit . getDefault Toolkit (). screen Size . getHeight (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Menu Enabled Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivated Tool Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaster Path Ġ= Ġ" master Path ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexport Path Ġ= Ġ" export Path ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Path Ġ= Ġ" image Path " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata ClientConfig Ġ= ĠData ClientConfig ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Sample Board Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Sample Board ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ 1 6 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblue Ġ= Ġ 1 3 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĠColor Sample Board ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Ġ= Ġ 1 2 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblue Ġ= Ġ 1 6 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Config Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Config ( data BasePath Ġ= Ġ" database Path ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComp ares Ġthe Ġmost Ġrecent Ġdatabase Ġentry Ġwith Ġthe Ġconfig Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck DB Similarity (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġwhich Ġtemplate ĠImages Ġdo Ġexist . ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck Template Images () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Paths Ġ= ĠDEFAULT _ I MAGES . as Sequence (). map (:: default Image Path ). toSet () ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġimage Collection . existing Default Images () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġdefault Image Path ( it ). take If ( Files :: exists ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠ Ġval Ġmissing Ġ= Ġdefault Paths Ġ- Ġexisting ĊĠĠĠĠĠĠĠ Ġif Ġ( missing . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Required Ġimages Ġmissing : Ġ$ missing ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġall Ġpaths Ġof Ġexisting Ġpictures . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetAll Images (): ĠList < Image > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġimage Collection . find (). toList () ĊĠĠĠĠĠĠĠ Ġval Ġmissing Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimages . as Sequence (). map NotNull Ġ{ Ġ( id , Ġ_, Ġ_, Ġpath ) Ġ-> Ġid . take Unless Ġ{ ĠFiles . exists ( path ) Ġ} Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġimage Collection . delete Many ( Image ::_ id Ġ` in ` Ġmissing ) ĊĠĠĠĠĠĠĠ Ġreturn Ġimages . filter Ġ{ Ġit ._ id Ġ! in Ġmissing Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġthe Ġconfig Ġfile Ġto Ġa Ġcertain Ġpath Ġwith . ĊĠĠĠĠ Ġ* Ġ@ param Ġpath Ġspecifies Ġthe Ġpath Ġwhere Ġthe Ġfile Ġis Ġwritten , Ġdefault Ġis Ġthe Ġconfig FilePath ĊĠĠĠĠ Ġ* Ġ@ throws ĠIOException Ġwhen Ġwriting Ġof Ġfile Ġgoes Ġwrong . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwrite File No Throw ( path : ĠPath Ġ= ĠPath . of ( config FilePath )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite File ( path ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Could Ġnot Ġwrite Ġfile .", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite File ( path : ĠPath Ġ= ĠPath . of ( config FilePath )) Ġ{ ĊĠĠĠĠĠĠĠ ĠFiles . writeString ( path , Ġconfig File (), ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġthe Ġconfig Ġfile Ġto Ġa Ġcertain Ġpath Ġwith . ĊĠĠĠĠ Ġ* Ġ@ param Ġpath Ġspecifies Ġthe Ġpath Ġwhere Ġthe Ġfile Ġis Ġwritten , Ġdefault Ġis Ġthe Ġconfig FilePath ĊĠĠĠĠ Ġ* Ġ@ throws ĠIOException Ġwhen Ġreading Ġof Ġfile Ġgoes Ġwrong . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠreadFile ( path : ĠPath Ġ= ĠPath . of ( config FilePath )): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . readString ( path , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Could Ġnot Ġread Ġconfig Ġfile .", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDep ending Ġon Ġwhich Ġtool Ġis Ġrequiring Ġa Ġconfig , Ġthis Ġfunction Ġis Ġreturning Ġit . ĊĠĠĠĠ Ġ* ĠIn Ġthis Ġcase Ġa ĠZoom Maps Config . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Zoom Maps Config (): ĠZoom Maps Config Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠZoom Maps Config ( zoom Speed Ġ= Ġ 1 . 0 , Ġzoom Key Ġ= ĠKeyCode . C ) ĊĠĠĠĠĠĠĠ Ġ// Ġreturn Ġdecode Config ()?. zoom Maps Config ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS aves Ġthe ĠConfig s , Ġcreated Ġ Ġin Ġthe ĠTools , Ġinto Ġthe Ġdatabase ĊĠĠĠĠ Ġ* Ġ@ param Ġconfig Ġspecifies Ġthe Ġconfig Ġwhich Ġis Ġcurrently Ġbeing Ġsaved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsave Persist able ( config : ĠIP ers ist ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCode Charts Config Ġ-> Ġconfig Collections . code Charts Config Collection . save One ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠZoom Maps Config Ġ-> Ġconfig Collections . zoom Maps Config Collection . save One ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE ye Tracking Config Ġ-> Ġconfig Collections . eye Tracking Config Collection . save One ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCode Charts Data Ġ-> Ġdata Collections . code Charts Data Collection . save One ( config ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! currentUser . default Ġ&& Ġuser S av able ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Collections . userData Collection . save One ( config . currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠZoom Maps Data Ġ-> Ġdata Collections . zoom Maps Data Collection . save One ( config ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! currentUser . default Ġ&& Ġuser S av able ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Collections . userData Collection . save One ( config . currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE ye Tracking Data Ġ-> Ġdata Collections . eye Tracking Data Collection . save One ( config ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! currentUser . default Ġ&& Ġuser S av able ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Collections . userData Collection . save One ( config . currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlogger . error (" Couldn 't Ġfetch Ġthis ĠConfig Ġtype .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġsets Ġgeneral Ġsettings Ġfor Ġthe Ġconfig Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġselection Menu Enabled Ġspecifies Ġwhether Ġthe Ġselection Ġmenu Ġof Ġthe Ġconfig Ġfile Ġis Ġenabled Ġor Ġnot ĊĠĠĠĠ Ġ* Ġ@ param Ġactivated Tool Ġspecifies Ġthe Ġtool Ġwhich Ġis Ġcurrently Ġactivated ĊĠĠĠĠ Ġ* Ġ@ param Ġmaster Path Ġspecifies Ġtoplevel Ġpath ĊĠĠĠĠ Ġ* Ġ@ param Ġexport Path Ġspecifies Ġthe Ġpath Ġwhere Ġthe Ġconfig Ġfile Ġis Ġsaved ĊĠĠĠĠ Ġ* Ġ@ param Ġimage Path Ġspecifies Ġthe Ġpath Ġwhere Ġall Ġthe Ġimages Ġare Ġbeing Ġsaved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset General Settings ( ĊĠĠĠĠĠĠĠ Ġfullscreen : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt , ĊĠĠĠĠĠĠĠ Ġselection Menu Enabled : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġactivated Tool : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġmaster Path : ĠPath , ĊĠĠĠĠĠĠĠ Ġexport Path : ĠPath , ĊĠĠĠĠĠĠĠ Ġimage Path : ĠPath ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgeneral Settings . activated Tool Ġ= Ġactivated Tool ĊĠĠĠĠĠĠĠ Ġgeneral Settings . selection Menu Enabled Ġ= Ġselection Menu Enabled ĊĠĠĠĠĠĠĠ Ġgeneral Settings . fullscreen Ġ= Ġfullscreen ĊĠĠĠĠĠĠĠ Ġgeneral Settings . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġgeneral Settings . height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġgeneral Settings . master Path Ġ= Ġmaster Path . toString () ĊĠĠĠĠĠĠĠ Ġgeneral Settings . export Path Ġ= Ġexport Path . toString () ĊĠĠĠĠĠĠĠ Ġgeneral Settings . image Path Ġ= Ġimage Path . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġcreates Ġthe Ġconfig Ġfile Ġout Ġof Ġall Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconfig File (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtools Ġ= Ġassemble All Configurations () ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Ġ{ Ġpretty Print Ġ= Ġtrue Ġ}. encode ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig File . serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneral Ġ= Ġgeneral Settings , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbubble View Config Ġ= Ġtools . bubble View Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Maps Config Ġ= Ġtools . zoom Maps Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Charts Config Ġ= Ġtools . code Charts Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeye Tracking Config Ġ= Ġtools . eye Tracking Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ClientConfig Ġ= Ġdata ClientConfig , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġdatabase Config ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġfinds Ġthe Ġmost Ġrecent Ġconfigs Ġout Ġof Ġthe Ġdatabase ĊĠĠĠĠ Ġ* Ġand Ġputs Ġthem Ġtogether Ġto Ġbe Ġsaved Ġin Ġthe Ġconfig Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġassemble All Configurations (): ĠTool Configs Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecent Zoom Config Ġ= Ġdata Collections . zoom Maps Data Collection . find Most Recent () ĊĠĠĠĠĠĠĠ Ġval ĠkeyCode Ġ= Ġrecent Zoom Config ?. zoom Key Ġ?: ĠKeyCode . C ĊĠĠĠĠĠĠĠ Ġval Ġzoom Image Ġ= Ġrecent Zoom Config ?. image Path Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġzoom Speed Ġ= Ġrecent Zoom Config ?. zoom Speed Ġ?: Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġreturn ĠTool Configs ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Charts Config Ġ= Ġconfig Collections . code Charts Config Collection . find Most Recent (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Maps Config Ġ= ĠConfig File Zoom Maps ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Bindings Ġ= ĠKey Bindings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup Ġ= ĠkeyCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdown Ġ= ĠkeyCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= ĠkeyCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= ĠkeyCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Key Ġ= ĠkeyCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġ= ĠkeyCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpictures Ġ= ĠlistOf ( Zoom Information ( name Ġ= Ġzoom Image , Ġzoom Speed Ġ= Ġzoom Speed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeye Tracking Config Ġ= ĠE ye Tracking Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpictures Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbubble View Config Ġ= ĠB ubble View Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Information ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter ( gradient Ġ= Ġ 1 , Ġtype Ġ= Ġ" gaussian Blur ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġthe Ġmost Ġrecent Ġconfig Ġof Ġa Ġspecified Ġtype Ġof Ġconfig . ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġof Ġtype ĠI Config , Ġthe Ġconfig Ġtype Ġwhich Ġis Ġbeing Ġsearched Ġfor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠIP ers ist > ĠAbstract Collection < T >. find Most Recent (): ĠT ? Ġ= ĊĠĠĠĠĠĠĠ Ġfind ( B son Document ()). sort ( desc ending ( IP ers ist :: saved At )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe codes Ġthe Ġconfig Ġfile Ġto Ġdata Ġclasses . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdecode Config () Ġ= ĠreadFile ( Path . of ( config FilePath )) ?. let Ġ{ ĠJson . decode FromString ( ConfigFile . serializer (), Ġit ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe ĠData An al yst s ĠColors Ġout Ġof Ġthe ĠConfig ĠFile ĊĠĠĠĠ Ġ* ĠHas Ġdefault Ġgreen ish Ġand Ġbl u ish Ġcolors ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetConfig Colo urs (): ĠList < Color Sample Board > Ġ= ĊĠĠĠĠĠĠĠ Ġdecode Config ()?. data ClientConfig ?. color Sample Board ?. toList () Ġ?: ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Sample Board ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ 1 6 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblue Ġ= Ġ 1 3 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĠColor Sample Board ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Ġ= Ġ 1 2 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblue Ġ= Ġ 1 6 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġneeded Ġsettings Ġfor Ġthe ĠCode Charts Tool . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcode Charts Settings () Ġ= Ġdecode Config ()?. code Charts Config Ċ } Ċ