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 . Material Icon Ċ import Ġio . frame d . framework . view . context Menu Ċ import Ġio . frame d . framework . view . sidebar Ċ import Ġio . frame d . model . Destroy Relationship Ċ Ċ /** Ċ Ġ* ĠModel Ġclass Ġfor Ġan Ġc rom Ġcomp artment . Ċ Ġ* Ċ Ġ* Ġ@ author ĠSeb astian Ċ Ġ*/ Ċ class ĠDestroy Relationship Link er ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmodel : ĠDestroy Relationship , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmanager : ĠConnection Manager Ċ ) Ġ: ĠConnection Link er < Destroy Relationship > Ġ{ ĊĊĠĠĠ Ġ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 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdash Array Ġ= ĠarrayOf ( 3 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsource Style Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtarget Style Ġ= Ġconnection End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfold back Ġ= Ġ 0 . 8 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Style Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= ĠColor ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠColor ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsidebar Ġ= Ġsidebar Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle (" Destroy ĠRelationship ") ĊĊĠĠĠĠĠĠĠ Ġgroup (" General ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput (" Name ", Ġname Property ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgroup (" Structure ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton (" Convert Ġto Ġcreate ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġsource Id Property . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġtarget Id Property . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġmanager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . create Connection ( target , Ġsource , ĠCreate Relationship Link er . info ). focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcontext Menu Ġ= Ġcontext Menu Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Connection " ĊĠĠĠĠĠĠĠ Ġadd Item ( Material Icon . DELETE , Ġ" Delete ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 , ĠRelationship Link er ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠLink er Info Connection Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġinfo Ġ= ĠElement Info (" Destroy ĠRelationship ", ĠFrame d Icon . EVENT REL ATION SHIP ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Start ( source : ĠLink er < *, Ġ* >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsource Ġis ĠRole Type Link er Ġ|| Ġsource Ġis ĠScene Link er ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Create ( source : ĠLink er < *, Ġ* >, Ġtarget : ĠLink er < *, Ġ* >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcan Start ( source ) Ġ&& Ġtarget Ġis ĠEvent Link er Ġ&& Ġsource Ġis Sibling Ġtarget ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Link er For ( element : ĠModel Connection ): ĠBoolean Ġ= Ġelement Ġis ĠDestroy Relationship ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Link er For ( linker : ĠLink er < *, Ġ* >): ĠBoolean Ġ= Ġlinker Ġis ĠDestroy Relationship Link er ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Model ( source : ĠLong , Ġtarget : ĠLong ): ĠModel Connection Ġ= ĠDestroy Relationship ( source , Ġtarget ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Link er ( model : ĠModel Connection , Ġconnection Manager : ĠConnection Manager ): ĠConnection Link er < *> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Ġis ĠDestroy Relationship ) ĠDestroy Relationship Link er ( model , Ġconnection Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġthrow ĠIllegalArgumentException (" Cannot Ġcreate Ġ${ info . name } Ġlinker Ġfor Ġmodel Ġelement Ġ${ model :: class }") ĊĠĠĠ Ġ} Ċ } Ċ