From 300e9581deaefde6549543086bad5b17c123a736 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Wed, 8 Jul 2020 18:25:27 +0300 Subject: [PATCH] Fix UI for Kotlin Scripting page Show 15 items in the list by default Show hint at the top Fixed for 201+ ^KT-40097 Fixed --- .../KotlinScriptingSettingsConfigurable.form | 4 +- .../KotlinScriptingSettingsConfigurable.java | 6 +- ...tlinScriptingSettingsConfigurable.java.193 | 105 ++++++++++++++++++ 3 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 idea/src/org/jetbrains/kotlin/idea/script/configuration/KotlinScriptingSettingsConfigurable.java.193 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; + } +}