From 597bc061e271ef5219d68aa3d271b4188b364c74 Mon Sep 17 00:00:00 2001
From: pavlospt
Date: Wed, 24 Jun 2020 13:26:07 +0200
Subject: [PATCH] Add Kotlin Data Class, Sealed Class and Annotation file
templates
#KT-20775 Fixed
---
.../resources-en/messages/KotlinBundle.properties | 3 +++
.../internal/Kotlin Annotation.kt.ft | 5 +++++
.../internal/Kotlin Data Class.kt.ft | 5 +++++
.../internal/Kotlin Data Class.kt.html | 14 ++++++++++++++
.../internal/Kotlin Sealed Class.kt.ft | 5 +++++
.../kotlin/idea/actions/NewKotlinFileAction.kt | 15 +++++++++++++++
6 files changed, 47 insertions(+)
create mode 100644 idea/resources/fileTemplates/internal/Kotlin Annotation.kt.ft
create mode 100644 idea/resources/fileTemplates/internal/Kotlin Data Class.kt.ft
create mode 100644 idea/resources/fileTemplates/internal/Kotlin Data Class.kt.html
create mode 100644 idea/resources/fileTemplates/internal/Kotlin Sealed Class.kt.ft
diff --git a/idea/resources-en/messages/KotlinBundle.properties b/idea/resources-en/messages/KotlinBundle.properties
index bb898c4a148..816409a6119 100644
--- a/idea/resources-en/messages/KotlinBundle.properties
+++ b/idea/resources-en/messages/KotlinBundle.properties
@@ -341,6 +341,9 @@ action.new.file.description=Creates new Kotlin class or file
action.new.file.dialog.title=New Kotlin Class/File
action.new.file.dialog.file.title=File
action.new.file.dialog.class.title=Class
+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.enum.title=Enum class
action.new.file.dialog.object.title=Object
diff --git a/idea/resources/fileTemplates/internal/Kotlin Annotation.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Annotation.kt.ft
new file mode 100644
index 00000000000..477ab1f4e36
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Annotation.kt.ft
@@ -0,0 +1,5 @@
+#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}
+
+#end
+#parse("File Header.java")
+annotation class ${NAME}()
diff --git a/idea/resources/fileTemplates/internal/Kotlin Data Class.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Data Class.kt.ft
new file mode 100644
index 00000000000..850aa5c19ba
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Data Class.kt.ft
@@ -0,0 +1,5 @@
+#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}
+
+#end
+#parse("File Header.java")
+data class ${NAME}()
diff --git a/idea/resources/fileTemplates/internal/Kotlin Data Class.kt.html b/idea/resources/fileTemplates/internal/Kotlin Data Class.kt.html
new file mode 100644
index 00000000000..c1648021e5e
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Data Class.kt.html
@@ -0,0 +1,14 @@
+
+
+
+
+ |
+
+ This is a built-in template used by IDEA each time you create a
+ Kotlin data class
+
+ |
+
+
+
+
diff --git a/idea/resources/fileTemplates/internal/Kotlin Sealed Class.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Sealed Class.kt.ft
new file mode 100644
index 00000000000..c179ef83fd2
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Sealed Class.kt.ft
@@ -0,0 +1,5 @@
+#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}
+
+#end
+#parse("File Header.java")
+sealed class ${NAME}
diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt
index 4d6b5194625..e366c6c2127 100644
--- a/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/actions/NewKotlinFileAction.kt
@@ -91,11 +91,26 @@ class NewKotlinFileAction : CreateFileFromTemplateAction(
KotlinIcons.INTERFACE,
"Kotlin Interface"
)
+ .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,
"Kotlin Enum"
)
+ .addKind(
+ KotlinBundle.message("action.new.file.dialog.sealed.class.title"),
+ KotlinIcons.CLASS,
+ "Kotlin Sealed Class"
+ )
+ .addKind(
+ KotlinBundle.message("action.new.file.dialog.annotation.title"),
+ KotlinIcons.ANNOTATION,
+ "Kotlin Annotation"
+ )
.addKind(
KotlinBundle.message("action.new.file.dialog.object.title"),
KotlinIcons.OBJECT,