public void replaceComponent()

in src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java [533:565]


  public void replaceComponent(@NotNull final IpnbEditablePanel from, @NotNull final IpnbCell cell) {
    CommandProcessor.getInstance().executeCommand(getProject(), () -> ApplicationManager.getApplication().runWriteAction(() -> {
      final int index = myIpnbPanels.indexOf(from);
      IpnbEditablePanel panel;
      if (cell instanceof IpnbCodeCell) {
        panel = new IpnbCodePanel(myProject, myParent, (IpnbCodeCell)cell);
      }
      else if (cell instanceof IpnbMarkdownCell) {
        panel = new IpnbMarkdownPanel((IpnbMarkdownCell)cell, myParent.getIpnbFilePanel());
      }
      else if (cell instanceof IpnbHeadingCell) {
        panel = new IpnbHeadingPanel((IpnbHeadingCell)cell);
      }
      else {
        throw new UnsupportedOperationException(cell.getClass().toString());
      }
      if (index >= 0) {
        myIpnbFile.removeCell(index);
        myIpnbPanels.remove(index);
        remove(index);

        myIpnbFile.addCell(cell, index);
        myIpnbPanels.add(index, panel);
        add(panel, index);
      }

      if (from instanceof IpnbCodePanel) {
        panel.switchToEditing();
      }
      setSelectedCellPanel(panel);
      saveToFile(false);
    }), "Ipnb.changeCellType", new Object());
  }