New Script File Action

^KT-10935 Fixed
This commit is contained in:
Natalia Selezneva
2018-04-27 13:29:38 +03:00
parent 1d8d1e847a
commit 9107ef6490
10 changed files with 84 additions and 1 deletions
@@ -0,0 +1,14 @@
<html>
<body>
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse">
<tr>
<td colspan="3">
<font face="verdana" size="-1">
This is a built-in template used by <b>IDEA</b> each time you create a
Kotlin script
</font>
</td>
</tr>
</table>
</body>
</html>
+4
View File
@@ -79,6 +79,9 @@
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="NewGroup1"/>
</action>
<action id="Kotlin.NewScript" class="org.jetbrains.kotlin.idea.actions.NewKotlinScriptAction">
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
</action>
<group id = "ConvertJavaToKotlinGroup">
<separator/>
@@ -352,6 +355,7 @@
<internalFileTemplate name="Kotlin Class"/>
<internalFileTemplate name="Kotlin Enum"/>
<internalFileTemplate name="Kotlin Interface"/>
<internalFileTemplate name="Kotlin Script"/>
<gotoSymbolContributor implementation="org.jetbrains.kotlin.idea.goto.KotlinGotoSymbolContributor"/>
<gotoClassContributor implementation="org.jetbrains.kotlin.idea.goto.KotlinGotoClassContributor"/>
+3
View File
@@ -79,6 +79,9 @@
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="NewGroup1"/>
</action>
<action id="Kotlin.NewScript" class="org.jetbrains.kotlin.idea.actions.NewKotlinScriptAction">
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
</action>
<group id = "ConvertJavaToKotlinGroup">
<separator/>
+3
View File
@@ -79,6 +79,9 @@
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="NewGroup1"/>
</action>
<action id="Kotlin.NewScript" class="org.jetbrains.kotlin.idea.actions.NewKotlinScriptAction">
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
</action>
<group id = "ConvertJavaToKotlinGroup">
<separator/>
+3
View File
@@ -80,6 +80,9 @@
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="NewGroup1"/>
</action>
<action id="Kotlin.NewScript" class="org.jetbrains.kotlin.idea.actions.NewKotlinScriptAction">
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
</action>
<group id = "ConvertJavaToKotlinGroup">
<separator/>
+3
View File
@@ -79,6 +79,9 @@
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="NewGroup1"/>
</action>
<action id="Kotlin.NewScript" class="org.jetbrains.kotlin.idea.actions.NewKotlinScriptAction">
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
</action>
<group id = "ConvertJavaToKotlinGroup">
<separator/>
+3
View File
@@ -79,6 +79,9 @@
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="NewGroup1"/>
</action>
<action id="Kotlin.NewScript" class="org.jetbrains.kotlin.idea.actions.NewKotlinScriptAction">
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
</action>
<group id = "ConvertJavaToKotlinGroup">
<separator/>
@@ -115,7 +115,7 @@ class NewKotlinFileAction
companion object {
private fun findOrCreateTarget(dir: PsiDirectory, name: String, directorySeparators: Array<Char>): Pair<String, PsiDirectory> {
var className = name.removeSuffix(".kt")
var className = name.substringBeforeLast(".kt")
var targetDir = dir
for (splitChar in directorySeparators) {
@@ -0,0 +1,50 @@
/*
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.actions
import com.intellij.ide.actions.CreateFileFromTemplateAction
import com.intellij.ide.actions.CreateFileFromTemplateDialog
import com.intellij.ide.fileTemplates.FileTemplate
import com.intellij.openapi.module.ModuleUtilCore
import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiDirectory
import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.psi.KtFile
class NewKotlinScriptAction : CreateFileFromTemplateAction(
"Kotlin Script",
"Creates new Kotlin script",
KotlinFileType.INSTANCE.icon
), DumbAware {
override fun postProcess(createdElement: PsiFile, templateName: String?, customProperties: Map<String, String>?) {
super.postProcess(createdElement, templateName, customProperties)
val module = ModuleUtilCore.findModuleForPsiElement(createdElement)
if (createdElement is KtFile && module != null) {
NewKotlinFileHook.EP_NAME.extensions.forEach { it.postProcess(createdElement, module) }
}
}
override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) {
builder.setTitle("New Kotlin Script")
.addKind("Kotlin Script", KotlinFileType.INSTANCE.icon, "Kotlin Script")
}
override fun createFileFromTemplate(name: String, template: FileTemplate, dir: PsiDirectory) =
NewKotlinFileAction.createFileFromTemplate(name, template, dir)
override fun getActionName(directory: PsiDirectory, newName: String, templateName: String) = "Kotlin Script"
override fun startInWriteAction() = false
override fun hashCode(): Int = 0
override fun equals(other: Any?): Boolean = other is NewKotlinScriptAction
}