private void prepareProjectSettings(@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);
    }
  }
private void prepareProjectSettings(@NotNull SystemSettings s)