#4363: Reopen notebook editors when ADS launched (#4424)

* #4363: Reopen notebook editors when ADS launched

* Code review changes
This commit is contained in:
Raj
2019-03-12 23:02:37 -07:00
committed by GitHub
parent b495fb7a37
commit ebd187ec06
5 changed files with 30 additions and 15 deletions

View File

@@ -14,7 +14,7 @@ import { QueryInput } from 'sql/parts/query/common/queryInput';
import { IQueryEditorOptions } from 'sql/workbench/services/queryEditor/common/queryEditorService';
import { QueryPlanInput } from 'sql/parts/queryPlan/queryPlanInput';
import { NotebookInput } from 'sql/parts/notebook/notebookInput';
import { DEFAULT_NOTEBOOK_PROVIDER, INotebookService } from 'sql/workbench/services/notebook/common/notebookService';
import { INotebookService } from 'sql/workbench/services/notebook/common/notebookService';
import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput';
import { notebookModeId } from 'sql/common/constants';
@@ -57,14 +57,12 @@ export function convertEditorInput(input: EditorInput, options: IQueryEditorOpti
//Notebook
uri = getNotebookEditorUri(input, instantiationService);
if (uri) {
return withService<INotebookService, NotebookInput>(instantiationService, INotebookService, notebookService => {
let fileName: string = 'untitled';
if (input) {
fileName = input.getName();
}
let notebookInput: NotebookInput = instantiationService.createInstance(NotebookInput, fileName, uri);
return notebookInput;
});
let fileName: string = 'untitled';
if (input) {
fileName = input.getName();
}
let notebookInput: NotebookInput = instantiationService.createInstance(NotebookInput, fileName, uri, input);
return notebookInput;
}
}
return input;

View File

@@ -28,6 +28,7 @@ import { notebookModeId } from 'sql/common/constants';
import { ITextFileService, ISaveOptions } from 'vs/workbench/services/textfile/common/textfiles';
import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput';
export type ModeViewSaveHandler = (handle: number) => Thenable<boolean>;
@@ -142,6 +143,7 @@ export class NotebookInput extends EditorInput {
constructor(private _title: string,
private resource: URI,
private _textInput: UntitledEditorInput,
@ITextModelService private textModelService: ITextModelService,
@IUntitledEditorService untitledEditorService: IUntitledEditorService,
@IInstantiationService private instantiationService: IInstantiationService,
@@ -154,6 +156,10 @@ export class NotebookInput extends EditorInput {
this.assignProviders();
}
public get textInput(): UntitledEditorInput {
return this._textInput;
}
public confirmSave(): TPromise<ConfirmResult> {
return this._model.confirmSave();
}
@@ -258,7 +264,7 @@ export class NotebookInput extends EditorInput {
} else {
let textOrUntitledEditorModel: UntitledEditorModel | IEditorModel;
if (this.resource.scheme === Schemas.untitled) {
textOrUntitledEditorModel = await this._untitledEditorService.loadOrCreate({ resource: this.resource, modeId: notebookModeId });
textOrUntitledEditorModel = await this._textInput.resolve();
}
else {
const textEditorModelReference = await this.textModelService.createModelReference(this.resource);

View File

@@ -30,6 +30,9 @@ import { disposed } from 'vs/base/common/errors';
import { ICellModel, NotebookContentChange, INotebookModel } from 'sql/parts/notebook/models/modelInterfaces';
import { NotebookChangeType, CellTypes } from 'sql/parts/notebook/models/contracts';
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { notebookModeId } from 'sql/common/constants';
import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput';
class MainThreadNotebookEditor extends Disposable {
private _contentChangedEmitter = new Emitter<NotebookContentChange>();
@@ -290,6 +293,7 @@ export class MainThreadNotebookDocumentsAndEditors extends Disposable implements
private _modelToDisposeMap = new Map<string, IDisposable>();
constructor(
extHostContext: IExtHostContext,
@IUntitledEditorService private _untitledEditorService: IUntitledEditorService,
@IInstantiationService private _instantiationService: IInstantiationService,
@IEditorService private _editorService: IEditorService,
@IEditorGroupsService private _editorGroupService: IEditorGroupsService,
@@ -361,9 +365,11 @@ export class MainThreadNotebookDocumentsAndEditors extends Disposable implements
preserveFocus: options.preserveFocus,
pinned: !options.preview
};
let trusted = uri.scheme === Schemas.untitled;
let input = this._instantiationService.createInstance(NotebookInput, uri.fsPath, uri);
input.isTrusted = trusted;
let isUntitled: boolean = uri.scheme === Schemas.untitled;
const fileInput: UntitledEditorInput = isUntitled ? this._untitledEditorService.createOrGet(uri, notebookModeId) : undefined;
let input = this._instantiationService.createInstance(NotebookInput, uri.fsPath, uri, fileInput);
input.isTrusted = isUntitled;
input.defaultKernel = options.defaultKernel;
input.connectionProfile = new ConnectionProfile(this._capabilitiesService, options.connectionProfile);