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.components.JBTextField
|
||||||
import com.intellij.ui.layout.panel
|
import com.intellij.ui.layout.panel
|
||||||
|
import com.intellij.util.ui.JBUI
|
||||||
import com.intellij.util.ui.UIUtil
|
import com.intellij.util.ui.UIUtil
|
||||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
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.settings.buildsystem.isRootModule
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
|
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.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.TitledComponent
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.DropDownComponent
|
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.components.TextFieldComponent
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.label
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.label
|
||||||
@@ -123,6 +123,7 @@ private class ModuleTemplateComponent(
|
|||||||
override val needCentering: Boolean = false
|
override val needCentering: Boolean = false
|
||||||
private val templateDescriptionLabel = label("") {
|
private val templateDescriptionLabel = label("") {
|
||||||
fontColor = UIUtil.FontColor.BRIGHTER
|
fontColor = UIUtil.FontColor.BRIGHTER
|
||||||
|
addBorder(JBUI.Borders.empty(4, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onInit() {
|
override fun onInit() {
|
||||||
@@ -134,10 +135,9 @@ private class ModuleTemplateComponent(
|
|||||||
templateDescriptionLabel.text = template?.description
|
templateDescriptionLabel.text = template?.description
|
||||||
}
|
}
|
||||||
|
|
||||||
override val component = panel {
|
override val component = borderPanel {
|
||||||
row {
|
addToCenter(dropDown.component)
|
||||||
dropDown.component(growX, comment = module.template?.description)
|
addToBottom(templateDescriptionLabel)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val title: String = "Template"
|
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/");
|
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")
|
@TestMetadata("nativeConsoleApplication")
|
||||||
public void testNativeConsoleApplication() throws Exception {
|
public void testNativeConsoleApplication() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
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/");
|
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")
|
@TestMetadata("nativeConsoleApplication")
|
||||||
public void testNativeConsoleApplication() throws Exception {
|
public void testNativeConsoleApplication() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
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/");
|
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")
|
@TestMetadata("nativeConsoleApplication")
|
||||||
public void testNativeConsoleApplication() throws Exception {
|
public void testNativeConsoleApplication() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
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/");
|
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")
|
@TestMetadata("nativeConsoleApplication")
|
||||||
public void testNativeConsoleApplication() throws Exception {
|
public void testNativeConsoleApplication() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/nativeConsoleApplication/");
|
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.core.entity.settings.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
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.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
@@ -54,6 +55,7 @@ sealed class ProjectTemplate : DisplayableSettingItem {
|
|||||||
MultiplatformLibrary,
|
MultiplatformLibrary,
|
||||||
AndroidApplication,
|
AndroidApplication,
|
||||||
IOSApplication,
|
IOSApplication,
|
||||||
|
MultiplatformMobileLibrary,
|
||||||
NativeConsoleApplication,
|
NativeConsoleApplication,
|
||||||
JsBrowserApplication
|
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