package Ġorg . ba ole . oned . editor Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . text . style . Relative Size Span Ċ import Ġandroid . text . style . Sub script Span Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ Ċ class ĠEditor Action View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠAppCompat TextView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Listener : Ġ(( Story EditText , ĠAction ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Action : ĠAction ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Editor : ĠStory EditText ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(:: m Action . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. invoke ( m Editor , Ġm Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ActionListener ( listener : Ġ( Story EditText , ĠAction ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġbind ( editor : ĠStory EditText , Ġaction : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Action Ġ= Ġaction ĊĠĠĠĠĠĠĠ Ġthis . m Editor Ġ= Ġeditor ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action . m Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction . TYPE _ ICON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Icon () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction . TYPE _ TEXT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction . TYPE _ ICON _ AND _ TEXT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Icon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspan Text Ġ= ĠSp ann able String ( listOf ( m Action . m Label Ġ?: Ġ"", Ġm Action . m Sub Label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ""). join ToString ("")) ĊĠĠĠĠĠĠĠ Ġvar Ġlabel Length Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġm Action . m Label ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Length Ġ= Ġit . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Text . set Span ( ForegroundColor Span ( Color . parse Color ("# aaaa aa ")), Ġ 0 , Ġlabel Length , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Text . set Span ( Relative Size Span ( 1 . 5 f ), Ġ 0 , Ġlabel Length , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Action . m Sub Label ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Text . set Span ( Sub script Span (), Ġlabel Length , Ġlabel Length Ġ+ Ġit . length , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġspan Text ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Icon () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( m Action . m Icon Id , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ }