package Ġapp . the le ma . studio . ecs Ċ Ċ import Ġapp . the le ma . ui .* Ċ import Ġapp . the le ma . utils . iterate Ċ Ċ class ĠChoose Component Window : ĠWindow (" Choose Ġcomponent ") Ġ{ ĊĠĠĠ Ġval Ġavailable Components Ġ= ĠComponents Tree Panel () ĊĊĠĠĠ Ġval Ġcomponent Search String Ġ= ĠTextField () ĊĊĠĠĠ Ġval Ġaccept Button Ġ= ĠText Button (" Accept ") Ġ{ ĊĠĠĠĠĠĠĠ ĠonClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Accept () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Accept Ġ= Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġon Accept : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġavailable Components . tree . selection . is Multiple ĊĊĠĠĠĠĠĠĠ Ġcomponent Search String . hint Text Ġ= Ġ" Search Ġcomponent " ĊĊĠĠĠĠĠĠĠ Ġcontent . add ( component Search String ). grow X (). pad Top ( 1 0 f ). new Row () ĊĠĠĠĠĠĠĠ Ġcontent . add ( available Components ). grow (). pad Top ( 1 0 f ). new Row () ĊĠĠĠĠĠĠĠ Ġcontent . add ( accept Button ) ĊĊĠĠĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 4 8 0 f ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 6 4 0 f ĊĠĠĠĠĠĠĠ Ġis Resizable Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( block : ĠChoose Component Window . () Ġ-> ĠUnit ) Ġ= Ġblock ( this ) ĊĊĠĠĠ Ġfun ĠforEach Selected ( block : Ġ( component Name : ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġavailable Components . tree . selection . selected . iterate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock (( it Ġas ĠComponent TreeNode ). descriptor . component Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ