private IpnbConnectionListenerBase createConnectionListener()

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();
      }
    };
  }