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