IDEA-236390 Implement new UI for editing run configuration settings

introducing RunnerAndConfigurationSettingsEditor to edit RunnerAndConfigurationSettings directly

GitOrigin-RevId: 238e4760f8e3e71f672bb70fe3038782bc7cda4a
This commit is contained in:
Dmitry Avdeev
2020-05-09 05:25:10 +00:00
committed by intellij-monorepo-bot
parent 6417ff2711
commit 3c141fc7c7
5 changed files with 57 additions and 12 deletions
@@ -185,10 +185,10 @@ public class ConfigurationSettingsEditor extends CompositeSettingsEditor<RunnerA
return null;
}
public ConfigurationSettingsEditor(@NotNull RunnerAndConfigurationSettings settings) {
public ConfigurationSettingsEditor(@NotNull RunnerAndConfigurationSettings settings, SettingsEditor<RunConfiguration> configurationEditor) {
super(settings.createFactory());
myConfigurationEditor = (SettingsEditor<RunConfiguration>)settings.getConfiguration().getConfigurationEditor();
myConfigurationEditor = configurationEditor;
myConfigurationEditor.addSettingsEditorListener(editor -> fireEditorStateChanged());
Disposer.register(this, myConfigurationEditor);
myConfiguration = settings.getConfiguration();
@@ -7,6 +7,8 @@ import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.WithoutOwnBeforeRunSteps;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.ui.FragmentedSettingsEditor;
import com.intellij.execution.ui.RunnerAndConfigurationSettingsEditor;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
import com.intellij.ide.util.PropertiesComponent;
@@ -54,8 +56,8 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
return myEditor.selectTabAndGetEditor(editorClass);
}
public ConfigurationSettingsEditorWrapper(@NotNull RunnerAndConfigurationSettings settings) {
myEditor = new ConfigurationSettingsEditor(settings);
private ConfigurationSettingsEditorWrapper(@NotNull RunnerAndConfigurationSettings settings, SettingsEditor<RunConfiguration> configurationEditor) {
myEditor = new ConfigurationSettingsEditor(settings, configurationEditor);
myEditor.addSettingsEditorListener(editor -> fireStepsBeforeRunChanged());
Disposer.register(this, myEditor);
myBeforeRunStepsPanel = new BeforeRunStepsPanel(this);
@@ -91,14 +93,10 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
myDisclaimerPanel.setVisible(settings.isTemplate() && ProjectManager.getInstance().getOpenProjects().length != 0);
}
public boolean isFragmented() {
return myEditor.isFragmented();
}
@Override
@NotNull
protected JComponent createEditor() {
if (isFragmented()) {
if (myEditor.isFragmented()) {
return myEditor.getComponent();
}
myComponentPlace.setLayout(new BorderLayout());
@@ -193,4 +191,12 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
}
});
}
public static SettingsEditor<RunnerAndConfigurationSettings> createWrapper(@NotNull RunnerAndConfigurationSettings settings) {
@SuppressWarnings("unchecked") SettingsEditor<RunConfiguration> configurationEditor =
(SettingsEditor<RunConfiguration>)settings.getConfiguration().getConfigurationEditor();
return configurationEditor instanceof FragmentedSettingsEditor<?>
? new RunnerAndConfigurationSettingsEditor(settings, configurationEditor)
: new ConfigurationSettingsEditorWrapper(settings, configurationEditor);
}
}
@@ -98,7 +98,7 @@ public final class SingleConfigurationConfigurable<Config extends RunConfigurati
@Nullable Boolean myDotIdeaStorageVcsIgnored = null; // used as cache; null means not initialized yet
private SingleConfigurationConfigurable(@NotNull RunnerAndConfigurationSettings settings, @Nullable Executor executor) {
super(new ConfigurationSettingsEditorWrapper(settings), settings);
super(ConfigurationSettingsEditorWrapper.createWrapper(settings), settings);
myProject = settings.getConfiguration().getProject();
myExecutor = executor;
@@ -675,7 +675,7 @@ public final class SingleConfigurationConfigurable<Config extends RunConfigurati
myIsAllowRunningInParallel = configuration.isAllowRunningInParallel();
myIsAllowRunningInParallelCheckBox.setEnabled(isManagedRunConfiguration);
myIsAllowRunningInParallelCheckBox.setSelected(myIsAllowRunningInParallel);
myIsAllowRunningInParallelCheckBox.setVisible(!((ConfigurationSettingsEditorWrapper)getEditor()).isFragmented() &&
myIsAllowRunningInParallelCheckBox.setVisible(getEditor() instanceof ConfigurationSettingsEditorWrapper &&
settings.getFactory().getSingletonPolicy().isPolicyConfigurable());
}
@@ -10,7 +10,7 @@ class TemplateConfigurable extends BaseRCSettingsConfigurable {
private final RunnerAndConfigurationSettings myTemplate;
TemplateConfigurable(RunnerAndConfigurationSettings template) {
super(new ConfigurationSettingsEditorWrapper(template), template);
super(ConfigurationSettingsEditorWrapper.createWrapper(template), template);
myTemplate = template;
}
@@ -0,0 +1,39 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.execution.ui;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.util.Disposer;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class RunnerAndConfigurationSettingsEditor extends SettingsEditor<RunnerAndConfigurationSettings> {
private final SettingsEditor<RunConfiguration> myConfigurationEditor;
public RunnerAndConfigurationSettingsEditor(RunnerAndConfigurationSettings settings,
SettingsEditor<RunConfiguration> configurationEditor) {
super(settings.createFactory());
myConfigurationEditor = configurationEditor;
myConfigurationEditor.addSettingsEditorListener(editor -> fireEditorStateChanged());
Disposer.register(this, myConfigurationEditor);
}
@Override
protected void resetEditorFrom(@NotNull RunnerAndConfigurationSettings s) {
myConfigurationEditor.resetFrom(s.getConfiguration());
}
@Override
protected void applyEditorTo(@NotNull RunnerAndConfigurationSettings s) throws ConfigurationException {
myConfigurationEditor.applyTo(s.getConfiguration());
}
@Override
protected @NotNull JComponent createEditor() {
return myConfigurationEditor.getComponent();
}
}