/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠRol and ĠW ie se Ċ Ġ* ĠThis Ġsoftware Ġis Ġlicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġsoftware Ġexcept Ċ Ġ* Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 . Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ċ Ġ* Ġ Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġk ray on . editor . base . style Ċ Ċ import Ġcom . y works . y files . geometry . IM utable Rectangle Ċ import Ġcom . y works . y files . geometry . Oriented Rectangle Ċ import Ġcom . y works . y files . geometry . Rect D Ċ import Ġcom . y works . y files . geometry . Size D Ċ import Ġcom . y works . y files . graph . IG raph Ċ import Ġcom . y works . y files . graph . IL abel Ċ import Ġcom . y works . y files . graph . IN ode Ċ import Ġcom . y works . y files . graph . label models . Free Node Label Model Ċ import Ġcom . y works . y files . graph . label models . IL abel Model Parameter Finder Ċ import Ġcom . y works . y files . view . input .* Ċ Ċ class ĠLabel Res hape Handle Provider ( val Ġlabel : IL abel , Ġpositions : ĠHandle Positions ): I Res hape Handle Provider Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlabel Mutable Rect Ġ= ĠLabel Mutable Rectangle ( label ) ĊĠĠĠ Ġprivate Ġval Ġdelegate Provider Ġ= ĠRectangle Res hape Handle Provider ( label Mutable Rect , Ġpositions ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Available Handles ( context : ĠI Input Mode Context ): ĠHandle Positions Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġdelegate Provider . get Available Handles ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Handle ( context : ĠI Input Mode Context , Ġposit on : ĠHandle Positions ): ĠI Handle Ġ{ ĊĠĠĠĠĠĠĠ Ġlabel Mutable Rect . graph Ġ= Ġcontext . graph ĊĠĠĠĠĠĠĠ Ġreturn Ġdelegate Provider . get Handle ( context , Ġposit on ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠLabel Mutable Rectangle ( val Ġlabel : ĠI Label ) Ġ: ĠI Mutable Rectangle Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġgraph : IG raph ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Label Bounds () Ġ= Ġlabel . layout Parameter . model . get Geometry ( label , Ġlabel . layout Parameter ). bounds !! ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Y (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Label Bounds (). y ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset X ( x : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Bounds Ġ= Ġget Label Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Label Bounds ( x , Ġold Bounds . y , Ġold Bounds . width , Ġold Bounds . height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Height (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Label Bounds (). height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget X (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Label Bounds (). x ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Y ( y : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Bounds Ġ= Ġget Label Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Label Bounds ( old Bounds . x , Ġy , Ġold Bounds . width , Ġold Bounds . height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Width (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Label Bounds (). width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Width ( width : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Bounds Ġ= Ġget Label Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Label Bounds ( old Bounds . x , Ġold Bounds . y , Ġwidth , Ġold Bounds . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph !!. setLabel PreferredSize ( label , ĠSize D ( width , old Bounds . height )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Height ( height : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Bounds Ġ= Ġget Label Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Label Bounds ( old Bounds . x , Ġold Bounds . y , Ġold Bounds . width , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph !!. setLabel PreferredSize ( label , ĠSize D ( old Bounds . width , height )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Label Bounds ( x : Double , Ġy : Double , Ġwidth : Double , Ġheight : Double ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Finder Ġ= Ġlabel . layout Parameter . model Ġas ? ĠI Label Model Parameter Finder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Param Ġ= Ġif ( param Finder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Finder . find Best Parameter ( label , Ġlabel . layout Parameter . model , ĠOrient ed Rectangle ( Rect D ( x , y , width , height ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFree Node Label Model . INSTANCE . create Canonical Parameter (( label . owner Ġas ĠI Node ). layout . to Rect D (), ĠOrient ed Rectangle ( Rect D ( x , y , width , Ġheight ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph !!. setLabel Layout Parameter ( label , Ġnew Param ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }