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