diff --git a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form
index 1bf60e3749a..b5b3ab7a1c8 100644
--- a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form
+++ b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.form
@@ -35,7 +35,7 @@
-
+
@@ -49,7 +49,7 @@
-
+
diff --git a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java
index 2c156a4f3fc..bf7c0a34489 100644
--- a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java
+++ b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java
@@ -12,9 +12,9 @@ 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.KotlinBundle;
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager;
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings;
-import org.jetbrains.kotlin.idea.KotlinBundle;
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition;
import javax.swing.*;
@@ -42,13 +42,15 @@ public class KotlinScriptingSettingsConfigurable implements SearchableConfigurab
model = KotlinScriptDefinitionsModel.Companion.createModel(manager.getAllDefinitions(), settings);
panelScriptDefinitionsChooser.setLayout(new BorderLayout());
+ TableView table = new TableView<>(model);
panelScriptDefinitionsChooser.add(
- ToolbarDecorator.createDecorator(new TableView<>(model))
+ ToolbarDecorator.createDecorator(table)
.disableAddAction()
.disableRemoveAction()
.createPanel()
);
+ table.setVisibleRowCount(15);
return root;
}
diff --git a/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java.193 b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java.193
new file mode 100644
index 00000000000..f306b270818
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java.193
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * 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.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.KotlinBundle;
+import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager;
+import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings;
+import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class KotlinScriptingSettingsConfigurable implements SearchableConfigurable, Configurable.NoScroll {
+ public static final String ID = "preferences.language.Kotlin.scripting";
+
+ private JPanel root;
+ private JPanel panelScriptDefinitionsChooser;
+
+ private KotlinScriptDefinitionsModel model;
+
+ private final ScriptDefinitionsManager manager;
+ private final KotlinScriptingSettings settings;
+
+ public KotlinScriptingSettingsConfigurable(Project project) {
+ manager = ScriptDefinitionsManager.Companion.getInstance(project);
+ settings = KotlinScriptingSettings.Companion.getInstance(project);
+ }
+
+ @Nullable
+ @Override
+ public JComponent createComponent() {
+ model = KotlinScriptDefinitionsModel.Companion.createModel(manager.getAllDefinitions(), settings);
+
+ panelScriptDefinitionsChooser.setLayout(new BorderLayout());
+ TableView table = new TableView<>(model);
+ panelScriptDefinitionsChooser.add(
+ ToolbarDecorator.createDecorator(table)
+ .disableAddAction()
+ .disableRemoveAction()
+ .createPanel()
+ );
+
+ return root;
+ }
+
+ @Override
+ public boolean isModified() {
+ return isScriptDefinitionsChanged();
+ }
+
+ @Override
+ public void apply() {
+ if (isScriptDefinitionsChanged()) {
+ for (ModelDescriptor item : model.getItems()) {
+ ScriptDefinition definition = item.getDefinition();
+ int order = model.getItems().indexOf(item);
+ settings.setOrder(definition, order);
+ settings.setEnabled(definition, item.isEnabled());
+ settings.setAutoReloadConfigurations(definition, item.getAutoReloadConfigurations());
+ }
+
+ manager.reorderScriptDefinitions();
+ }
+ }
+
+ @Override
+ public void reset() {
+ model.setDefinitions(manager.getAllDefinitions(), settings);
+ }
+
+ private boolean isScriptDefinitionsChanged() {
+ for (ModelDescriptor item : model.getItems()) {
+ if (settings.isScriptDefinitionEnabled(item.getDefinition()) != item.isEnabled()) {
+ return true;
+ }
+ if (settings.autoReloadConfigurations(item.getDefinition()) != item.getAutoReloadConfigurations()) {
+ return true;
+ }
+ }
+ return !model.getDefinitions().equals(manager.getAllDefinitions());
+ }
+
+
+ @Override
+ @Nls
+ public String getDisplayName() {
+ return KotlinBundle.message("script.name.kotlin.scripting");
+ }
+
+ @Override
+ @NotNull
+ public String getId() {
+ return ID;
+ }
+}