Add 'Kotlin Scripting' configuration tab

^KT-24465 In Progress
This commit is contained in:
Natalia Selezneva
2018-05-28 13:22:13 +03:00
parent 02c1ae62c3
commit 54f3982709
12 changed files with 213 additions and 9 deletions
@@ -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)
+5 -1
View File
@@ -491,9 +491,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
+5 -1
View File
@@ -489,9 +489,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
+5 -1
View File
@@ -490,9 +490,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
+5 -1
View File
@@ -491,9 +491,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
+5 -1
View File
@@ -489,9 +489,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
+5 -1
View File
@@ -489,9 +489,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
+5 -1
View File
@@ -490,9 +490,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
displayName="Kotlin Compiler"
parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin Updates" id="preferences.language.Kotlin"
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
parentId="preferences.language.Kotlin"/>
<qualifiedNameProvider implementation="org.jetbrains.kotlin.idea.actions.KotlinQualifiedNameProvider"/>
<codeInsight.parameterInfo language="kotlin" implementationClass="org.jetbrains.kotlin.idea.parameterInfo.KotlinFunctionParameterInfoHandler"/>
@@ -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
@@ -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<KotlinScriptDefinition>) :
ListTableModel<KotlinScriptDefinition>(
arrayOf(
ScriptDefinitionName(),
ScriptDefinitionPattern()
),
definitions,
0
) {
private class ScriptDefinitionName : ColumnInfo<KotlinScriptDefinition, String>("Name") {
override fun valueOf(item: KotlinScriptDefinition) = item.name
}
private class ScriptDefinitionPattern : ColumnInfo<KotlinScriptDefinition, String>("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 -> ""
}
}
}
}
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable">
<grid id="27dc6" binding="root" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="565" height="510"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="6126a" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="7" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<vspacer id="7a19">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<grid id="b9ce9" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<clientProperties>
<BorderFactoryClass class="java.lang.String" value="com.intellij.ui.IdeBorderFactory$PlainSmallWithoutIndent"/>
</clientProperties>
<border type="etched" title="Script definitions" noi18n="true"/>
<children>
<grid id="5ec35" binding="panelScriptDefinitionsChooser" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
<component id="9988" class="com.intellij.ui.components.JBLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<componentStyle value="SMALL"/>
<fontColor value="BRIGHTER"/>
<text value="Manage script definitions" noi18n="true"/>
</properties>
</component>
</children>
</grid>
</children>
</grid>
</children>
</grid>
</form>
@@ -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";
}
}