void (@NotNull SystemSettings s) { List<ProjectSettings> settings = new ArrayList<>(s.getLinkedProjectsSettings()); if (settings.isEmpty()) { ExternalSystemUiUtil.fillBottom(myComponent); return; } myComponent.add(new TitledSeparator(ExternalSystemBundle.message("settings.title.projects.settings", myExternalSystemId.getReadableName())), ExternalSystemUiUtil.getFillLineConstraints(0)); OnePixelSplitter splitter = new OnePixelSplitter(false, .16f); myProjectsModel = new DefaultListModel<>(); myProjectsList = new JBList<>(myProjectsModel); myProjectsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JBScrollPane scrollPane = new JBScrollPane(myProjectsList); scrollPane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT | SideBorder.TOP | SideBorder.BOTTOM)); splitter.setFirstComponent(scrollPane); PaintAwarePanel details = new PaintAwarePanel(new GridBagLayout()); splitter.setSecondComponent(details); myComponent.add(splitter, ExternalSystemUiUtil .getFillLineConstraints(1) .fillCell() .weighty(1) .pady(JBUIScale.scale(30))); ContainerUtil.sort(settings, Comparator.comparing(s2 -> getProjectName(s2.getExternalProjectPath()))); myProjectSettingsControls.clear(); for (ProjectSettings setting : settings) { ExternalSystemSettingsControl<ProjectSettings> control = createProjectSettingsControl(setting); control.fillUi(details, 1); myProjectsModel.addElement(getProjectName(setting.getExternalProjectPath())); myProjectSettingsControls.add(control); if (control instanceof AbstractExternalProjectSettingsControl<?>) { ((AbstractExternalProjectSettingsControl<?>)control).setCurrentProject(myProject); } control.showUi(false); } ExternalSystemUiUtil.fillBottom(details); myProjectsList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { return; } int i = myProjectsList.getSelectedIndex(); if (i < 0) { return; } if (myActiveProjectSettingsControl != null) { myActiveProjectSettingsControl.showUi(false); } myActiveProjectSettingsControl = myProjectSettingsControls.get(i); myActiveProjectSettingsControl.showUi(true); } }); if (!myProjectsModel.isEmpty()) { myProjectsList.setSelectedIndex(0); } }