diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt
index 3209de4e0bc..a00711ec1dd 100644
--- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt
+++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt
@@ -124,7 +124,7 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
updateDefinitions()
}
- fun getAllDefinitions() = currentDefinitions
+ fun getAllDefinitions() = currentDefinitions.toList()
override fun getDefaultScriptDefinition(): KotlinScriptDefinition {
return StandardIdeScriptDefinition(project)
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index b3512a3f87e..61f27060f23 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -491,9 +491,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/META-INF/plugin.xml.173 b/idea/src/META-INF/plugin.xml.173
index 256b1e38a3b..0e624f2ad2b 100644
--- a/idea/src/META-INF/plugin.xml.173
+++ b/idea/src/META-INF/plugin.xml.173
@@ -489,9 +489,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/META-INF/plugin.xml.181 b/idea/src/META-INF/plugin.xml.181
index 0e9e809ede4..2c3200eb682 100644
--- a/idea/src/META-INF/plugin.xml.181
+++ b/idea/src/META-INF/plugin.xml.181
@@ -490,9 +490,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/META-INF/plugin.xml.183 b/idea/src/META-INF/plugin.xml.183
index 5a50fccd254..5d0f437f2ea 100644
--- a/idea/src/META-INF/plugin.xml.183
+++ b/idea/src/META-INF/plugin.xml.183
@@ -491,9 +491,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/META-INF/plugin.xml.as31 b/idea/src/META-INF/plugin.xml.as31
index a640de6f8b8..ece6fd3f1d2 100644
--- a/idea/src/META-INF/plugin.xml.as31
+++ b/idea/src/META-INF/plugin.xml.as31
@@ -489,9 +489,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/META-INF/plugin.xml.as32 b/idea/src/META-INF/plugin.xml.as32
index 470fadb80cb..cbc1b85c293 100644
--- a/idea/src/META-INF/plugin.xml.as32
+++ b/idea/src/META-INF/plugin.xml.as32
@@ -489,9 +489,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/META-INF/plugin.xml.as33 b/idea/src/META-INF/plugin.xml.as33
index ad0da1a23ca..ed3a00c3444 100644
--- a/idea/src/META-INF/plugin.xml.as33
+++ b/idea/src/META-INF/plugin.xml.as33
@@ -490,9 +490,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
-
+
+
diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinLanguageConfiguration.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinLanguageConfiguration.kt
index efb8bc9812f..cd5fc9bc818 100644
--- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinLanguageConfiguration.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinLanguageConfiguration.kt
@@ -53,7 +53,7 @@ class KotlinUpdatesSettingsConfigurable : SearchableConfigurable, Configurable.N
override fun getId(): String = ID
- override fun getDisplayName(): String = "Kotlin Updates"
+ override fun getDisplayName(): String = "Kotlin"
override fun isModified() = false
diff --git a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptDefinitionsModel.kt b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptDefinitionsModel.kt
new file mode 100644
index 00000000000..381e621a0a2
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptDefinitionsModel.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2010-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.script.configuration
+
+import com.intellij.util.ui.ColumnInfo
+import com.intellij.util.ui.ListTableModel
+import org.jetbrains.kotlin.idea.core.script.StandardIdeScriptDefinition
+import org.jetbrains.kotlin.parsing.KotlinParserDefinition
+import org.jetbrains.kotlin.script.KotlinScriptDefinition
+import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
+import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPIBase
+
+class KotlinScriptDefinitionsModel(definitions: ArrayList) :
+ ListTableModel(
+ arrayOf(
+ ScriptDefinitionName(),
+ ScriptDefinitionPattern()
+ ),
+ definitions,
+ 0
+ ) {
+
+ private class ScriptDefinitionName : ColumnInfo("Name") {
+ override fun valueOf(item: KotlinScriptDefinition) = item.name
+ }
+
+ private class ScriptDefinitionPattern : ColumnInfo("Pattern/Extension") {
+ override fun valueOf(item: KotlinScriptDefinition): String {
+ return when (item) {
+ is KotlinScriptDefinitionFromAnnotatedTemplate -> item.scriptFilePattern.pattern
+ is KotlinScriptDefinitionAdapterFromNewAPIBase -> item.fileExtension
+ is StandardIdeScriptDefinition -> KotlinParserDefinition.STD_SCRIPT_EXT
+ else -> ""
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form
new file mode 100644
index 00000000000..eb360c13fb1
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form
@@ -0,0 +1,60 @@
+
+
diff --git a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java
new file mode 100644
index 00000000000..87c21d0b19b
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2010-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.script.configuration;
+
+import com.google.common.collect.Lists;
+import com.intellij.openapi.options.Configurable;
+import com.intellij.openapi.options.SearchableConfigurable;
+import com.intellij.openapi.project.Project;
+import com.intellij.ui.ToolbarDecorator;
+import com.intellij.ui.table.TableView;
+import org.jetbrains.annotations.Nls;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class KotlinScriptingSettingsConfigurable implements SearchableConfigurable, Configurable.NoScroll {
+ private JPanel root;
+ private JPanel panelScriptDefinitionsChooser;
+
+ private KotlinScriptDefinitionsModel model;
+
+ private final ScriptDefinitionsManager manager;
+
+ public KotlinScriptingSettingsConfigurable(Project project) {
+ manager = ScriptDefinitionsManager.Companion.getInstance(project);
+ }
+
+ @Nullable
+ @Override
+ public JComponent createComponent() {
+ model = new KotlinScriptDefinitionsModel(Lists.newArrayList(manager.getAllDefinitions()));
+
+ panelScriptDefinitionsChooser.setLayout(new BorderLayout());
+ panelScriptDefinitionsChooser.add(
+ ToolbarDecorator.createDecorator(new TableView<>(model))
+ .disableAddAction()
+ .disableRemoveAction()
+ .createPanel()
+ );
+
+ return root;
+ }
+
+ @Override
+ public boolean isModified() {
+ return !model.getItems().equals(manager.getAllDefinitions());
+ }
+
+ @Override
+ public void apply() {
+ // todo
+ }
+
+ @Override
+ public void reset() {
+ // todo
+ }
+
+
+ @Override
+ @Nls
+ public String getDisplayName() {
+ return "Kotlin Scripting";
+ }
+
+ @Override
+ @NotNull
+ public String getId() {
+ return "preferences.language.Kotlin.scripting";
+ }
+}