package Ġde . fl ap do od le . k fx . graph . nodes Ċ Ċ import Ġde . fl ap do od le . k fx . bindings . Bindings Ċ import Ġde . fl ap do od le . k fx . bindings . map ToDouble Ċ import Ġde . fl ap do od le . k fx . types . Angle At Point 2 D Ċ import Ġjavafx . beans . property . Double Property Ċ import Ġjavafx . beans . property . ReadOnly Object Wrapper Ċ import Ġjavafx . beans . property . Simple Double Property Ċ import Ġjavafx . geometry . Bounds Ċ import Ġjavafx . geometry . Point 2 D Ċ import Ġjavafx . scene . Group Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . input . MouseEvent Ċ import Ġjavafx . scene . paint . Color Ċ import Ġjavafx . scene . shape . Circle Ċ import Ġjavafx . scene . shape . Line Ċ import Ġjavafx . scene . transform . Rotate Ċ import Ġjavafx . scene . transform . Transform Ċ Ċ class ĠConnector ( val Ġcontent : ĠNode Ġ= ĠCircle ( 1 0 . 0 , ĠColor . GRE Y )) Ġ: ĠGroup () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġangle Property : ĠDouble Property Ġ= Ġobject Ġ: ĠSimple Double Property ( 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvalid ated () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġconnection Property : ĠReadOnly Object Wrapper < Angle At Point 2 D > Ġ= ĠReadOnly Object Wrapper () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren . addAll ( content ) ĊĊĠĠĠĠĠĠĠ Ġval Ġline Ġ= ĠLine (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds In Parent Property Ġ= Ġcontent . bounds In Local Property () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart X Property (). bind ( bounds In Parent Property . map ToDouble ( Bounds :: get Center X )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Y Property (). bind ( bounds In Parent Property . map ToDouble ( Bounds :: get Center Y )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend X Property (). bind ( bounds In Parent Property . map ToDouble ( Bounds :: getMax X )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Y Property (). bind ( bounds In Parent Property . map ToDouble ( Bounds :: get Center Y )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchildren . addAll ( line ) ĊĠĠĠĠĠĠĠ Ġtransforms . addAll ( Rotate (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġangle Property (). bind ( angle Property ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds In Parent Property Ġ= Ġcontent . bounds In Parent Property () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpivot X Property (). bind ( bounds In Parent Property . map ToDouble ( Bounds :: get Center X )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Y Property (). bind ( bounds In Parent Property . map ToDouble ( Bounds :: get Center Y )) ĊĠĠĠĠĠĠĠ Ġ}) Ċ Ċ // ĠĠĠĠĠĠĠ Ġadd EventHandler ( MouseEvent . MOUSE _ CLICK ED ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġangle ( angle ()+ 1 0 . 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġit . consume () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġend Point : ĠBind ings . Merge 2 Double < Point 2 D > Ġ= ĠBind ings . map Double ( line . end X Property (), Ġline . end Y Property (), Ġ:: Point 2 D ) ĊĠĠĠĠĠĠĠ Ġval Ġend Point In Parent Ġ= ĠBind ings . map < Transform , ĠPoint 2 D , ĠPoint 2 D >( local To Parent Transform Property (), Ġend Point , ĠTransform :: transform ) ĊĠĠĠĠĠĠĠ Ġval Ġpoint With Angle Ġ= ĠBind ings . map ( end Point In Parent , Ġangle Property ) Ġ{ Ġa , Ġb Ġ-> ĠAngle At Point 2 D ( a , Ġb . toDouble ()) Ġ} ĊĠĠĠĠĠĠĠ Ġconnection Property . bind ( point With Angle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġangle ( value : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġangle Property . set ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġangle () Ġ= Ġangle Property . get () ĊĠĠĠ Ġfun Ġangle Property () Ġ= Ġangle Property ĊĊĠĠĠ Ġfun Ġconnection Point () Ġ= Ġconnection Property . get () ĊĠĠĠ Ġfun Ġconnection Point Property () Ġ= Ġconnection Property . readOnly Property Ċ }