in src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java [212:248]
private IpnbConnectionListenerBase createConnectionListener(@Nullable IpnbCodePanel codePanel, Ref<Boolean> connectionOpened) {
return new IpnbConnectionListenerBase() {
@Override
public void onOpen(@NotNull IpnbConnection connection) {
connectionOpened.set(true);
if (codePanel == null) return;
final String messageId = connection.execute(codePanel.getCell().getSourceAsString());
myUpdateMap.put(messageId, codePanel);
}
@Override
public void onOutput(@NotNull IpnbConnection connection,
@NotNull String parentMessageId) {
if (!myUpdateMap.containsKey(parentMessageId)) return;
final IpnbCodePanel cell = myUpdateMap.get(parentMessageId);
cell.getCell().setPromptNumber(connection.getExecCount());
cell.updatePanel(null, connection.getOutput());
}
@Override
public void onPayload(@Nullable String payload, @NotNull String parentMessageId) {
if (!myUpdateMap.containsKey(parentMessageId)) return;
final IpnbCodePanel cell = myUpdateMap.remove(parentMessageId);
if (payload != null) {
cell.updatePanel(payload, null);
}
}
@Override
public void onFinished(@NotNull IpnbConnection connection, @NotNull String parentMessageId) {
if (!myUpdateMap.containsKey(parentMessageId)) return;
final IpnbCodePanel cell = myUpdateMap.remove(parentMessageId);
cell.getCell().setPromptNumber(connection.getExecCount());
cell.finishExecution();
}
};
}