/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . tools . project Wizard . templates . compose Ċ Ċ import Ġkotlinx . collections . immutable . to Persistent List Ċ import Ġorg . jetbrains . annotations . Non N ls Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . Kotlin New Project Wizard Bundle Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . Versions Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . core .* Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . ir . build system .* Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . ir . build system . gradle . Gradle Import IR Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . ir . build system . gradle . irs List Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . ir . build system . gradle . multi platform . Target Configuration IR Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . ir . build system . gradle . multi platform . add With Java Into Jvm Target Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . library . Maven Artifact Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . module Configur ators . Android Module Configurator Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . module Configur ators . Android Single Platform Module Configurator Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . module Configur ators . in Context Of Module Configurator Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . module Configur ators . module Type Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . plugins . build System . Build System Plugin Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . plugins . kotlin . Module Type Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . plugins . kotlin . Project Kind Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . plugins . pom IR Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . plugins . templates . Templates Plugin Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . settings . Java Package Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . settings . build system .* Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . settings . java Package Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . templates . File Template Descriptor Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . templates . File Template Descriptor With Path Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . templates . Template Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . templates . as Src Of Ċ Ċ class ĠCompose Android Template Ġ: ĠTemplate () Ġ{ ĊĠĠĠ Ġ@ Non N ls ĊĠĠĠ Ġoverride Ġval Ġid : ĠString Ġ= Ġ" compose Android " ĊĊĠĠĠ Ġoverride Ġval Ġtitle : ĠString Ġ= ĠKotlin New Project Wizard Bundle . message (" module . template . compose . desktop . title ") ĊĠĠĠ Ġoverride Ġval Ġdescription : ĠString Ġ= ĠKotlin New Project Wizard Bundle . message (" module . template . compose . desktop . description ") ĊĊĊĠĠĠ Ġoverride Ġfun Ġis Supported By Module Type ( module : ĠModule , Ġproject Kind : ĠProject Kind ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġmodule . configur ator . module Type Ġ== ĠModule Type . android Ġ&& Ġproject Kind Ġ== ĠProject Kind . COMP OSE ĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable To ( reader : ĠReader , Ġmodule : ĠModule ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġmodule . kind Ġ== ĠModule Kind . single platform Android ĊĊĠĠĠ Ġoverride Ġfun ĠWriter . get I rs ToAdd To Build File ( ĊĠĠĠĠĠĠĠ Ġmodule : ĠModule IR ĊĠĠĠ Ġ) Ġ= Ġir s List Ġ{ ĊĠĠĠĠĠĠĠ Ġ+ Gradle Only Plugin ByName IR (" org . jetbrains . compose ", Ġversion Ġ= ĠVersions . J ET BR AIN S _ COMP OSE ) ĊĠĠĠĠĠĠĠ Ġ+ Repository IR ( Repositories . J ET BR AIN S _ COMP OSE _ DEV ) ĊĠĠĠĠĠĠĠ Ġ+ Repository IR ( Default Repository . GOOGLE ) ĊĠĠĠĠĠĠĠ Ġ+ Dependencies . ACTIVITY _ COMP OSE ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠReader . update Build File IR s ( irs : ĠList < Build System IR >): ĠList < Build System IR > Ġ= Ġir s . filter Not Ġ{ ĊĠĠĠĠĠĠĠ Ġit . safe As < Gradle Only Plugin ByName IR >() ?. plugin Id Ġ== ĠAndroid Module Configurator . DEPEND ENCI ES . K OT LIN _ ANDROID _ EXTENSION S _ NAME ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠWriter . get Required Libraries ( module : ĠModule IR ): ĠList < Dependency IR > Ġ= Ġbuild List Ġ{ ĊĠĠĠĠĠĠĠ Ġ+ Dependencies . ACTIVITY _ COMP OSE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠReader . update Module IR ( module : ĠModule IR ): ĠModule IR Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġir s Ġ= Ġmodule . irs . filter Not Ġ{ Ġir Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġir Ġ== ĠAndroid Single Platform Module Configurator . DEPEND ENCI ES . APP _ COMPAT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġir Ġ== ĠAndroid Single Platform Module Configurator . DEPEND ENCI ES . CONSTRAINT _ LAYOUT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġir Ġ== ĠAndroid Module Configurator . DEPEND ENCI ES . MAT ERIAL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmodule . with Re placed I rs ( irs . to Persistent List ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠWriter . run Ar bitr at y Task ( module : ĠModule IR ): ĠTask Result < Unit > Ġ= Ġcompute Ġ{ ĊĠĠĠĠĠĠĠ ĠBuild System Plugin . plugin Re posit ore is . add Values ( Repositories . J ET BR AIN S _ COMP OSE _ DEV , ĠDefault Repository . GOOGLE ). ensure () ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġhack y ! ĊĠĠĠĠĠĠĠ ĠTemplates Plugin . file Templates To Render . update Ġ{ Ġtemplates Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplates . map NotNull Ġ{ Ġtemplate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġtemplate . descriptor Ġas ? ĠFile Template Descriptor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Ġ== ĠAndroid Module Configurator . File Template Descriptors . activity Main Xml ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġdescriptor Ġ== ĠAndroid Module Configurator . File Template Descriptors . colors Xml ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġdescriptor Ġ== ĠAndroid Module Configurator . File Template Descriptors . styles Xml Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor ?. template Id Ġ== Ġ" android / MainActivity . kt . vm " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate . copy ( descriptor Ġ= Ġmain Activity Kt ( module . original Module . java Package ( pom IR ()))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor ?. template Id Ġ== Ġ" android / Android Manifest . xml . vm " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate . copy ( descriptor Ġ= ĠDes cript ors . manifest Xml ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtemplate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. as Success () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmain Activity Kt ( java Package : ĠJava Package ) Ġ= ĠFile Template Descriptor ( ĊĠĠĠĠĠĠĠ Ġ" compose Android / MainActivity . kt . vm ", ĊĠĠĠĠĠĠĠ Ġ" src " Ġ/ Ġ" main " Ġ/ Ġ" java " Ġ/ Ġjava Package . as Path () Ġ/ Ġ" MainActivity . kt " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠDes cript ors Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanifest Xml Ġ= ĠFile Template Descriptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Id Ġ= Ġ" compose Android / Android Manifest . xml . vm ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Path Ġ= Ġ" src " Ġ/ Ġ" main " Ġ/ Ġ" Android Manifest . xml ", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠDependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠACT IVITY _ COMP OSE Ġ= ĠArtifact Based Library Dependency IR ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaven Artifact ( Repositories . J ET BR AIN S _ COMP OSE _ DEV , Ġ" android x . activity ", Ġ" activity - compose "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠVersions . COMP OSE . ANDROID _ ACTIVITY _ COMP OSE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Type Ġ= ĠDependency Type . MAIN , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ