use of com.intellij.framework.library.FrameworkLibraryVersionFilter in project intellij-community by JetBrains.
the class LibraryOptionsPanel method showSettingsPanel.
private void showSettingsPanel(CustomLibraryDescription libraryDescription, NotNullComputable<String> pathProvider, FrameworkLibraryVersionFilter versionFilter, boolean showDoNotCreateOption, final List<? extends FrameworkLibraryVersion> versions) {
//todo[nik] create mySettings only in apply() method
mySettings = new LibraryCompositionSettings(libraryDescription, pathProvider, versionFilter, versions);
Disposer.register(this, mySettings);
List<Library> libraries = calculateSuitableLibraries();
myButtonEnumModel = RadioButtonEnumModel.bindEnum(Choice.class, myButtonGroup);
myButtonEnumModel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateState();
onVersionChanged(getPresentableVersion());
}
});
myDoNotCreateRadioButton.setVisible(showDoNotCreateOption);
myLibraryComboBoxModel = new SortedComboBoxModel<>((o1, o2) -> {
final String name1 = o1.getName();
final String name2 = o2.getName();
return -StringUtil.notNullize(name1).compareToIgnoreCase(StringUtil.notNullize(name2));
});
for (Library library : libraries) {
ExistingLibraryEditor libraryEditor = myLibrariesContainer.getLibraryEditor(library);
if (libraryEditor == null) {
libraryEditor = mySettings.getOrCreateEditor(library);
}
myLibraryComboBoxModel.add(libraryEditor);
}
myExistingLibraryComboBox.setModel(myLibraryComboBoxModel);
if (libraries.isEmpty()) {
myLibraryComboBoxModel.add(null);
}
myExistingLibraryComboBox.setSelectedIndex(0);
myExistingLibraryComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED && e.getItem() != null) {
myButtonEnumModel.setSelected(Choice.USE_LIBRARY);
}
updateState();
onVersionChanged(getPresentableVersion());
}
});
myExistingLibraryComboBox.setRenderer(new ColoredListCellRenderer<LibraryEditor>(myExistingLibraryComboBox) {
@Override
protected void customizeCellRenderer(@NotNull JList<? extends LibraryEditor> list, LibraryEditor value, int index, boolean selected, boolean hasFocus) {
if (value == null) {
append("[No library selected]");
} else if (value instanceof ExistingLibraryEditor) {
final Library library = ((ExistingLibraryEditor) value).getLibrary();
final boolean invalid = !((LibraryEx) library).getInvalidRootUrls(OrderRootType.CLASSES).isEmpty();
OrderEntryAppearanceService.getInstance().forLibrary(getProject(), library, invalid).customize(this);
} else if (value instanceof NewLibraryEditor) {
setIcon(PlatformIcons.LIBRARY_ICON);
final String name = value.getName();
append(name != null ? name : "<unnamed>");
}
}
});
boolean canDownload = mySettings.getDownloadSettings() != null;
boolean canUseFromProvider = myLibraryProvider != null;
myDownloadRadioButton.setVisible(canDownload);
myUseFromProviderRadioButton.setVisible(canUseFromProvider);
Choice selectedOption;
if (canUseFromProvider) {
selectedOption = Choice.USE_FROM_PROVIDER;
} else if (libraries.isEmpty() && canDownload) {
selectedOption = Choice.DOWNLOAD;
} else {
selectedOption = Choice.USE_LIBRARY;
doCreate(true);
}
myButtonEnumModel.setSelected(selectedOption);
if (!canDownload && !canUseFromProvider && !showDoNotCreateOption) {
myUseLibraryRadioButton.setVisible(false);
myUseLibraryLabel.setVisible(true);
} else {
myUseLibraryLabel.setVisible(false);
}
final Dimension minimumSize = new Dimension(-1, myMessageLabel.getFontMetrics(myMessageLabel.getFont()).getHeight() * 2);
myHiddenLabel.setMinimumSize(minimumSize);
myCreateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
doCreate(false);
}
});
myConfigureButton.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
doConfigure();
}
});
updateState();
showCard("editing");
}
Aggregations