package Ġme . maj ia j ie . fv fa . extensions Ċ Ċ import Ġme . maj ia j ie . fv fa . bean . Element Ċ import Ġme . maj ia j ie . fv fa . bean . View Info Ċ import Ġjava . awt . Toolkit Ċ import Ġjava . awt . datat rans fer . String Selection Ċ Ċ /** Ċ Ġ* Ġ å¤įåĪ¶ åŃĹç¬¦ä¸² åĪ° åī ª è´ ´ æĿ¿ Ċ Ġ*/ Ċ fun ĠString . to Clipboard () Ġ{ ĊĠĠĠ Ġval Ġclip Ġ= ĠToolkit . getDefault Toolkit (). system Clipboard ĊĠĠĠ Ġval Ġt Text Ġ= ĠString Selection ( this ) ĊĠĠĠ Ġclip . set Contents ( t Text , Ġnull ) Ċ } Ċ Ċ /** Ċ Ġ* Ġid è½¬æį¢ åıĺéĩı åĲį Ċ Ġ* Ġ@ param Ġadd M Ġæĺ¯åĲ¦ æ·»åĬł åīį ç¼Ģ Ġ' m ' Ċ Ġ*/ Ċ fun ĠString . id 2 FieldName ( add M : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġval Ġnames Ġ= Ġthis . split ("_ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty Ġ}. to Typed Array () ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ Ġif Ġ( add M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġm Aa Bb Cc ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġnames . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" m ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( names [ i ]. first To UpperCase ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġaa Bb Cc ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġnames . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( names [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( names [ i ]. first To UpperCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ /** Ċ Ġ* Ġ é¦ĸ åŃĹ æ¯į å¤§ åĨĻ Ċ Ġ*/ Ċ fun ĠString . first To UpperCase (): ĠString Ġ{ ĊĠĠĠ Ġval Ġch Ġ= Ġthis . toCharArray () ĊĠĠĠ Ġif Ġ( ch [ 0 ] Ġin Ġ' a ' .. ' z ') Ġ{ ĊĠĠĠĠĠĠĠ Ġch [ 0 ] Ġ= Ġ( ch [ 0 ]. toInt () Ġ- Ġ 3 2 ). to Char () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠString ( ch ) Ċ } Ċ Ċ /** Ċ Ġ* ĠElement Ġto ĠView Info Ċ Ġ*/ Ċ fun ĠList < Element >. to View InfoList () Ġ= Ġthis . map Ġ{ ĠView Info ( true , Ġit ) Ġ} Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ Kotlin ä»£çłģ Ċ Ġ*/ Ċ fun ĠList < View Info >. generate KT Code ( add M : ĠBoolean , Ġis Private : ĠBoolean , Ġis Local Variable : ĠBoolean , Ġroot View : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis . filter Ġ{ Ġit . isChecked Ġ}. join ToString ("\ n ") Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Local Variable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . get KT Local Variable String ( add M , Ġroot View ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . get KT String ( add M , Ġis Private , Ġroot View ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ Kotlin ĠViewHolder ä»£çłģ Ċ Ġ*/ Ċ fun ĠList < View Info >. generate KT ViewHolder Code ( layout Name : ĠString , ĠviewHolder Name : ĠString , Ġadd M : ĠBoolean , Ġis Private : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġfield Str Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ}. join ToString ("\ n \ t ") Ġ{ Ġit . get KT Val Field String ( add M , Ġis Private ) Ġ} ĊĠĠĠ Ġval Ġfind View Str Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ}. join ToString ("\ n \ t ") Ġ{ Ġit . get KT Find View String ( add M , Ġ" item View ") Ġ} ĊĊĠĠĠ Ġreturn Ġ""" Ċ class Ġ${ view Holder Name } ViewHolder Ġprivate Ġconstructor ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠ Ġ$ field Str ĊĠĠĠĠĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ Ġ$ find View Str ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( parent : ĠViewGroup ): Ġ${ view Holder Name } ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout .$ layout Name , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ${ view Holder Name } ViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } """. trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* Ġä»İ å¸ĥå±Ģ åĲį çĶŁæĪĲ Kotlin ĠViewHolder ä»£çłģ ( View Binding ) Ċ Ġ*/ Ċ fun ĠString . generate KT ViewHolder View Binding Code ( view Holder Name : ĠString ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġbinding ClassName Ġ= Ġthis . id 2 FieldName ( false ). first To UpperCase () Ġ+ Ġ" Binding " ĊĊĠĠĠ Ġreturn Ġ""" Ċ class Ġ${ view Holder Name } ViewHolder Ġprivate Ġconstructor ( val Ġbinding : Ġ$ binding ClassName ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( parent : ĠViewGroup ): Ġ${ view Holder Name } ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġ$ binding ClassName . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ${ view Holder Name } ViewHolder ( binding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } """. trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ Kotlin ĠE po xy Ġmodel ä»£çłģ Ċ Ġ*/ Ċ fun ĠList < View Info >. generate K TE po xy Model Code ( layout Name : ĠString , Ġmodel Name : ĠString , Ġadd M : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġfield Str Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ}. join ToString ("\ n \ t ") Ġ{ Ġit . get K TL ate init Field String ( add M , Ġfalse ) Ġ} ĊĠĠĠ Ġval Ġfind View Str Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ}. join ToString ("\ n \ t ") Ġ{ Ġit . get KT Find View String ( add M , Ġ" item View ") Ġ} ĊĊĠĠĠ Ġreturn Ġ""" Ċ @ E po xy Model Class Ċ abstract Ġclass Ġ${ model Name } Model Ġ: ĠE po xy Model With Holder < ${ model Name } Model .${ model Name } ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( holder : Ġ${ model Name } ViewHolder ) Ġ{ ĊĠĠĠĠĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠgetDefault Layout (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout .$ layout Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass Ġ${ model Name } ViewHolder Ġ: ĠE po xy Holder () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠitemView : ĠView ĊĠĠĠĠĠĠĠ Ġ$ field Str ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind View ( item View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item View Ġ= ĠitemView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ find View Str ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } """. trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* Ġä»İ å¸ĥå±Ģ åĲį çĶŁæĪĲ Kotlin ĠE po xy Ġmodel ä»£çłģ ( View Binding ) Ċ Ġ*/ Ċ fun ĠString . generate K TE po xy Model View Binding Code ( model Name : ĠString ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġbinding ClassName Ġ= Ġthis . id 2 FieldName ( false ). first To UpperCase () Ġ+ Ġ" Binding " ĊĊĠĠĠ Ġreturn Ġ""" Ċ @ E po xy Model Class Ċ abstract Ġclass Ġ${ model Name } Model Ġ: ĠE po xy Model With Holder < ${ model Name } Model .${ model Name } ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( holder : Ġ${ model Name } ViewHolder ) Ġ{ ĊĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠgetDefault Layout (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout .$ this ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass Ġ${ model Name } ViewHolder Ġ: ĠE po xy Holder () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠitemView : ĠView ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġbinding : Ġ$ binding ClassName ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind View ( item View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item View Ġ= ĠitemView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . binding Ġ= Ġ$ binding ClassName . bind ( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } """. trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ Java ä»£çłģ Ċ Ġ*/ Ċ fun ĠList < View Info >. generate Java Code ( add M : ĠBoolean , Ġroot View : ĠString , Ġis Private : ĠBoolean , Ġis Target 2 6 : ĠBoolean , Ġis Local Variable : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠ Ġval Ġinfos Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( is Local Variable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinfos . join ToString ("\ n ") Ġ{ Ġit . get Java Local Variable String ( add M , Ġis Target 2 6 , Ġroot View ) Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Str Ġ= Ġinfos . join ToString ("\ n ") Ġ{ Ġit . get Java Field String ( add M , Ġis Private ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfind View Str Ġ= Ġinfos . join ToString ("\ n ") Ġ{ Ġit . get Java Find View String ( add M , Ġis Target 2 6 , Ġroot View ) Ġ} ĊĠĠĠĠĠĠĠ Ġ"$ field Str \ n \ n $ find View Str " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ Java ĠViewHolder ä»£çłģ Ċ Ġ*/ Ċ fun ĠList < View Info >. generate Java ViewHolder Code ( layout Name : ĠString , ĠviewHolder Name : ĠString , Ġadd M : ĠBoolean , Ġis Private : ĠBoolean , Ġis Target 2 6 : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġinfos Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ} ĊĊĠĠĠ Ġval Ġfield Str Ġ= Ġinfos . join ToString ("\ n ĠĠĠ Ġ") Ġ{ Ġit . get Java Field String ( add M , Ġis Private ) Ġ} ĊĠĠĠ Ġval Ġfind View Str Ġ= Ġinfos . join ToString ("\ n \ t ") Ġ{ Ġit . get Java Find View String ( add M , Ġis Target 2 6 , Ġ" item View ") Ġ} ĊĊĠĠĠ Ġreturn Ġ""" Ċ static Ġclass Ġ${ view Holder Name } ViewHolder Ġextends ĠRecyclerView . ViewHolder Ġ{ ĊĊĠĠĠ Ġpublic Ġstatic Ġ${ view Holder Name } ViewHolder Ġnew Instance ( ViewGroup Ġparent ) Ġ{ ĊĠĠĠĠĠĠĠ ĠView Ġview Ġ= ĠLayoutInflater . from ( parent . getContext ()). inflate ( R . layout .$ layout Name , Ġparent , Ġfalse ); ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Ġ${ view Holder Name } ViewHolder ( view ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ$ field Str ĊĊĠĠĠ Ġprivate Ġ${ view Holder Name } ViewHolder ( View ĠitemView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper ( item View ); ĊĠĠĠĠĠĠĠ Ġ$ find View Str ĊĠĠĠ Ġ} Ċ Ċ } ĊĠĠĠ Ġ""" . trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* Ġä»İ å¸ĥå±Ģ åĲį çĶŁæĪĲ Java ĠViewHolder ä»£çłģ ( View Binding ) Ċ Ġ*/ Ċ fun ĠString . generate Java ViewHolder View Binding Code ( view Holder Name : ĠString , Ġis Private : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġbinding ClassName Ġ= Ġthis . id 2 FieldName ( false ). first To UpperCase () Ġ+ Ġ" Binding " ĊĊĠĠĠ Ġreturn Ġ""" Ċ static Ġclass Ġ${ view Holder Name } ViewHolder Ġextends ĠRecyclerView . ViewHolder Ġ{ ĊĊĠĠĠ Ġpublic Ġstatic Ġ${ view Holder Name } ViewHolder Ġnew Instance ( ViewGroup Ġparent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ$ binding ClassName Ġbinding Ġ= Ġ$ binding ClassName . inflate ( LayoutInflater . from ( parent . getContext ()), Ġparent , Ġfalse ); ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Ġ${ view Holder Name } ViewHolder ( binding ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ${ if Ġ( is Private ) Ġ" private Ġ" Ġelse Ġ"" }$ binding ClassName Ġbinding ; ĊĊĠĠĠ Ġprivate Ġ${ view Holder Name } ViewHolder ($ binding ClassName Ġbinding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper ( binding . getRoot ()); ĊĠĠĠĠĠĠĠ Ġthis . binding Ġ= Ġbinding ; ĊĠĠĠ Ġ} Ċ Ċ } """. trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ Java ĠE po xy Ġmodel ä»£çłģ Ċ Ġ*/ Ċ fun ĠList < View Info >. generate Java E po xy Model Code ( layout Name : ĠString , Ġmodel Name : ĠString , Ġadd M : ĠBoolean , Ġis Private : ĠBoolean , Ġis Target 2 6 : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġinfos Ġ= Ġthis . filter Ġ{ Ġit . isChecked Ġ} ĊĊĠĠĠ Ġval Ġfield Str Ġ= Ġinfos . join ToString ("\ n \ t ") Ġ{ Ġit . get Java Field String ( add M , Ġis Private ) Ġ} ĊĠĠĠ Ġval Ġfind View Str Ġ= Ġinfos . join ToString ("\ n \ t ĠĠĠ Ġ") Ġ{ Ġit . get Java Find View String ( add M , Ġis Target 2 6 , Ġ" item View ") Ġ} ĊĊĠĠĠ Ġreturn Ġ""" Ċ @ E po xy Model Class Ċ public Ġabstract Ġclass Ġ${ model Name } Model Ġextends ĠE po xy Model With Holder < ${ model Name } Model .${ model Name } ViewHolder > Ġ{ ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġbind (@ NonNull Ġ${ model Name } ViewHolder Ġholder ) Ġ{ ĊĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint ĠgetDefault Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout .$ layout Name ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġstatic Ġclass Ġ${ model Name } ViewHolder Ġextends ĠE po xy Holder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ$ field Str ĊĊĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠ Ġprotected Ġvoid Ġbind View (@ NonNull ĠView ĠitemView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ find View Str ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĠĠĠ Ġ""" . trim Indent () Ċ } Ċ Ċ /** Ċ Ġ* Ġä»İ å¸ĥå±Ģ åĲį çĶŁæĪĲ Java ĠE po xy Ġmodel ä»£çłģ ( View Binding ) Ċ Ġ*/ Ċ fun ĠString . generate Java E po xy Model View Binding Code ( model Name : ĠString , Ġis Private : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġbinding ClassName Ġ= Ġthis . id 2 FieldName ( false ). first To UpperCase () Ġ+ Ġ" Binding " ĊĊĠĠĠ Ġreturn Ġ""" Ċ @ E po xy Model Class Ċ public Ġabstract Ġclass Ġ${ model Name } Model Ġextends ĠE po xy Model With Holder < ${ model Name } Model .${ model Name } ViewHolder > Ġ{ ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġbind (@ NonNull Ġ${ model Name } ViewHolder Ġholder ) Ġ{ ĊĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint ĠgetDefault Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout .$ this ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġstatic Ġclass Ġ${ model Name } ViewHolder Ġextends ĠE po xy Holder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ${ if Ġ( is Private ) Ġ" private Ġ" Ġelse Ġ"" }$ binding ClassName Ġbinding ; ĊĊĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠ Ġprotected Ġvoid Ġbind View (@ NonNull ĠView ĠitemView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= Ġ$ binding ClassName . bind ( item View ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } """. trim Indent () Ċ }