diff --git a/idea/resources-en/messages/KotlinBundle.properties b/idea/resources-en/messages/KotlinBundle.properties index a5b57965757..7a3536e6bf2 100644 --- a/idea/resources-en/messages/KotlinBundle.properties +++ b/idea/resources-en/messages/KotlinBundle.properties @@ -332,6 +332,7 @@ action.new.file.dialog.data.class.title=Data Class action.new.file.dialog.sealed.class.title=Sealed Class action.new.file.dialog.annotation.title=Annotation action.new.file.dialog.interface.title=Interface +action.new.file.dialog.sealed.interface.title=Sealed Interface action.new.file.dialog.enum.title=Enum class action.new.file.dialog.object.title=Object action.new.file.error.empty.name=Name can't be empty diff --git a/idea/resources/fileTemplates/internal/Kotlin Sealed Interface.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Sealed Interface.kt.ft new file mode 100644 index 00000000000..70df990d276 --- /dev/null +++ b/idea/resources/fileTemplates/internal/Kotlin Sealed Interface.kt.ft @@ -0,0 +1,5 @@ +#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME} + +#end +#parse("File Header.java") +sealed interface ${NAME} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt index 48ec0ce9c98..a3f84b8d80b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt @@ -29,9 +29,11 @@ import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiFile import com.intellij.util.IncorrectOperationException import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings import org.jetbrains.kotlin.idea.statistics.FUSEventGroups import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger import org.jetbrains.kotlin.idea.util.application.runWriteAction @@ -91,11 +93,20 @@ class NewKotlinFileAction : CreateFileFromTemplateAction( KotlinIcons.INTERFACE, "Kotlin Interface" ) - .addKind( - KotlinBundle.message("action.new.file.dialog.data.class.title"), - KotlinIcons.CLASS, - "Kotlin Data Class" + + if (project.getLanguageVersionSettings().supportsFeature(LanguageFeature.SealedInterfaces)) { + builder.addKind( + KotlinBundle.message("action.new.file.dialog.sealed.interface.title"), + KotlinIcons.INTERFACE, + "Kotlin Sealed Interface" ) + } + + builder.addKind( + KotlinBundle.message("action.new.file.dialog.data.class.title"), + KotlinIcons.CLASS, + "Kotlin Data Class" + ) .addKind( KotlinBundle.message("action.new.file.dialog.enum.title"), KotlinIcons.ENUM, diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.201 b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.201 index e366c6c2127..e6421c03c94 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.201 @@ -91,11 +91,20 @@ class NewKotlinFileAction : CreateFileFromTemplateAction( KotlinIcons.INTERFACE, "Kotlin Interface" ) - .addKind( - KotlinBundle.message("action.new.file.dialog.data.class.title"), - KotlinIcons.CLASS, - "Kotlin Data Class" + + if (project.getLanguageVersionSettings().supportsFeature(LanguageFeature.SealedInterfaces)) { + builder.addKind( + KotlinBundle.message("action.new.file.dialog.sealed.interface.title"), + KotlinIcons.INTERFACE, + "Kotlin Sealed Interface" ) + } + + builder.addKind( + KotlinBundle.message("action.new.file.dialog.data.class.title"), + KotlinIcons.CLASS, + "Kotlin Data Class" + ) .addKind( KotlinBundle.message("action.new.file.dialog.enum.title"), KotlinIcons.ENUM, diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.203 b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.203 index df7ab319f36..8740286d732 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.203 +++ b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt.203 @@ -91,11 +91,20 @@ class NewKotlinFileAction : CreateFileFromTemplateAction( KotlinIcons.INTERFACE, "Kotlin Interface" ) - .addKind( - KotlinBundle.message("action.new.file.dialog.data.class.title"), - KotlinIcons.CLASS, - "Kotlin Data Class" + + if (project.getLanguageVersionSettings().supportsFeature(LanguageFeature.SealedInterfaces)) { + builder.addKind( + KotlinBundle.message("action.new.file.dialog.sealed.interface.title"), + KotlinIcons.INTERFACE, + "Kotlin Sealed Interface" ) + } + + builder.addKind( + KotlinBundle.message("action.new.file.dialog.data.class.title"), + KotlinIcons.CLASS, + "Kotlin Data Class" + ) .addKind( KotlinBundle.message("action.new.file.dialog.enum.title"), KotlinIcons.ENUM,