List<JComponent> (JRadioButton button, ModelScopeItem m, Disposable dialogDisposable) { VcsScopeItem model = (VcsScopeItem)m; DefaultComboBoxModel<LocalChangeList> comboBoxModel = model.getChangeListsModel(); if (comboBoxModel == null) { return Collections.emptyList(); } ComboBox<LocalChangeList> comboBox = new ComboBox<>(); comboBox.setRenderer(SimpleListCellRenderer.create((@NotNull JBLabel label, @Nullable LocalChangeList value, int index) -> { int availableWidth = comboBox.getWidth(); // todo, is it correct? if (availableWidth <= 0) { availableWidth = JBUIScale.scale(200); } String text = value != null ? value.getName() : CodeInsightBundle.message("scope.option.uncommitted.files.all.changelists.choice"); if (label.getFontMetrics(label.getFont()).stringWidth(text) >= availableWidth) { text = StringUtil.trimLog(text, 50); } label.setText(text); })); comboBox.setModel(comboBoxModel); comboBox.setEnabled(button.isSelected()); button.addItemListener(e -> comboBox.setEnabled(button.isSelected())); ArrayList<JComponent> components = new ArrayList<>(); components.add(comboBox); return components; }