Notebook Views (#13465)

* Add notebook editor

Introduce notebook editor component to allow for separate notebook displays in order to accomodate notebook views

* Localize notebook views configuration title

* Refactor view mode and remove the views configuration while it is unused

* Only fire view mode changed event when the value has been changed

* Remove notebook views contribution
This commit is contained in:
Daniel Grajeda
2020-12-27 14:08:27 -07:00
committed by GitHub
parent f314a9e1e6
commit 11f236ade1
8 changed files with 254 additions and 88 deletions

View File

@@ -24,6 +24,11 @@ import type { FutureInternal } from 'sql/workbench/services/notebook/browser/int
import { ICellValue, ResultSetSummary } from 'sql/workbench/services/query/common/query';
import { QueryResultId } from 'sql/workbench/services/notebook/browser/models/cell';
export enum ViewMode {
Notebook,
Views,
}
export interface ICellRange {
readonly start: number;
readonly end: number;
@@ -334,6 +339,12 @@ export interface INotebookModel {
*/
providerId: string;
/**
* View mode for this model. It determines what editor mode
* will be displayed.
*/
viewMode: ViewMode;
/**
* Change the current kernel from the Kernel dropdown
* @param displayName kernel name (as displayed in Kernel dropdown)

View File

@@ -9,7 +9,7 @@ import { localize } from 'vs/nls';
import { Event, Emitter } from 'vs/base/common/event';
import { Disposable } from 'vs/base/common/lifecycle';
import { IClientSession, INotebookModel, INotebookModelOptions, ICellModel, NotebookContentChange, MoveDirection } from 'sql/workbench/services/notebook/browser/models/modelInterfaces';
import { IClientSession, INotebookModel, INotebookModelOptions, ICellModel, NotebookContentChange, MoveDirection, ViewMode } from 'sql/workbench/services/notebook/browser/models/modelInterfaces';
import { NotebookChangeType, CellType, CellTypes } from 'sql/workbench/services/notebook/common/contracts';
import { nbversion } from 'sql/workbench/services/notebook/common/notebookConstants';
import * as notebookUtils from 'sql/workbench/services/notebook/browser/models/notebookUtils';
@@ -56,6 +56,7 @@ export class NotebookModel extends Disposable implements INotebookModel {
private _contentChangedEmitter = new Emitter<NotebookContentChange>();
private _kernelsChangedEmitter = new Emitter<nb.IKernel>();
private _kernelChangedEmitter = new Emitter<nb.IKernelChangedArgs>();
private _viewModeChangedEmitter = new Emitter<ViewMode>();
private _layoutChanged = new Emitter<void>();
private _inErrorState: boolean = false;
private _activeClientSession: IClientSession | undefined;
@@ -71,6 +72,7 @@ export class NotebookModel extends Disposable implements INotebookModel {
private _tags: string[] | undefined;
private _existingMetadata: nb.INotebookMetadata = {};
private _language: string = '';
private _viewMode: ViewMode = ViewMode.Notebook;
private _onErrorEmitter = new Emitter<INotification>();
private _savedKernelInfo: nb.IKernelSpec | undefined;
private _savedConnectionName: string | undefined;
@@ -274,6 +276,21 @@ export class NotebookModel extends Disposable implements INotebookModel {
});
}
public get viewModeChanged(): Event<ViewMode> {
return this._viewModeChangedEmitter.event;
}
public get viewMode() {
return this._viewMode;
}
public set viewMode(mode: ViewMode) {
if (mode !== this._viewMode) {
this._viewMode = mode;
this._viewModeChangedEmitter.fire(mode);
}
}
/**
* Indicates the server has finished loading. It may have failed to load in
* which case the view will be in an error state.