diff --git a/idea/resources/fileTemplates/internal/Kotlin Class.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Class.kt.ft
new file mode 100644
index 00000000000..f7d5109c587
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Class.kt.ft
@@ -0,0 +1,6 @@
+#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};
+
+#end
+#parse("File Header.java")
+public class ${NAME} {
+}
\ No newline at end of file
diff --git a/idea/resources/fileTemplates/internal/Kotlin Class.kt.html b/idea/resources/fileTemplates/internal/Kotlin Class.kt.html
new file mode 100644
index 00000000000..93ee653ed00
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Class.kt.html
@@ -0,0 +1,14 @@
+
+
+
+
+ |
+
+ This is a built-in template used by IDEA each time you create a
+ Kotlin class
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/idea/resources/fileTemplates/internal/Kotlin Enum.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Enum.kt.ft
new file mode 100644
index 00000000000..93a66f96334
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Enum.kt.ft
@@ -0,0 +1,6 @@
+#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};
+
+#end
+#parse("File Header.java")
+public enum class ${NAME} {
+}
\ No newline at end of file
diff --git a/idea/resources/fileTemplates/internal/Kotlin Enum.kt.html b/idea/resources/fileTemplates/internal/Kotlin Enum.kt.html
new file mode 100644
index 00000000000..f606547bb90
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Enum.kt.html
@@ -0,0 +1,14 @@
+
+
+
+
+ |
+
+ This is a built-in template used by IDEA each time you create a
+ Kotlin enum class
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/idea/resources/fileTemplates/internal/Kotlin Trait.kt.ft b/idea/resources/fileTemplates/internal/Kotlin Trait.kt.ft
new file mode 100644
index 00000000000..195f75e8963
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Trait.kt.ft
@@ -0,0 +1,6 @@
+#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};
+
+#end
+#parse("File Header.java")
+public trait ${NAME} {
+}
\ No newline at end of file
diff --git a/idea/resources/fileTemplates/internal/Kotlin Trait.kt.html b/idea/resources/fileTemplates/internal/Kotlin Trait.kt.html
new file mode 100644
index 00000000000..dbe296ac17c
--- /dev/null
+++ b/idea/resources/fileTemplates/internal/Kotlin Trait.kt.html
@@ -0,0 +1,14 @@
+
+
+
+
+ |
+
+ This is a built-in template used by IDEA each time you create a
+ Kotlin trait
+
+ |
+
+
+
+
\ No newline at end of file
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 149415999f4..a51faecca82 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -49,6 +49,9 @@
+
+
+
diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties
index a9cdc7ea77e..f8784df1890 100644
--- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties
+++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties
@@ -26,6 +26,7 @@ replace.with.dot.call=Replace with dot call
replace.with.safe.call=Replace with safe call
change.to.backing.field=Change reference to backing field
implement.members=Implement members
+new.kotlin.file.action=Kotlin File
livetemplate.description.main=main() function
livetemplate.description.soutp=Prints function parameter names and values to System.out
diff --git a/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java b/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java
index 9aad754953a..14c1811a0b1 100644
--- a/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java
+++ b/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java
@@ -16,23 +16,44 @@
package org.jetbrains.jet.plugin.actions;
-import com.intellij.ide.fileTemplates.FileTemplateManager;
-import com.intellij.ide.fileTemplates.actions.CreateFromTemplateAction;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-import org.jetbrains.jet.plugin.JetIconProvider;
+import com.intellij.ide.actions.CreateFileFromTemplateAction;
+import com.intellij.ide.actions.CreateFileFromTemplateDialog;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiDirectory;
+import com.intellij.util.PlatformIcons;
+import org.jetbrains.jet.plugin.JetBundle;
+import org.jetbrains.jet.plugin.JetFileType;
/**
* @author Nikolay Krasko
*/
-public class NewKotlinFileAction extends CreateFromTemplateAction {
-
+public class NewKotlinFileAction extends CreateFileFromTemplateAction {
public NewKotlinFileAction() {
- super(FileTemplateManager.getInstance().getInternalTemplate("Kotlin File"));
+ super(JetBundle.message("new.kotlin.file.action"), "Creates new Kotlin file", JetFileType.INSTANCE.getIcon());
}
@Override
- public void update(AnActionEvent e) {
- super.update(e);
- e.getPresentation().setIcon(JetIconProvider.KOTLIN_ICON);
+ protected void buildDialog(Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) {
+ builder
+ .setTitle(JetBundle.message("new.kotlin.file.action"))
+ .addKind("Class", PlatformIcons.CLASS_ICON, "Kotlin Class")
+ .addKind("Trait", PlatformIcons.INTERFACE_ICON, "Kotlin Trait")
+ .addKind("Enum class", PlatformIcons.ENUM_ICON, "Kotlin Enum")
+ .addKind("Kotlin file", JetFileType.INSTANCE.getIcon(), "Kotlin File");
+ }
+
+ @Override
+ protected String getActionName(PsiDirectory directory, String newName, String templateName) {
+ return JetBundle.message("new.kotlin.file.action");
+ }
+
+ @Override
+ public int hashCode() {
+ return 0;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return obj instanceof NewKotlinFileAction;
}
}
diff --git a/idea/testData/templates/main.kt b/idea/testData/templates/main.kt
index e69de29bb2d..81389d50841 100644
--- a/idea/testData/templates/main.kt
+++ b/idea/testData/templates/main.kt
@@ -0,0 +1 @@
+
\ No newline at end of file