package Ġio . frame d . linker Ċ Ċ import Ġde . west erm ann . k observe . property . property Ċ import Ġio . frame d . framework .* Ċ import Ġio . frame d . framework . linker . Connection Link er Ċ import Ġio . frame d . framework . linker . Link er Ċ import Ġio . frame d . framework . linker . Link er Info Connection Ċ import Ġio . frame d . framework . linker . Link er Manager Ċ import Ġio . frame d . framework . model . Model Connection Ċ import Ġio . frame d . framework . pict o gram .* Ċ import Ġio . frame d . framework . util . track History Ċ import Ġio . frame d . framework . view . Frame d Icon Ċ import Ġio . frame d . framework . view . sidebar Ċ import Ġio . frame d . model . Ful fillment Ċ Ċ /** Ċ Ġ* Ġ@ author Ġl ars Ċ Ġ*/ Ċ Ċ class ĠF ul fillment Link er ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmodel : ĠF ul fillment , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmanager : ĠConnection Manager Ċ ) Ġ: ĠConnection Link er < Ful fillment > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġname Property Ġ= Ġproperty ( model :: name ). track History () ĊĠĠĠ Ġoverride Ġval Ġname Ġby Ġname Property ĊĊĠĠĠ Ġoverride Ġval Ġsource Id Property Ġ= Ġproperty ( model :: source Id ). track History () ĊĠĠĠ Ġoverride Ġval Ġtarget Id Property Ġ= Ġproperty ( model :: target Id ). track History () ĊĊĠĠĠ Ġoverride Ġval Ġp ict o gram Ġ= Ġconnection ( source Id Property , Ġtarget Id Property ) Ġ{ ĊĠĠĠĠĠĠĠ Ġline ( Connection Line . Type . RECT ANGLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= ĠColor ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsource Style Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtarget Style Ġ= Ġconnection End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfold back Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Style Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= ĠColor ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠColor ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsidebar Ġ= Ġsidebar Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle (" Ful fillment ") ĊĊĠĠĠĠĠĠĠ Ġgroup (" General ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput (" Name ", Ġname Property ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcontext Menu Ġ= Ġdefault ContextMenu () ĊĊĊĠĠĠ Ġoverride Ġfun Ġupdate Label Bindings () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġp ict o gram . labels . map NotNull Ġ{ Ġit . id Ġ}. distinct (). toSet () ĊĠĠĠĠĠĠĠ Ġif Ġ(" name " Ġ! in Ġids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp ict o gram . labels Ġ+= ĠLabel ( id Ġ= Ġ" name ", Ġposition Ġ= Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( label Ġin Ġp ict o gram . labels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( label . text Property . is Bound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text Property . unbind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . id Ġ== Ġ" name " Ġ-> Ġlabel . text Property . bind Bid irectional ( name Property ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . update Label Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠLink er Manager . setup ( this , ĠInherit ance Link er ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠLink er Info Connection Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġinfo Ġ= ĠElement Info (" Ful fillment ", ĠFrame d Icon . FUL FILL MENT ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Start ( source : ĠLink er < *, Ġ* >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsource Ġis ĠClass Link er Ġ|| Ġsource Ġis ĠComp artment Link er Ġ|| Ġsource Ġis ĠRole Type Link er ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Create ( source : ĠLink er < *, Ġ* >, Ġtarget : ĠLink er < *, Ġ* >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( source Ġ! is ĠRole Type Link er ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcan Start ( source ) Ġ&& Ġtarget Ġis ĠRole Type Link er ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcan Start ( source ) Ġ&& Ġtarget Ġis ĠRole Type Link er Ġ&& Ġsource . parent Ġ== Ġtarget . parent . parent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Link er For ( element : ĠModel Connection ): ĠBoolean Ġ= Ġelement Ġis ĠF ul fillment ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Link er For ( linker : ĠLink er < *, Ġ* >): ĠBoolean Ġ= Ġlinker Ġis ĠF ul fillment Link er ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Model ( source : ĠLong , Ġtarget : ĠLong ): ĠModel Connection Ġ= ĠF ul fillment ( source , Ġtarget ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Link er ( model : ĠModel Connection , Ġconnection Manager : ĠConnection Manager ): ĠConnection Link er < *> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Ġis ĠF ul fillment ) ĠF ul fillment Link er ( model , Ġconnection Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġthrow ĠIllegalArgumentException (" Cannot Ġcreate Ġ${ info . name } Ġlinker Ġfor Ġmodel Ġelement Ġ${ model :: class }") ĊĠĠĠ Ġ} Ċ }