package Ġclub . sk 1 er . element a . components . input Ċ Ċ import Ġclub . sk 1 er . element a . constraints . Width Constraint Ċ import Ġclub . sk 1 er . element a . dsl . min Max Ċ import Ġclub . sk 1 er . element a . dsl . pixels Ċ import Ġclub . sk 1 er . element a . dsl . width Ċ import Ġclub . sk 1 er . mods . core . universal . Universal Graphics Handler Ċ import Ġjava . awt . Color Ċ Ċ open Ġclass ĠUIT ext Input Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġplaceholder : ĠString Ġ= Ġ"", ĊĠĠĠ Ġshadow : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġselection BackgroundColor : ĠColor Ġ= ĠColor . WHITE , ĊĠĠĠ Ġselection ForegroundColor : ĠColor Ġ= ĠColor ( 6 4 , Ġ 1 3 9 , Ġ 2 2 9 ), ĊĠĠĠ Ġallow Inactive Selection : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġinactive Selection BackgroundColor : ĠColor Ġ= ĠColor ( 1 7 6 , Ġ 1 7 6 , Ġ 1 7 6 ), ĊĠĠĠ Ġinactive Selection ForegroundColor : ĠColor Ġ= ĠColor . WHITE Ċ ) Ġ: ĠAbstract TextInput ( ĊĠĠĠ Ġplaceholder , ĊĠĠĠ Ġshadow , ĊĠĠĠ Ġselection BackgroundColor , ĊĠĠĠ Ġselection ForegroundColor , ĊĠĠĠ Ġallow Inactive Selection , ĊĠĠĠ Ġinactive Selection BackgroundColor , ĊĠĠĠ Ġinactive Selection ForegroundColor Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠminWidth : ĠWidth Constraint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠmaxWidth : ĠWidth Constraint ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġplaceholder Width Ġ= Ġplaceholder . width () ĊĊĠĠĠ Ġfun Ġset Min Width ( constraint : ĠWidth Constraint ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġconstraint ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Max Width ( constraint : ĠWidth Constraint ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġconstraint ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetText () Ġ= Ġtext ual Lines . first (). text ĊĊĠĠĠ Ġoverride Ġfun Ġtext To Lines ( text : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( text . replace ('\ n ', Ġ' Ġ')) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Into View ( pos : ĠLine Position ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġpos . column ĊĠĠĠĠĠĠĠ Ġval Ġline Text Ġ= ĠgetText () ĊĠĠĠĠĠĠĠ Ġif Ġ( column Ġ< Ġ 0 Ġ|| Ġcolumn Ġ> Ġline Text . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Before Position Ġ= Ġline Text . substring ( 0 , Ġcolumn ). width () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetText (). width () Ġ< Ġget Width () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Scrolling Offset Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Scrolling Offset Ġ> Ġwidth Before Position Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Scrolling Offset Ġ= Ġwidth Before Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Before Position Ġ- Ġhorizontal Scrolling Offset Ġ> Ġget Width () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Scrolling Offset Ġ= Ġwidth Before Position Ġ- Ġget Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscreen Pos To Visual Pos ( x : ĠFloat , Ġy : ĠFloat ): ĠLine Position Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget X Pos Ġ= Ġx Ġ+ Ġhorizontal Scrolling Offset ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent X Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġval Ġline Ġ= ĠgetText () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġline . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Width Ġ= Ġline [ i ]. width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current X Ġ+ Ġ( char Width Ġ/ Ġ 2 ) Ġ>= Ġtarget X Pos ) Ġreturn ĠLine Position ( 0 , Ġi , Ġis Visual Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent X Ġ+= Ġchar Width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLine Position ( 0 , Ġline . length , Ġis Visual Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġre calculate Dimensions () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( min Width Ġ!= Ġnull Ġ&& ĠmaxWidth Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġif Ġ(! has Text () Ġ&& Ġ! this . active ) Ġplaceholder Width Ġelse ĠgetText (). width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Width ( width . pixels (). min Max ( min Width !! , ĠmaxWidth !! )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsplit Text For Wr apping ( text : ĠString , Ġmax LineWidth : ĠFloat ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Enter Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivate Action ( getText ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġbefore Draw () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! active Ġ&& Ġ! has Text ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUniversal Graphics Handler . draw String ( placeholder , Ġget Left (), Ġget Top (), Ġget Color (). rgb , Ġshadow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . draw () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġline Text Ġ= ĠgetText () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Selection ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent X Ġ= Ġget Left () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Component . hide ( instant ly Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection Start (). is At Line Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Selection Text Ġ= Ġline Text . substring ( 0 , Ġselection Start (). column ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Un selected Text ( pre Selection Text , Ġcurrent X , Ġrow Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent X Ġ+= Ġpre Selection Text . width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Text Ġ= Ġline Text . substring ( selection Start (). column , Ġselection End (). column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Text Width Ġ= Ġselected Text . width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Selected Text ( selected Text , Ġcurrent X , Ġcurrent X Ġ+ Ġselected Text Width , Ġrow Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent X Ġ+= Ġselected Text Width ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection End (). is At Line End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Un selected Text ( line Text . substring ( selection End (). column ), Ġcurrent X , Ġrow Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Component . un hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( cursor Pos X , Ġ_) Ġ= Ġcursor . to Screen Pos () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Component . set X ( cursor Pos X . pixels ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Un selected Text ( line Text , Ġget Left (), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . draw () ĊĠĠĠ Ġ} Ċ } Ċ