diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt index cf8e1c1c731..39ddc881f21 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt @@ -20,8 +20,10 @@ import com.intellij.ide.util.projectWizard.JavaModuleBuilder import com.intellij.ide.util.projectWizard.ModuleWizardStep import com.intellij.ide.util.projectWizard.SettingsStep import com.intellij.ide.util.projectWizard.WizardContext +import com.intellij.openapi.projectRoots.SdkTypeId import com.intellij.openapi.roots.ui.configuration.ModulesProvider import org.jetbrains.kotlin.resolve.TargetPlatform +import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import javax.swing.Icon class KotlinModuleBuilder( @@ -38,4 +40,9 @@ class KotlinModuleBuilder( override fun modifySettingsStep(settingsStep: SettingsStep): ModuleWizardStep { return KotlinModuleSettingStep(targetPlatform, this, settingsStep) } + + override fun isSuitableSdkType(sdkType: SdkTypeId?) = when (targetPlatform) { + is JvmPlatform -> super.isSuitableSdkType(sdkType) + else -> sdkType is KotlinSdkType + } } diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 02a3ced4e26..70b17f54617 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -784,6 +784,8 @@ + + org.jetbrains.kotlin.idea.intentions.FoldInitializerAndIfToElvisIntention Kotlin diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt new file mode 100644 index 00000000000..98c5fafe43e --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +/* + * Copyright 2000-2018 JetBrains s.r.o. 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.idea.framework + +import com.intellij.openapi.projectRoots.* +import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl +import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil +import com.intellij.util.Consumer +import org.jdom.Element +import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion +import javax.swing.JComponent + +class KotlinSdkType : SdkType("KotlinSDK") { + companion object { + const val DEFAULT_SDK_NAME = "Kotlin SDK" + } + + override fun getPresentableName() = DEFAULT_SDK_NAME + + override fun getIcon() = KotlinIcons.SMALL_LOGO + + override fun isValidSdkHome(path: String?) = true + + override fun suggestSdkName(currentSdkName: String?, sdkHome: String?) = "Kotlin SDK" + + override fun suggestHomePath() = null + + override fun sdkHasValidPath(sdk: Sdk) = true + + override fun getVersionString(sdk: Sdk) = bundledRuntimeVersion() + + override fun supportsCustomCreateUI() = true + + override fun showCustomCreateUI(sdkModel: SdkModel, parentComponent: JComponent, selectedSdk: Sdk?, sdkCreatedCallback: Consumer) { + val newSdkName = SdkConfigurationUtil.createUniqueSdkName(this, "", sdkModel.sdks.toList()) + sdkCreatedCallback.consume(newSdk(newSdkName)) + } + + fun newSdk(name: String) = ProjectJdkImpl(name, this).apply { + homePath = "not applicable" + } + + override fun createAdditionalDataConfigurable(sdkModel: SdkModel, sdkModificator: SdkModificator) = null + + override fun saveAdditionalData(additionalData: SdkAdditionalData, additional: Element) { + + } +} \ No newline at end of file