package Ġde . u ul m . se . co uched it . client . controller . canvas . processing Ċ Ċ import Ġcom . google . inject . Singleton Ċ import Ġde . u ul m . se . co uched it . model . attribute . elements . Attribute Bag Ċ import Ġde . u ul m . se . co uched it . model . attribute . elements . Attributes For Ċ import Ġde . u ul m . se . co uched it . model . base . Element Ċ import Ġde . u ul m . se . co uched it . model . graphic . elements . Graphic Object Ċ import Ġde . u ul m . se . co uched it . model . base . suggestions . Base Suggestion Ċ import Ġde . u ul m . se . co uched it . model . base . suggestions . Suggestion For Ċ import Ġde . u ul m . se . co uched it . model . connection . relations . Connection End Ċ import Ġde . u ul m . se . co uched it . model . graphic . composition . relations . Component Of Ċ import Ġde . u ul m . se . co uched it . model . hot spot . Hot Spot Definition Ċ import Ġde . u ul m . se . co uched it . processing . common . controller . Modification Port Ċ import Ġde . u ul m . se . co uched it . processing . common . model . diff collection . Timed Diff Collection Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof Ġa Ġ[ Modification Port ] Ġwhich Ġdoes Ġnot Ġdo Ġautomated Ġprocessing , Ġbut Ġinstead Ġpub lishes Ġactions Ġmade Ġin Ċ Ġ* Ġthe Ġfront - end Ġto Ġthe Ġrest Ġof Ġthe Ġapplication , Ġand Ġapplies Ġincoming Ġoperations Ġto Ġthe Ġconcrete Ġvisual Ġrepresentation Ċ Ġ* Ġin Ġthe Ġeditor . Ċ Ġ*/ Ċ @ Singleton Ċ internal Ġclass ĠCanvas Modification Port Ġ: ĠMod ification Port Ġ{ ĊĠĠĠ Ġoverride Ġval Ġid : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Canvas _${ UUID . randomUUID () }" ĊĊĠĠĠ Ġprivate Ġval Ġob servers Ġ= Ġmutable ListOf < Observer < Timed Diff Collection >>() ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= Ġmutable Map Of < Observer < Timed Diff Collection >, ĠDis posable >() ĊĊĠĠĠ Ġinternal Ġval Ġoutput Subject Ġ= ĠBehavior Subject . create < Timed Diff Collection >() ĊĊĠĠĠ Ġprivate Ġvar Ġinput : ĠObservable < Timed Diff Collection >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( observer Ġin Ġthis . ob servers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables [ observer ]?. dispose () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. subscribe ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconsume s (): ĠList < Class < out ĠElement >> Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph ic Object :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection End :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase Suggestion :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSuggest ion For :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComponent Of :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHot Spot Definition :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Bag :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAttributes For :: class . java ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Output (): ĠObservable < Timed Diff Collection > Ġ= Ġthis . output Subject . hide () ĊĊĠĠĠ Ġoverride Ġfun Ġconnect Input To ( diff Publisher : ĠObservable < Timed Diff Collection >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . input Ġ= Ġdiff Publisher ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġadd Observer ( observer : ĠObserver < Timed Diff Collection >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . input ?. subscribe ( observer ) ĊĊĠĠĠĠĠĠĠ Ġthis . ob servers . add ( observer ) ĊĠĠĠ Ġ} Ċ } Ċ