// ĠCopyright Ġ 2 0 1 8 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . ui . wizard . java Ċ Ċ import Ġcom . intellij . ide . project Wizard . Project Template List Ċ import Ġcom . intellij . ide . util . project Wizard . Module Builder Ċ import Ġcom . intellij . ide . util . project Wizard . Module Wizard Step Ċ import Ġcom . intellij . ide . util . project Wizard . Wizard Context Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . module . Java Module Type Ċ import Ġcom . intellij . openapi . module . Module Type Ċ import Ġcom . intellij . openapi . project . root Manager Ċ import Ġcom . intellij . openapi . project Roots . Java Sdk Ċ import Ġcom . intellij . openapi . roots . Mod ifiable Root Model Ċ import Ġcom . intellij . openapi . roots . ui . configuration . Modules Provider Ċ import Ġcom . intellij . ui . Ide Border Factory Ċ import Ġcom . intellij . ui Designer . core . Grid Constraints Ċ import Ġcom . jetbrains . python . module . Python Module Type Ċ import Ġcom . jetbrains . python . sdk . Python Sdk Type Ċ import Ġicons . Aws Icons Ċ import Ġsoftware . amazon . aw ssdk . services . lambda . model . Runtime Ċ import Ġsoftware . aws . tool k its . jetbrains . services . lambda . Runtime Group Ċ import Ġsoftware . aws . tool k its . jetbrains . services . lambda . execution . sam . Sam Common Ċ import Ġsoftware . aws . tool k its . jetbrains . services . lambda . runtime Group Ċ import Ġsoftware . aws . tool k its . jetbrains . ui . wizard . SAM _ TEMP LAT ES Ċ import Ġsoftware . aws . tool k its . jetbrains . ui . wizard . Sam Module Type Ċ import Ġsoftware . aws . tool k its . jetbrains . ui . wizard . Sam Project Template Wrapper Ċ import Ġsoftware . aws . tool k its . resources . message Ċ import Ġjava . awt . GridLayout Ċ import Ġjavax . swing . JPanel Ċ Ċ class ĠSam Init Module Builder Ġ: ĠModule Builder () Ġ{ ĊĠĠĠ Ġvar Ġruntime : ĠRuntime ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġruntime Selection Panel : ĠSam Init Runtime Selection Panel ĊĠĠĠ Ġlateinit Ġvar Ġtemplate : ĠSam Project Template Wrapper ĊĊĠĠĠ Ġ/* Ġ ĠTr ick ĠIDEA Ġto Ġgive Ġus Ġa Ġcustom Ġfirst Ġscreen Ġwithout Ġusing Ġthe ĠWizard Delegate Ġtrick ĊĠĠĠĠĠĠĠ Ġdescribed Ġin ĠAndroid Module Builder ĊĠĠĠĠĠĠĠ Ġhttps :// github . com / Jet Brains / android / blob / master / android / src / com / android / tools / idea / np w / idea host / Android Module Builder . java ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Module Type () Ġ= ĠSam Module Type . instance ĊĊĠĠĠ Ġ// Ġwe Ġwant Ġto Ġuse Ġour Ġown Ġcustom Ġtemplate Ġselection Ġstep ĊĠĠĠ Ġoverride Ġfun Ġis Template Based () Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġget Ide a Module Type () Ġ= Ġwhen Ġ( runtime ?. runtime Group ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRuntime Group . JAVA Ġ-> ĠJava Module Type . getModule Type () ĊĠĠĠĠĠĠĠ ĠRuntime Group . PYTHON Ġ-> ĠPython Module Type . getInstance () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠModule Type . EMPTY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Sdk Type () Ġ= Ġwhen Ġ( runtime ?. runtime Group ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRuntime Group . JAVA Ġ-> ĠJava Sdk . getInstance () ĊĠĠĠĠĠĠĠ ĠRuntime Group . PYTHON Ġ-> ĠPython Sdk Type . getInstance () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠJava Sdk . getInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Root Model ( root Model : ĠMod ifiable Root Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my J dk Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Model . sdk Ġ= Ġmy J dk ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Model . inherit Sdk () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġroot Model . module . root Manager . modifiable Model . inherit Sdk () ĊĠĠĠĠĠĠĠ Ġval Ġmodule Type Ġ= Ġget Ide a Module Type (). id ĊĠĠĠĠĠĠĠ Ġroot Model . module . set Module Type ( module Type ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġroot Model . project ĊĊĠĠĠĠĠĠĠ Ġtemplate . sam Project Template . build ( runtime Ġ?: Ġthrow ĠRuntimeException ( message (" sam . init . null _ runtime ")), Ġproject . base Dir ) ĊĠĠĠĠĠĠĠ Ġroot Model . add Content Entry ( project . base Dir ) ĊĊĠĠĠĠĠĠĠ ĠSam Common . exclude Sam Directory ( root Model . project . base Dir , Ġroot Model ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( root Model . sdk ?. sdk Type Ġis ĠPython Sdk Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSam Common . set Source Roots ( root Model . project . base Dir , Ġroot Model . project , Ġroot Model ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġdon 't Ġcommit Ġbecause Ġit Ġwill Ġbe Ġdone Ġfor Ġus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Present able Name () Ġ= ĠSam Module Type . ID ĊĊĠĠĠ Ġoverride Ġfun ĠgetDescription () Ġ= ĠSam Module Type . DESCRIPTION ĊĊĠĠĠ Ġoverride Ġfun ĠgetNode Icon () Ġ= ĠAws Icons . Resources . SERVER LESS _ APP ĊĊĠĠĠ Ġoverride Ġfun Ġget Custom Options Step ( context : ĠWizard Context ?, Ġparent Disposable : ĠDis posable ?): ĠModule Wizard Step ? Ġ{ ĊĠĠĠĠĠĠĠ Ġruntime Selection Panel Ġ= ĠSam Init Runtime Selection Panel ( this , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġreturn Ġruntime Selection Panel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Wizard Steps ( wizard Context : ĠWizard Context , Ġmodules Provider : ĠModules Provider ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Sam Init Template Selection Step ( this , Ġwizard Context )) Ċ } Ċ Ċ class ĠSam Init Template Selection Step ( ĊĠĠĠ Ġval Ġbuilder : ĠSam Init Module Builder , ĊĠĠĠ Ġval Ġcontext : ĠWizard Context Ċ ) Ġ: ĠModule Wizard Step () Ġ{ ĊĠĠĠ Ġval Ġtemplate Selection Panel Ġ= ĠProject Template List () ĊĠĠĠ Ġprivate Ġval Ġparent Panel Ġ= ĠJPanel ( GridLayout ( 0 , Ġ 1 )) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Selection Panel . set Templates ( SAM _ TEMP LAT ES . map Ġ{ Ġit . getModule Builder Project Template ( builder ) Ġ}, Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtemplate Selection Panel . border Ġ= ĠIde Border Factory . create Title d Border ( message (" sam . init . select _ sam _ template _ step _ label "), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġparent Panel . add ( template Selection Panel , ĠGrid Constraints ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate DataModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . project Builder Ġ= Ġbuilder ĊĠĠĠĠĠĠĠ Ġbuilder . template Ġ= Ġtemplate Selection Panel . selected Template Ġas ĠSam Project Template Wrapper ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Component () Ġ= Ġparent Panel Ċ }