use of com.intellij.util.NullableConsumer in project intellij-community by JetBrains.
the class CreateVirtualEnvDialog method layoutPanel.
protected void layoutPanel(final List<Sdk> allSdks) {
final GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(2, 2, 2, 2);
c.gridx = 0;
c.gridy = 0;
c.weightx = 0.0;
myMainPanel.add(new JBLabel(PyBundle.message("sdk.create.venv.dialog.label.name")), c);
c.gridx = 1;
c.gridy = 0;
c.gridwidth = 2;
c.weightx = 1.0;
myMainPanel.add(myName, c);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
c.weightx = 0.0;
myMainPanel.add(new JBLabel(PyBundle.message("sdk.create.venv.dialog.label.location")), c);
c.gridx = 1;
c.gridy = 1;
c.gridwidth = 2;
c.weightx = 1.0;
myMainPanel.add(myDestination, c);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
c.weightx = 0.0;
myMainPanel.add(new JBLabel(PyBundle.message("sdk.create.venv.dialog.label.base.interpreter")), c);
c.gridx = 1;
c.gridy = 2;
mySdkCombo = new ComboBox();
c.insets = new Insets(2, 2, 2, 2);
c.weightx = 1.0;
myMainPanel.add(mySdkCombo, c);
c.gridx = 2;
c.gridy = 2;
c.insets = new Insets(0, 0, 2, 2);
c.weightx = 0.0;
FixedSizeButton button = new FixedSizeButton();
button.setPreferredSize(myDestination.getButton().getPreferredSize());
myMainPanel.add(button, c);
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 3;
c.insets = new Insets(2, 2, 2, 2);
mySitePackagesCheckBox = new JBCheckBox(PyBundle.message("sdk.create.venv.dialog.label.inherit.global.site.packages"));
myMainPanel.add(mySitePackagesCheckBox, c);
c.gridx = 0;
c.gridy = 4;
myMainPanel.add(myMakeAvailableToAllProjectsCheckbox, c);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final PythonSdkType sdkType = PythonSdkType.getInstance();
final FileChooserDescriptor descriptor = sdkType.getHomeChooserDescriptor();
String suggestedPath = sdkType.suggestHomePath();
VirtualFile suggestedDir = suggestedPath == null ? null : LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(suggestedPath));
final NullableConsumer<Sdk> consumer = sdk -> {
if (sdk == null)
return;
if (!allSdks.contains(sdk)) {
allSdks.add(sdk);
}
updateSdkList(allSdks, sdk);
};
FileChooser.chooseFiles(descriptor, myProject, suggestedDir, new FileChooser.FileChooserConsumer() {
@Override
public void consume(List<VirtualFile> selectedFiles) {
String path = selectedFiles.get(0).getPath();
if (sdkType.isValidSdkHome(path)) {
path = FileUtil.toSystemDependentName(path);
Sdk newSdk = null;
for (Sdk sdk : allSdks) {
if (path.equals(sdk.getHomePath())) {
newSdk = sdk;
}
}
if (newSdk == null) {
newSdk = new PyDetectedSdk(path);
}
consumer.consume(newSdk);
}
}
@Override
public void cancelled() {
}
});
}
});
}
Aggregations