Wizard: add mpp mobile library template
This commit is contained in:
+6
-6
@@ -2,6 +2,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
|
||||
|
||||
import com.intellij.ui.components.JBTextField
|
||||
import com.intellij.ui.layout.panel
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
@@ -17,8 +18,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Comp
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.isRootModule
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.TitledComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.DropDownComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.TextFieldComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.label
|
||||
@@ -123,6 +123,7 @@ private class ModuleTemplateComponent(
|
||||
override val needCentering: Boolean = false
|
||||
private val templateDescriptionLabel = label("") {
|
||||
fontColor = UIUtil.FontColor.BRIGHTER
|
||||
addBorder(JBUI.Borders.empty(4, 4))
|
||||
}
|
||||
|
||||
override fun onInit() {
|
||||
@@ -134,10 +135,9 @@ private class ModuleTemplateComponent(
|
||||
templateDescriptionLabel.text = template?.description
|
||||
}
|
||||
|
||||
override val component = panel {
|
||||
row {
|
||||
dropDown.component(growX, comment = module.template?.description)
|
||||
}
|
||||
override val component = borderPanel {
|
||||
addToCenter(dropDown.component)
|
||||
addToBottom(templateDescriptionLabel)
|
||||
}
|
||||
|
||||
override val title: String = "Template"
|
||||
|
||||
+15
@@ -65,6 +65,11 @@ public class ProjectTemplateNewWizardProjectImportTestGenerated extends Abstract
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("multiplatformMobileLibrary")
|
||||
public void testMultiplatformMobileLibrary() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("nativeConsoleApplication")
|
||||
public void testNativeConsoleApplication() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
||||
@@ -118,6 +123,11 @@ public class ProjectTemplateNewWizardProjectImportTestGenerated extends Abstract
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("multiplatformMobileLibrary")
|
||||
public void testMultiplatformMobileLibrary() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("nativeConsoleApplication")
|
||||
public void testNativeConsoleApplication() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
||||
@@ -171,6 +181,11 @@ public class ProjectTemplateNewWizardProjectImportTestGenerated extends Abstract
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("multiplatformMobileLibrary")
|
||||
public void testMultiplatformMobileLibrary() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("nativeConsoleApplication")
|
||||
public void testNativeConsoleApplication() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
||||
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.multiplatform' version '1.3.70'
|
||||
id 'com.android.application'
|
||||
id 'kotlin-android-extensions'
|
||||
}
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
kotlin {
|
||||
android()
|
||||
iosX64('ios')
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib-common')
|
||||
}
|
||||
}
|
||||
commonTest {
|
||||
dependencies {
|
||||
implementation kotlin('test-common')
|
||||
implementation kotlin('test-annotations-common')
|
||||
}
|
||||
}
|
||||
androidMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib-jdk7')
|
||||
implementation 'androidx.core:core-ktx:1.1.0'
|
||||
}
|
||||
}
|
||||
androidTest {
|
||||
|
||||
}
|
||||
iosMain {
|
||||
|
||||
}
|
||||
iosTest {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
defaultConfig {
|
||||
applicationId 'me.user.android'
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 29
|
||||
versionCode 1
|
||||
versionName '1.0'
|
||||
}
|
||||
buildTypes {
|
||||
'release' {
|
||||
minifyEnabled false
|
||||
}
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
plugins {
|
||||
kotlin("multiplatform") version "1.3.70"
|
||||
id("com.android.application")
|
||||
id("kotlin-android-extensions")
|
||||
}
|
||||
group = "me.user"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
kotlin {
|
||||
android()
|
||||
iosX64("ios")
|
||||
sourceSets {
|
||||
val commonMain by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib-common"))
|
||||
}
|
||||
}
|
||||
val commonTest by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("test-common"))
|
||||
implementation(kotlin("test-annotations-common"))
|
||||
}
|
||||
}
|
||||
val androidMain by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib-jdk7"))
|
||||
implementation("androidx.core:core-ktx:1.1.0")
|
||||
}
|
||||
}
|
||||
val androidTest by getting
|
||||
val iosMain by getting
|
||||
val iosTest by getting
|
||||
}
|
||||
}
|
||||
android {
|
||||
compileSdkVersion(29)
|
||||
defaultConfig {
|
||||
applicationId = "me.user.android"
|
||||
minSdkVersion(24)
|
||||
targetSdkVersion(29)
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
}
|
||||
buildTypes {
|
||||
getByName("release") {
|
||||
isMinifyEnabled = false
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
resolutionStrategy {
|
||||
eachPlugin {
|
||||
if (requested.id.namespace == 'com.android' || requested.id.name == 'kotlin-android-extensions') {
|
||||
useModule('com.android.tools.build:gradle:3.5.2')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rootProject.name = 'MultiplatformMobileLibrary'
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
resolutionStrategy {
|
||||
eachPlugin {
|
||||
if (requested.id.namespace == "com.android" || requested.id.name == "kotlin-android-extensions") {
|
||||
useModule("com.android.tools.build:gradle:3.5.2")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rootProject.name = "MultiplatformMobileLibrary"
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
android:
|
||||
androidSdkPath: android.sdk
|
||||
+5
@@ -63,6 +63,11 @@ public class ProjectTemplateBuildFileGenerationTestGenerated extends AbstractPro
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("multiplatformMobileLibrary")
|
||||
public void testMultiplatformMobileLibrary() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/");
|
||||
}
|
||||
|
||||
@TestMetadata("nativeConsoleApplication")
|
||||
public void testNativeConsoleApplication() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
||||
|
||||
+39
@@ -4,6 +4,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
@@ -54,6 +55,7 @@ sealed class ProjectTemplate : DisplayableSettingItem {
|
||||
MultiplatformLibrary,
|
||||
AndroidApplication,
|
||||
IOSApplication,
|
||||
MultiplatformMobileLibrary,
|
||||
NativeConsoleApplication,
|
||||
JsBrowserApplication
|
||||
)
|
||||
@@ -284,4 +286,41 @@ object IOSApplication : ProjectTemplate() {
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
object MultiplatformMobileLibrary : ProjectTemplate() {
|
||||
override val title = "Multiplatform Mobile Library"
|
||||
override val description = "Create a library that supports sharing code between iOS and Android."
|
||||
override val suggestedProjectName = "myMppMobileLibrary"
|
||||
override val projectKind = ProjectKind.Multiplatform
|
||||
|
||||
override val setsPluginSettings: List<SettingWithValue<*, *>>
|
||||
get() = listOf(
|
||||
KotlinPlugin::modules withValue listOf(
|
||||
MultiplatformModule(
|
||||
"library",
|
||||
listOf(
|
||||
ModuleType.common.createDefaultTarget(),
|
||||
Module(
|
||||
"android",
|
||||
AndroidTargetConfigurator,
|
||||
null,
|
||||
SourcesetType.ALL.map { type ->
|
||||
Sourceset(type, dependencies = emptyList())
|
||||
},
|
||||
emptyList()
|
||||
),
|
||||
Module(
|
||||
"ios",
|
||||
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.iosX64),
|
||||
null,
|
||||
SourcesetType.ALL.map { type ->
|
||||
Sourceset(type, dependencies = emptyList())
|
||||
},
|
||||
emptyList()
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user