package Ġcom . te zos . intellij . ui Ċ Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . ui . components . JB TextField Ċ import Ġcom . intellij . util . Function Ċ Ċ /** Ċ Ġ* ĠA Ġfactory Ġfor Ġtext Ġfields . Ċ Ġ* ĠExpand able Ġtext Ġfields Ġare Ġnot Ġavailable Ġon Ġall Ġbuilds Ġwe 're Ġsupporting . ĠTherefore Ġwe Ġhave Ġto Ġuse Ċ Ġ* Ġreflection Ġto Ġreturn Ġa Ġexpand able Ġtext Ġfield Ġwhen Ġit 's Ġavailable . Ċ Ġ* Ġ@ author Ġj ans org Ċ Ġ*/ Ċ object ĠTextField Factory Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLogger . getInstance ("# te zos . ui ") ĊĠĠĠ Ġprivate Ġconst Ġval ĠCLASS _ NAME Ġ= Ġ" com . intellij . ui . components . fields . Expand able TextField " ĊĊĠĠĠ Ġfun Ġcreate Expand able TextField (): ĠJ B TextField Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= ĠTextField Factory . java Class . class Loader . load Class ( CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġctor Ġ= Ġclazz . get Constructor ( Function :: class . java , ĠFunction :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġctor . newInstance ( Parser (), ĠJoin er ()) Ġas ĠJ B TextField ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . debug (" Exception Ġin Ġcreate Expand able TextField ()", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJ B TextField () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġimplement Ġinterface Ġto Ġcreate Ġa Ġcompatible Ġparameter Ġvalue Ġat Ġruntime ĊĠĠĠ Ġ// Ġreflection Ġisn 't Ġaccepting Ġlamb das ĊĠĠĠ Ġprivate Ġclass ĠParser Ġ: ĠFunction < String , ĠMutable List < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ` fun `( value : ĠString ): ĠMutable List < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠJoin er : ĠFunction < Mutable List < String >, ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ` fun `( lines : ĠMutable List < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlines . join ToString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }