From 19dd38caa148bda61bd9f8cbc5781b7fc9621bc1 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 29 May 2020 13:18:57 +0300 Subject: [PATCH] IDEA-236390 Implement new UI for editing run configuration settings subgroups moved to the bottom GitOrigin-RevId: f2a87ab4efc20e25b5b646dd9fb9cfbafd4f3664 --- .../application/JavaApplicationSettingsEditor.java | 5 +---- .../src/com/intellij/execution/ui/CommonTags.java | 4 ++-- .../execution/ui/FragmentedSettingsBuilder.java | 13 ++++++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java b/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java index d4d6a4fadd0e..17c209eaa125 100644 --- a/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java +++ b/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java @@ -73,12 +73,9 @@ public class JavaApplicationSettingsEditor extends RunConfigurationFragmentedEdi ShortenCommandLineModeCombo combo = new ShortenCommandLineModeCombo(myProject, jrePathEditor, moduleClasspath.component().getComponent()); - LabeledComponent component = - LabeledComponent.create(combo, ExecutionBundle.message("application.configuration.shorten.command.line.label")); - component.setLabelLocation(BorderLayout.WEST); fragments.add(new SettingsEditorFragment<>("shorten.command.line", ExecutionBundle.message("application.configuration.shorten.command.line"), - group, component, + group, LabeledComponent.create(combo, ExecutionBundle.message("application.configuration.shorten.command.line.label"), BorderLayout.WEST), (configuration, c) -> c.getComponent().setItem(configuration.getShortenCommandLine()), (configuration, c) -> configuration.setShortenCommandLine(c.getComponent().getSelectedItem()), configuration -> configuration.getShortenCommandLine() != null)); diff --git a/platform/execution-impl/src/com/intellij/execution/ui/CommonTags.java b/platform/execution-impl/src/com/intellij/execution/ui/CommonTags.java index fe07d82ca3f6..26f6fff3cfef 100644 --- a/platform/execution-impl/src/com/intellij/execution/ui/CommonTags.java +++ b/platform/execution-impl/src/com/intellij/execution/ui/CommonTags.java @@ -10,8 +10,8 @@ public class CommonTags { return SettingsEditorFragment.createTag("runParallel", ExecutionBundle.message("run.configuration.allow.running.parallel"), ExecutionBundle.message("group.operating.system"), - s -> s.isAllowRunningInParallel(), - (s, aBoolean) -> s.setAllowRunningInParallel(aBoolean) + s -> s.isAllowRunningInParallel(), + (s, value) -> s.setAllowRunningInParallel(value) ); } } diff --git a/platform/platform-api/src/com/intellij/execution/ui/FragmentedSettingsBuilder.java b/platform/platform-api/src/com/intellij/execution/ui/FragmentedSettingsBuilder.java index a301e1599554..4d6ba416590d 100644 --- a/platform/platform-api/src/com/intellij/execution/ui/FragmentedSettingsBuilder.java +++ b/platform/platform-api/src/com/intellij/execution/ui/FragmentedSettingsBuilder.java @@ -50,6 +50,8 @@ public class FragmentedSettingsBuilder implements CompositeSettingsBui addLine(new JSeparator()); } List> fragments = new ArrayList<>(myFragments); + List> subGroups = ContainerUtil.filter(fragments, fragment -> !fragment.getChildren().isEmpty()); + fragments.removeAll(subGroups); fragments.sort(Comparator.comparingInt(SettingsEditorFragment::getCommandLinePosition)); buildBeforeRun(fragments); addLine(buildHeader(fragments)); @@ -59,7 +61,6 @@ public class FragmentedSettingsBuilder implements CompositeSettingsBui addLine(buildCommandLinePanel(fragments)); JPanel tagsPanel = new JPanel(new WrapLayout(FlowLayout.LEADING)); - tagsPanel.setBorder(JBUI.Borders.empty(5, -5, 5, 0)); for (SettingsEditorFragment fragment : fragments) { if (fragment.isTag()) { tagsPanel.add(fragment.getComponent()); @@ -69,8 +70,14 @@ public class FragmentedSettingsBuilder implements CompositeSettingsBui } } addLine(tagsPanel); - myConstraints.weighty = 1; - myPanel.add(new JPanel(), myConstraints); + + for (SettingsEditorFragment group : subGroups) { + addLine(group.getComponent()); + } + if (myMain == null) { + myConstraints.weighty = 1; + myPanel.add(new JPanel(), myConstraints); + } List panels = fragments.stream().map(SettingsEditorFragment::component).filter(component -> component instanceof PanelWithAnchor)