package Ġcom . so y wiz . k orge . new ui Ċ Ċ import Ġcom . so y wiz . k orge . view .* Ċ Ċ inline Ġfun ĠContainer . ui Scroll able Area ( Ċ ĉ width : ĠNumber Ġ= Ġ 2 5 6 . 0 , Ċ ĉ height : ĠNumber Ġ= Ġ 2 5 6 . 0 , Ċ ĉ content Width : ĠNumber Ġ= Ġ 5 1 2 . 0 , Ċ ĉ content Height : ĠNumber Ġ= Ġ 5 1 2 . 0 , Ċ ĉ button Size : ĠNumber Ġ= Ġ 3 2 . 0 , Ċ ĉ vertical Scroll : ĠBoolean Ġ= Ġtrue , Ċ ĉ horizontal Scroll : ĠBoolean Ġ= Ġtrue , Ċ ĉ skin : ĠU IS kin Ġ= Ġdefault UIS kin , Ċ ĉ config : ĠU IS c rollable Area . () Ġ-> ĠUnit Ġ= Ġ{}, Ċ ĉ block : ĠContainer . () Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠU IS c rollable Area Ġ= ĠU IS c rollable Area ( Ċ ĉ width . toDouble (), Ġheight . toDouble (), Ġcontent Width . toDouble (), Ġcontent Height . toDouble (), Ġbutton Size . toDouble (), Ġvertical Scroll , Ġhorizontal Scroll , Ġskin Ċ ). also Ġ{ Ġadd Child ( it ) Ġ}. also ( config ). also Ġ{ Ġblock ( it . container ) Ġ} Ċ Ċ // Ġ@ TODO : ĠOpt imize Ġthis ! Ċ // Ġ@ TODO : ĠAdd Ġan Ġactual Container Ġ= Ġthis Ġinside ĠContainer Ċ open Ġclass ĠU IS c rollable Area ( Ċ ĉ width : ĠDouble Ġ= Ġ 2 5 6 . 0 , Ċ ĉ height : ĠDouble Ġ= Ġ 2 5 6 . 0 , Ċ ĉ content Width : ĠDouble Ġ= Ġ 5 1 2 . 0 , Ċ ĉ content Height : ĠDouble Ġ= Ġ 5 1 2 . 0 , Ċ ĉ button Size : ĠDouble Ġ= Ġ 3 2 . 0 , Ċ ĉ vertical Scroll : ĠBoolean Ġ= Ġtrue , Ċ ĉ horizontal Scroll : ĠBoolean Ġ= Ġtrue , Ċ ĉ skin : ĠU IS kin Ġ= ĠDefault UIS kin Ċ ) Ġ: ĠUIView ( width , Ġheight ) Ġ{ Ċ ĉ var Ġbutton Size Ġby Ġui Observable ( button Size ) Ġ{ Ġupdated Size () Ġ} ĊĊ ĉ var Ġcontent Width Ġby Ġui Observable ( content Width ) Ġ{ Ġupdated Size () Ġ} Ċ ĉ var Ġcontent Height Ġby Ġui Observable ( content Height ) Ġ{ Ġupdated Size () Ġ} ĊĊ ĉ var Ġvertical Scroll Ġby Ġui Observable ( vertical Scroll ) Ġ{ Ġupdated Size () Ġ} Ċ ĉ var Ġhorizontal Scroll Ġby Ġui Observable ( horizontal Scroll ) Ġ{ Ġupdated Size () Ġ} ĊĊ ĉ val Ġclient Width Ġget () Ġ= Ġif Ġ( vertical Scroll ) Ġwidth Ġ- Ġbutton Size Ġelse Ġwidth Ċ ĉ val Ġclient Height Ġget () Ġ= Ġif Ġ( horizontal Scroll ) Ġheight Ġ- Ġbutton Size Ġelse Ġheight ĊĊ ĉ val Ġclip Container Ġ= Ġclip Container ( client Width , Ġclient Height ) Ċ ĉ val Ġcontainer Ġ= Ġclip Container . fixed Size Container ( content Width , Ġcontent Height ) Ċ ĉ val Ġhor Scroll Ġ= Ġui ScrollBar ( width , Ġbutton Size , Ġskin Ġ= Ġskin ). also Ġ{ Ġit . onChange Ġ{ Ġmoved () Ġ} Ġ} Ċ ĉ val Ġver Scroll Ġ= Ġui ScrollBar ( button Size , Ġheight , Ġskin Ġ= Ġskin ). also Ġ{ Ġit . onChange Ġ{ Ġmoved () Ġ} Ġ} ĊĊ ĉ init Ġ{ Ċĉ ĉ updated Size () Ċ ĉ } ĊĊ ĉ override Ġfun Ġupdated Size () Ġ{ Ċĉ ĉ super . updated Size () ĊĊĉ ĉ hor Scroll . total Size Ġ= Ġcontent Width Ċĉ ĉ hor Scroll . pageSize Ġ= Ġclient Width Ċĉ ĉ hor Scroll . step Size Ġ= Ġclient Width Ġ/ Ġ 4 ĊĊĉ ĉ ver Scroll . total Size Ġ= Ġcontent Height Ċĉ ĉ ver Scroll . pageSize Ġ= Ġclient Height Ċĉ ĉ ver Scroll . step Size Ġ= Ġclient Height Ġ/ Ġ 4 ĊĊĉ ĉ clip Container . size ( client Width , Ġclient Height ) Ċĉ ĉ container . size ( content Width , Ġcontent Height ) ĊĊĉ ĉ hor Scroll . size ( client Width , Ġbutton Size ). position ( 0 , Ġheight Ġ- Ġbutton Size ). also Ġ{ Ġit . visible Ġ= Ġhorizontal Scroll Ġ} Ċĉ ĉ ver Scroll . size ( button Size , Ġclient Height ). position ( width Ġ- Ġbutton Size , Ġ 0 ). also Ġ{ Ġit . visible Ġ= Ġvertical Scroll Ġ} Ċ ĉ } ĊĊ ĉ protected Ġfun Ġmoved () Ġ{ Ċĉ ĉ // println ("" Ġ+ Ġver Scroll . current Ġ+ Ġ" Ġ:: Ġ" Ġ+ Ġver Scroll . total Size Ġ+ Ġ" Ġ:: Ġ" Ġ+ Ġver Scroll . pageSize Ġ+ Ġ" Ġ:: Ġ" Ġ+ Ġver Scroll . step Size ) Ċĉ ĉ container . x Ġ= Ġ- hor Scroll . current Ċĉ ĉ container . y Ġ= Ġ- ver Scroll . current Ċ ĉ } Ċ } Ċ