package Ġcom . mist ral tech . smo gen . plugin Ċ Ċ import Ġcom . intellij . openapi . project . calc Relative To Project Path Ċ import Ġcom . intellij . openapi . roots . File Index Ċ import Ġcom . intellij . openapi . roots . Java Project Roots Util Ċ import Ġcom . intellij . openapi . roots . Project Root Manager Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Java Psi Facade Ċ import Ġcom . intellij . psi . Psi Name Helper Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . psi . search . Project Scope Ċ import Ġcom . intellij . refactor ing . ui . ClassName Reference Editor Ċ import Ġcom . intellij . refactor ing . ui . PackageName Reference Editor Combo Ċ import Ġcom . intellij . ui . Reference Editor With Browse Button Ċ import Ġcom . intellij . ui . Simple List Cell Renderer Ċ import Ġcom . intellij . util . Platform Icons Ċ import Ġcom . mist ral tech . smo gen . utils . Psi Utils . is Abstract Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . J CheckBox Ċ import Ġjavax . swing . J ComboBox Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . J List Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . J RadioButton Ċ import Ġjavax . swing . JTextField Ċ Ċ class ĠMatcher Generator Options Panel ( private Ġval ĠdataSource : ĠMatcher Generator Options Panel DataSource ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġroot Panel : ĠJPanel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠclassName TextField : ĠJTextField ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmake Ext ensible CheckBox : ĠJ CheckBox ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpackage Component : ĠPackage Name Reference Editor Combo ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdestination Source Root ComboBox : ĠJ ComboBox < ListItem Wrapper < Virtual File >> ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġa RadioButton : ĠJ RadioButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġan RadioButton : ĠJ RadioButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġextends CheckBox : ĠJ CheckBox ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠsuperClass Chooser : ĠReference Editor With Browse Button ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsource ClassName : ĠJLabel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġclass RadioButton : ĠJ RadioButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġinterface RadioButton : ĠJ RadioButton ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġvar Ġmatches Label : ĠJLabel ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Source ClassName Field () Ġ{ ĊĠĠĠĠĠĠĠ Ġsource ClassName !!. text Ġ= ĠdataSource . matched Class . qualified Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Generate Type Radio Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass RadioButton !!. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinterface RadioButton !!. isEnabled Ġ= Ġis S mo g J av assist On Classpath ĊĊĠĠĠĠĠĠĠ Ġif Ġ( interface RadioButton !!. isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface RadioButton !!. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass RadioButton !!. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise ClassName Field () Ġ{ ĊĠĠĠĠĠĠĠ ĠclassName TextField !!. text Ġ= ĠdataSource . default ClassName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Ext ends Fields () Ġ{ ĊĠĠĠĠĠĠĠ ĠsuperClass Chooser !!. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġextends CheckBox !!. isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġextends CheckBox !!. add ChangeListener Ġ{ Ġon Ext ends CheckBox StateChange () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ext ends CheckBox StateChange () Ġ{ ĊĠĠĠĠĠĠĠ ĠsuperClass Chooser !!. isEnabled Ġ= Ġextends CheckBox !!. isSelected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Make Ext ensible CheckBox () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġare Ġmatching Ġan Ġabstract Ġclass , Ġlikelihood Ġis Ġwe Ġwant Ġthe Ġmatcher Ġto Ġbe Ġext ensible ĊĠĠĠĠĠĠĠ Ġmake Ext ensible CheckBox !!. isSelected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Abstract ( dataSource . matched Class )) Ġtrue Ġelse ĠdataSource . default Is Ext ensible ĊĠĠĠĠĠĠĠ Ġmake Ext ensible CheckBox !!. isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Factory Method Prefix Radio Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġfactory Ġmethod Ġprefix Ġis Ġeither Ġ' a ' Ġor Ġ' an ', Ġselected Ġby Ġradio Ġbuttons ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġlabel led Ġby Ġmatches Label . ĊĠĠĠĠĠĠĠ Ġval Ġmatched ClassName Ġ= ĠdataSource . matched Class . name Ġ?: Ġthrow ĠIllegalStateException (" Matched Ġclass Ġhas Ġno Ġname ") ĊĊĠĠĠĠĠĠĠ Ġa RadioButton !!. text Ġ= Ġ" a Ġ$ matched ClassName " ĊĠĠĠĠĠĠĠ Ġan RadioButton !!. text Ġ= Ġ" an Ġ$ matched ClassName " ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has V owel Sound ( matched ClassName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan RadioButton !!. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa RadioButton !!. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Destination Source Root ComboBox () Ġ{ ĊĠĠĠĠĠĠĠ ĠdataSource . candidate Roots . forEach Ġ{ Ġcandidate Root Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Item Wrapper Ġ= Ġcreate Source Root Item Wrapper ( candidate Root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Source Root ComboBox !!. addItem ( list Item Wrapper ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( candidate Root Ġ== ĠdataSource . default Root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Source Root ComboBox !!. selected Item Ġ= Ġlist Item Wrapper ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdestination Source Root ComboBox !!. set Renderer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠSimple List Cell Renderer < ListItem Wrapper < Virtual File >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcustomize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist : ĠJ List < out ĠListItem Wrapper < Virtual File >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠListItem Wrapper < Virtual File > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Focus : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġvalue ?. icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġvalue ?. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġselected Source Root : ĠVirtual File ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdestination Source Root ComboBox !!. getItem At ( destination Source Root ComboBox !!. selectedIndex ). item ĊĠĠĠ Ġval Ġselected ClassName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠclassName TextField !!. text ĊĠĠĠ Ġval Ġselected PackageName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpackage Component !!. text ĊĠĠĠ Ġval Ġis Make Ext ensible : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmake Ext ensible CheckBox !!. isSelected ĊĠĠĠ Ġval Ġis An : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġan RadioButton !!. isSelected ĊĠĠĠ Ġval Ġis Generate Interface : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinterface RadioButton !!. isSelected ĊĠĠĠ Ġval Ġsuper ClassName : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( extends CheckBox !!. isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsuperClass Chooser !!. text . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġroot : ĠJ Component ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġroot Panel !! ĊĊĠĠĠ Ġprivate Ġfun Ġhas V owel Sound ( matched ClassName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" ae iou ". contains ( matched ClassName . substring ( 0 , Ġ 1 ). toLowerCase ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Source Root Item Wrapper ( candidate Root : ĠVirtual File ): ĠListItem Wrapper < Virtual File > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrelative Path Ġ= Ġcalc Relative To Project Path ( candidate Root , ĠdataSource . project , Ġtrue , Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġreturn ĠListItem Wrapper ( candidate Root , Ġrelative Path , Ġget Source Root Icon ( candidate Root )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate UI Components () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġcalled Ġby Ġthe Ġform Ġhandler Ġfor Ġcustom - created Ġcomponents ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠdataSource . project ĊĊĠĠĠĠĠĠĠ Ġpackage Component Ġ= ĠPackage Name Reference Editor Combo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource . recent s Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Choose ĠDestination ĠPackage " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpackage Component !!. setText Field Preferred Width ( PANEL _ WIDTH _ CHARS ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscope Ġ= ĠJava Project Roots Util . get Scope Without Generated Sources ( Project Scope . getProject Scope ( project ), Ġproject ) ĊĠĠĠĠĠĠĠ ĠsuperClass Chooser Ġ= ĠClass Name Reference Editor ( project , Ġnull , Ġscope ) ĊĠĠĠĠĠĠĠ ĠsuperClass Chooser !!. setText Field Preferred Width ( PANEL _ WIDTH _ CHARS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Source Root Icon ( virtual File : ĠVirtual File ): ĠIcon Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Index : ĠFile Index Ġ= ĠProject Root Manager . getInstance ( dataSource . project ). file Index ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Index . isIn Test Source Content ( virtual File ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Icons . MODULES _ TEST _ SOURCE _ FOLDER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Index . isIn Source Content ( virtual File ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Icons . MODULES _ SOURCE _ FOLDER S _ ICON ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Icons . FOLDER _ ICON ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Validate (): ĠValidation Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= ĠclassName TextField !!. text . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠclassName . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Info (" Class Ġname Ġis Ġempty ", ĠclassName TextField ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! Psi Name Helper . getInstance ( dataSource . project ). is Identifier ( className ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Info (" Class Ġname Ġis Ġnot Ġa Ġvalid Ġidentifier ", ĠclassName TextField ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġis S mo g J av assist On Classpath : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠdataSource . project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjava Psi Facade Ġ= ĠJava Psi Facade . getInstance ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerator Class Ġ= Ġjava Psi Facade . find Class ( S MO G _ J AV AS SIST _ GENER ATOR , ĠGlobal Search Scope . all Scope ( project )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgenerator Class Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠListItem Wrapper < T > Ġconstructor ( val Ġitem : ĠT , Ġval Ġtext : ĠString , Ġval Ġicon : ĠIcon ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPAN EL _ WIDTH _ CHARS Ġ= Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS MO G _ J AV AS SIST _ GENER ATOR Ġ= Ġ" com . mist ral tech . smo g . proxy . jav assist . J av assist Matcher Generator " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialise Source ClassName Field () ĊĠĠĠĠĠĠĠ Ġinitialise Generate Type Radio Buttons () ĊĠĠĠĠĠĠĠ Ġinitialise ClassName Field () ĊĠĠĠĠĠĠĠ Ġinitialise Make Ext ensible CheckBox () ĊĠĠĠĠĠĠĠ Ġinitialise Ext ends Fields () ĊĠĠĠĠĠĠĠ Ġinitialise Factory Method Prefix Radio Buttons () ĊĠĠĠĠĠĠĠ Ġinitialise Destination Source Root ComboBox () ĊĠĠĠ Ġ} Ċ } Ċ