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"; + } +}