package Ġorg . n ield . dirty fx . collections Ċ Ċ import Ġjavafx . beans . property . Simple Boolean Property Ċ import Ġjavafx . beans . value . Observable Value Ċ import Ġjavafx . collections . FX Collections Ċ import Ġjavafx . collections . Map ChangeListener Ċ import Ġjavafx . collections . Observable Map Ċ import Ġjavafx . collections . Weak Map ChangeListener Ċ import Ġorg . n ield . dirty fx . tracking . Dirty Property Ċ Ċ class ĠDir ty Observable Map < K , V > Ġprivate Ġconstructor (_ original Map : ĠMap < K , V >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Map : ĠObservable Map < K , V >): ĊĠĠĠĠĠĠĠ ĠObservable Map < K , V > Ġby Ġcurrent Map , ĠDir ty Property Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ original Map Ġ= ĠFX Collections . observable Map (_ original Map ) ĊĠĠĠ Ġprivate Ġval Ġ_ is Dirty Property Ġ= ĠSimple Boolean Property () ĊĊĠĠĠ Ġprivate Ġval Ġlistener Ġ= ĠMap ChangeListener < K , V > Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ is Dirty Property . set (_ original Map Ġ!= Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( original Map : ĠMap < K , V > Ġ= Ġmap Of ()): Ġthis ( original Map , ĠFX Collections . observable Map ( HashMap < K , V >( original Map ))) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Listener ( Weak Map ChangeListener ( listener )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġre baseline () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ original Map . clear () ĊĠĠĠĠĠĠĠ ĠforEach Ġ{ Ġk , Ġv Ġ-> Ġ_ original Map [ k ] Ġ= Ġv Ġ} ĊĠĠĠĠĠĠĠ Ġ_ is Dirty Property . set ( false ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠ Ġ_ original Map . forEach Ġ{ Ġk , Ġv Ġ-> Ġset ( k , v ) Ġ} ĊĠĠĠĠĠĠĠ Ġ_ is Dirty Property . set ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġoriginal Map Ġget () Ġ= ĠFX Collections . unmodifiable Observable Map (_ original Map ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Dirty Property (): ĠObservable Value < Boolean > Ġ= Ġ_ is Dirty Property ĊĠĠĠ Ġoverride Ġval Ġis Dirty Ġget () Ġ= Ġ_ is Dirty Property . get () ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġcurrent Map . hashCode () ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ġcurrent Map . equals ( other ) Ċ } Ċ