Make JPS-based wizards available only for new_module use case

This commit is contained in:
Anton Yalyshev
2020-05-15 00:06:36 +03:00
parent f0ff4b066e
commit 59ca626487
2 changed files with 32 additions and 21 deletions
@@ -105,8 +105,8 @@ create.kotlin.javascript.library=Create Kotlin JavaScript Library
javascript.library.creation=JavaScript Library Creation
java.runtime.library.creation=Java Runtime Library Creation
presentable.type.js.files=JS files
kotlin.project.with.a.javascript.target.based.on.the.intellij.idea.build.system=Kotlin project with a JavaScript target based on the IntelliJ IDEA build system
kotlin.project.with.a.jvm.target.based.on.the.intellij.idea.build.system=Kotlin project with a JVM target based on the IntelliJ IDEA build system
kotlin.project.with.a.javascript.target.based.on.the.intellij.idea.build.system=Kotlin module with a JavaScript target based on the IntelliJ IDEA build system
kotlin.project.with.a.jvm.target.based.on.the.intellij.idea.build.system=Kotlin module with a JVM target based on the IntelliJ IDEA build system
command.action.add.injection.comment=Add injection comment
command.action.add.injection.annotation=Add injection annotation
command.action.remove.injection.in.code.instructions=remove injection in-code instructions
@@ -9,6 +9,7 @@ import com.intellij.ide.util.projectWizard.ModuleBuilder
import com.intellij.ide.util.projectWizard.WizardContext
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.roots.ui.configuration.actions.NewModuleAction
import com.intellij.platform.ProjectTemplate
import com.intellij.platform.ProjectTemplatesFactory
import com.intellij.platform.templates.BuilderBasedTemplate
@@ -31,30 +32,40 @@ class KotlinTemplatesFactory : ProjectTemplatesFactory() {
override fun getGroupWeight(group: String?): Int = 1
override fun createTemplates(group: String?, context: WizardContext?): Array<out ProjectTemplate> {
val result = mutableListOf<ProjectTemplate>(
BuilderBasedTemplate(
KotlinModuleBuilder(
JvmPlatforms.unspecifiedJvmPlatform,
"JVM | IDEA",
KotlinJvmBundle.message("presentable.name.jvm.idea"),
KotlinJvmBundle.message("kotlin.project.with.a.jvm.target.based.on.the.intellij.idea.build.system"),
KotlinIcons.SMALL_LOGO
)
),
BuilderBasedTemplate(
KotlinModuleBuilder(
JsPlatforms.defaultJsPlatform,
"JS | IDEA",
KotlinJvmBundle.message("presentable.name.js.idea"),
KotlinJvmBundle.message("kotlin.project.with.a.javascript.target.based.on.the.intellij.idea.build.system"),
KotlinIcons.JS
val result = mutableListOf<ProjectTemplate>()
if (isNewModuleAction()) {
result.add(
BuilderBasedTemplate(
KotlinModuleBuilder(
JvmPlatforms.unspecifiedJvmPlatform,
"JVM | IDEA",
KotlinJvmBundle.message("presentable.name.jvm.idea"),
KotlinJvmBundle.message("kotlin.project.with.a.jvm.target.based.on.the.intellij.idea.build.system"),
KotlinIcons.SMALL_LOGO
)
)
)
)
result.add(
BuilderBasedTemplate(
KotlinModuleBuilder(
JsPlatforms.defaultJsPlatform,
"JS | IDEA",
KotlinJvmBundle.message("presentable.name.js.idea"),
KotlinJvmBundle.message("kotlin.project.with.a.javascript.target.based.on.the.intellij.idea.build.system"),
KotlinIcons.JS
)
)
)
}
@Suppress("DEPRECATION")
result.addAll(Extensions.getExtensions(EP_NAME).map { BuilderBasedTemplate(it) })
return result.toTypedArray()
}
private fun isNewModuleAction(): Boolean {
return Thread.currentThread().stackTrace.any { element ->
element.className == NewModuleAction::class.java.name
}
}
}