public IpnbFilePanel()

in src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java [81:137]


  public IpnbFilePanel(@NotNull final Project project, @NotNull final IpnbFileEditor parent, @NotNull final VirtualFile vFile,
                       @NotNull final IpnbFileEditor.CellSelectionListener listener) {
    super(new VerticalFlowLayout(VerticalFlowLayout.TOP, 100, 5, true, false));
    myProject = project;
    myParent = parent;
    myVirtualFile = vFile;
    myListener = listener;
    myEditable = new EditActionsProvider();
    setBackground(IpnbEditorUtil.getBackground());
    addKeyListener(new KeyStrokeAdapter() {
      @Override
      public void keyPressed(KeyEvent event) {
        super.keyPressed(event);
      }
    });

    final Alarm alarm = new Alarm();
    myDocumentListener = new DocumentListener() {
      @Override
      public void documentChanged(@NotNull final DocumentEvent e) {
        if (mySynchronize) {
          alarm.cancelAllRequests();
          alarm.addRequest(new MySynchronizeRequest(), 10, ModalityState.stateForComponent(IpnbFilePanel.this));
        }
        mySynchronize = true;
      }
    };
    myDocument = myParent.getDocument();
    myDocument.addDocumentListener(myDocumentListener);

    alarm.addRequest(() -> {
      readFromFile(true);
      addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
          updateCellSelection(e);
        }
      });
      setFocusable(true);
    }, 10, ModalityState.stateForComponent(this));
    myParent.loaded();
    IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> IdeFocusManager.getGlobalInstance().requestFocus(this, true));
    myBusConnection = ApplicationManager.getApplication().getMessageBus().connect();
    myBusConnection.subscribe(ProjectEx.ProjectSaved.TOPIC,
                              new ProjectEx.ProjectSaved() {
                                @Override
                                public void saved(@NotNull Project project) {
                                  executeSaveFileCommand();
                                }
                              });

    myBusConnection.subscribe(TOPIC, (wasInEditing, isEditing) -> {
      if (wasInEditing && !isEditing) {
        executeSaveFileCommand();
    }
  });
  }