void (@Nullable Sdk selectedSdk) { final List<Sdk> allPythonSdks = getAvailableSdks(); final List<Object> items = new ArrayList<>(); items.add(null); final Map<PyRenderedSdkType, List<Sdk>> moduleSdksByTypes = groupModuleSdksByTypes(allPythonSdks, myModule, sdk -> !PySdkExtKt.getSdkSeemsValid(sdk)); final PyRenderedSdkType[] renderedSdkTypes = PyRenderedSdkType.values(); for (int i = 0; i < renderedSdkTypes.length; i++) { final PyRenderedSdkType currentSdkType = renderedSdkTypes[i]; if (moduleSdksByTypes.containsKey(currentSdkType)) { if (i != 0) items.add(PySdkListCellRenderer.SEPARATOR); items.addAll(moduleSdksByTypes.get(currentSdkType)); } } items.add(PySdkListCellRenderer.SEPARATOR); items.add(getShowAll()); mySdkCombo.setRenderer(new PySdkListCellRenderer()); final Sdk selection = getEditableSdkUsingOriginal(selectedSdk); mySdkCombo.setModel(new CollectionComboBoxModel<>(items, selection)); // The call of `setSelectedItem` is required to notify `PyPathMappingsUiProvider` about initial setting of `Sdk` via `setModel` above // Fragile as it is vulnerable to changes of `setSelectedItem` method in respect to processing `ActionEvent` mySdkCombo.setSelectedItem(selection); onSdkSelected(); }