package Ġfeature a . studio . editor . components Ċ Ċ import Ġfeature a . config . Config Ċ import Ġfeature a . desktop . j fx . to ImageView Ċ import Ġfeature a . desktop . run On J fx Thread Ċ import Ġfeature a . jvm . normalized Path Ċ import Ġfeature a . r ml . R ml Resource Ċ import Ġfeature a . runtime . Component Ċ import Ġfeature a . runtime . Module Ċ import Ġfeature a . utils . Property Ċ import Ġfeature a . runtime . import Ċ import Ġfeature a . studio . project . Project Ċ import Ġjavafx . scene . control . Tab Ċ Ċ class ĠEditor Tab ( override Ġval Ġmodule : ĠModule ) Ġ: ĠComponent Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject Ġ= Ġimport () ĊĊĠĠĠ Ġlateinit Ġvar Ġtab : ĠTab ĊĠĠĠ Ġval Ġis Dirty Property Ġ= ĠProperty < Boolean >( value Ġ= Ġfalse ) ĊĠĠĠ Ġvar Ġis Dirty : ĠBoolean Ġby Ġis Dirty Property ĊĠĠĠ Ġval Ġr ml Resource Property Ġ= ĠProperty < R ml Resource >() ĊĠĠĠ Ġvar Ġr ml Resource : ĠR ml Resource Ġby Ġr ml Resource Property ĊĠĠĠ Ġval Ġid : ĠString Ġget () Ġ= Ġr ml Resource . r ml Tag . id OrNull Ġ?: Ġerror (" r ml Tag : Ġ${ r ml Resource . r ml Tag }") ĊĠĠĠ Ġval Ġlisteners Ġ= Ġmutable ListOf < Editor Listener >() ĊĠĠĠ Ġprivate Ġval Ġicons Config Ġ= ĠConfig (" icons ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Dirty Property . watch Ġ{ Ġupdate Tab Title () Ġ} ĊĠĠĠĠĠĠĠ Ġr ml Resource Property . watch Ġ{ Ġupdate Tab Title () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin Ġlisteners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . save ( r ml Resource . r ml Tag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . save ( r ml Resource . r ml Tag ) ĊĠĠĠĠĠĠĠ Ġis Dirty Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Icon () Ġ= Ġrun On J fx Thread Ġ{ ĊĠĠĠĠĠĠĠ Ġtab . graphic Ġ= Ġicons Config [ r ml Resource . r ml Tag . name ]?. to ImageView ( 1 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* internals */ ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Tab Title () Ġ= Ġrun On J fx Thread Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: tab . isInitialized ) Ġif Ġ( is Dirty ) Ġtab . text Ġ= Ġ"* Ġ$ id " Ġelse Ġtab . text Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġif Ġ( project . is Dirty ) Ġproject . main Stage . title Ġ= Ġ"* Ġ${ project . r ml File . normalized Path }" ĊĠĠĠĠĠĠĠ Ġelse Ġproject . main Stage . title Ġ= Ġproject . r ml File . normalized Path ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊĊ