in src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java [401:441]
protected void hyperlinkActivated(HyperlinkEvent e) {
final List<RunnerAndConfigurationSettings> configurationsList =
RunManager.getInstance(myProject).getConfigurationSettingsList(IpnbRunConfigurationType.getInstance());
if (configurationsList.isEmpty()) {
final RunnerAndConfigurationSettings configurationSettings = PyRunConfigurationFactory.getInstance()
.createRunConfiguration(ModuleManager.getInstance(myProject).getModules()[0],
IpnbRunConfigurationType.getInstance().getConfigurationFactories()[0]);
final IpnbRunConfiguration configuration = (IpnbRunConfiguration)configurationSettings.getConfiguration();
configuration.setHost(IpnbConfigurationEditor.DEFAULT_HOST);
configuration.setPort(IpnbConfigurationEditor.DEFAULT_PORT);
ExecutionUtil.runConfiguration(configurationSettings, DefaultRunExecutor.getRunExecutorInstance());
}
else {
if (configurationsList.size() == 1) {
ExecutionUtil.runConfiguration(configurationsList.get(0), DefaultRunExecutor.getRunExecutorInstance());
}
else {
final JList<RunnerAndConfigurationSettings> list = new JBList<>(configurationsList);
list.setCellRenderer(new ColoredListCellRenderer<RunnerAndConfigurationSettings>() {
@Override
protected void customizeCellRenderer(@NotNull JList<? extends RunnerAndConfigurationSettings> list,
RunnerAndConfigurationSettings value, int index,
boolean selected, boolean hasFocus) {
append(value.getName());
}
});
final PopupChooserBuilder builder = new PopupChooserBuilder(list);
builder.setTitle("Choose Jupyter Notebook Server");
builder.setItemChoosenCallback(() -> {
final RunnerAndConfigurationSettings configuration = list.getSelectedValue();
ExecutionUtil.runConfiguration(configuration, DefaultRunExecutor.getRunExecutorInstance());
});
final JBPopup popup = builder.createPopup();
final PointerInfo pointerInfo = MouseInfo.getPointerInfo();
if (pointerInfo == null) return;
final Point point = pointerInfo.getLocation();
popup.showInScreenCoordinates(WindowManagerEx.getInstanceEx().getMostRecentFocusedWindow(), point);
}
}
}