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
This commit is contained in:
Natalia Selezneva
2020-07-08 18:25:27 +03:00
parent dd20b9062a
commit 300e9581de
3 changed files with 111 additions and 4 deletions
@@ -35,7 +35,7 @@
<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="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"/>
<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"/>
@@ -49,7 +49,7 @@
</grid>
<component id="54c9d" class="javax.swing.JLabel">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<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>
<text resource-bundle="messages/KotlinBundle" key="kotlin.script.definitions.model.name.autoReloadScriptDependencies.description"/>
@@ -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<ModelDescriptor> table = new TableView<>(model);
panelScriptDefinitionsChooser.add(
ToolbarDecorator.createDecorator(new TableView<>(model))
ToolbarDecorator.createDecorator(table)
.disableAddAction()
.disableRemoveAction()
.createPanel()
);
table.setVisibleRowCount(15);
return root;
}
@@ -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<ModelDescriptor> 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;
}
}