package Ġcom . ing by r . v dm . controllers Ċ Ċ import Ġcom . ing by r . v dm . stylesheets . Dark Theme Ċ import Ġcom . ing by r . v dm . stylesheets . Light Theme Ċ import Ġjavafx . beans . property . Simple List Property Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġt orn ad of x .* Ċ import Ġjava . util .* Ċ import Ġkotlin . reflect . K Class Ċ Ċ open Ġclass ĠTheme Controller Ġ: ĠController () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Theme Controller :: class . java ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages Ġ= ĠResource Bundle . get Bundle (" i 1 8 n / Preferences View ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġthemes Ġ= ĠSimple List Property < K Class < out ĠStyles heet >>( listOf ( Light Theme :: class , ĠDark Theme :: class ). observable ()) ĊĠĠĠ Ġval Ġactive Theme Property Ġ= ĠSimple ObjectProperty < K Class < out ĠStyles heet >>() ĊĠĠĠ Ġvar Ġactive Theme Ġby Ġactive Theme Property ĊĊĊĠĠĠ Ġfun Ġinit Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġlistener Ġto Ġchange Ġtheme ĊĠĠĠĠĠĠĠ Ġactive Theme Property . addListener Ġ{ Ġ_, Ġold Theme , Ġnew Theme Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Theme ?. let { Ġremove Style sheet ( it )} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Theme ?. let Ġ{ Ġimport Style sheet ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġload Ġtheme Ġfrom Ġapp ĊĠĠĠĠĠĠĠ Ġactive Theme Ġ= Ġthemes . first () ĊĠĠĠĠĠĠĠ Ġlogger . debug (" init Ġtheme Ġ${ active Theme . simple Name }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove Style sheet ( active Theme ) ĊĠĠĠĠĠĠĠ Ġimport Style sheet ( active Theme ) ĊĠĠĠ Ġ} Ċ }