package Ġcn . yz l . kotlin . ex . click Ċ Ċ import Ġcn . yz l . kotlin . ex . click . model . Element Ċ import Ġcn . yz l . kotlin . ex . click . util . Utils Ċ import Ġcn . yz l . kotlin . ex . click . view . My Dialog Ċ import Ġcom . intellij . code Insight . Code Insight Action Handler Ċ import Ġcom . intellij . code Insight . generation . actions . Base Generate Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Platform Data Keys Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi Class Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . util . Psi Util Base Ċ import Ġorg . jetbrains . kotlin . idea . internal . Location Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ import Ġjava . awt . Toolkit Ċ Ċ class ĠInject Action ( handler : ĠCode Insight Action Handler ? Ġ= Ġnull ) Ġ: ĠBase Generate Action ( handler ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠisValid For Class ( target Class : ĠPsi Class ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisValid For File ( project : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfile . name . endsWith (". kt ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAn ActionEvent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġevent ?. getData ( Platform Data Keys . PROJECT ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġevent ?. getData ( Platform Data Keys . EDITOR ) ĊĠĠĠĠĠĠĠ ĠactionPerformed Impl ( project !! , Ġeditor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed Impl ( project : ĠProject , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠPsi Util Base . get Psi File In Editor ( editor !! , Ġproject ) ĊĠĠĠĠĠĠĠ Ġvar Ġlayout Ġ= ĠUtils . get Layout File From Caret ( editor , Ġfile ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( layout Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . show Error Notification ( project , Ġ" layout Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġelements Ġ= ĠUtils . get IDs From Layout ( layout ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! elements . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( project , Ġeditor , Ġelements ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . show Error Notification ( project , Ġ" No ĠIDs Ġfound Ġin Ġlayout ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Dialog ( project : ĠProject , Ġeditor : ĠEditor , Ġelements : ĠArrayList < Element >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠPsi Util Base . get Psi File In Editor ( editor , Ġproject ) ĊĠĠĠĠĠĠĠ Ġvar Ġkt Class : ĠK t Class ? Ġ= Ġget Psi Class From Event ( editor ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( kt Class Ġ== Ġnull Ġ|| Ġfile Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠMy Dialog ( elements , ĠMy Dialog . CallBack Ġ{ Ġresult Ġ-> Ġcreate Code ( file , Ġkt Class , Ġresult ) Ġ}) ĊĠĠĠĠĠĠĠ Ġdialog . pack () ĊĠĠĠĠĠĠĠ Ġdialog . setSize ( 5 0 0 , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġkit Ġ= ĠToolkit . getDefault Toolkit () ĠĠĠ Ġ// Ġ å®ļä¹ī å·¥åħ· åĮħ ĊĊĠĠĠĠĠĠĠ Ġval Ġscreen Size Ġ= Ġkit . screen Size ĠĠ Ġ// Ġèİ·åıĸ å±ı å¹ķ çļĦ å° º å¯ ¸ ĊĊĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= Ġscreen Size . width Ġ/ Ġ 2 ĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ å±ı å¹ķ çļĦ å®½ ĊĊĠĠĠĠĠĠĠ Ġval Ġscreen Height Ġ= Ġscreen Size . height Ġ/ Ġ 2 ĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ å±ı å¹ķ çļĦ é«ĺ ĊĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġ 5 0 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġdialog . setLocation ( screen Width Ġ- Ġwidth Ġ/ Ġ 2 , Ġscreen Height Ġ- Ġheight Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġdialog . setVisible ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Code ( psi File : ĠPsi File , Ġpsi Class : ĠK t Class , Ġtypes : ĠList < Element >) Ġ{ ĊĠĠĠĠĠĠĠ ĠI Writer ( psi File . project , Ġpsi File , Ġpsi Class , Ġtypes ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Psi Class From Event ( editor : ĠEditor ?): ĠK t Class ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ ĠEditor Ġeditor Ġ= Ġe . getData ( Platform Data Keys . EDITOR ); ĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġeditor . project Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= ĠPsi Document Manager . getInstance ( project ). get Psi File ( editor . document ) ĊĠĠĠĠĠĠĠ Ġif Ġ( psi File Ġ== Ġnull Ġ|| Ġpsi File Ġ! is ĠK t File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation . from Editor ( editor , Ġproject ) ĊĠĠĠĠĠĠĠ Ġval Ġpsi Element Ġ= Ġpsi File . findElement At ( location . start Offset ) Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn ĠUtils . get Kt Class For Element ( psi Element ) ĊĠĠĠ Ġ} Ċ Ċ }