Merge from vscode 2cd495805cf99b31b6926f08ff4348124b2cf73d

This commit is contained in:
ADS Merger
2020-06-30 04:40:21 +00:00
committed by AzureDataStudio
parent a8a7559229
commit 1388493cc1
602 changed files with 16375 additions and 12940 deletions

View File

@@ -33,21 +33,38 @@ function MODEL_ID(resource: URI): string {
return resource.toString();
}
export class NotebookProviderInfoStore implements IDisposable {
export class NotebookProviderInfoStore extends Disposable {
private static readonly CUSTOM_EDITORS_STORAGE_ID = 'notebookEditors';
private static readonly CUSTOM_EDITORS_ENTRY_ID = 'editors';
private readonly _memento: Memento;
constructor(storageService: IStorageService) {
private _handled: boolean = false;
constructor(
storageService: IStorageService,
extensionService: IExtensionService
) {
super();
this._memento = new Memento(NotebookProviderInfoStore.CUSTOM_EDITORS_STORAGE_ID, storageService);
const mementoObject = this._memento.getMemento(StorageScope.GLOBAL);
for (const info of (mementoObject[NotebookProviderInfoStore.CUSTOM_EDITORS_ENTRY_ID] || []) as NotebookEditorDescriptor[]) {
this.add(new NotebookProviderInfo(info));
}
this._register(extensionService.onDidRegisterExtensions(() => {
if (!this._handled) {
// there is no extension point registered for notebook content provider
// clear the memento and cache
this.clear();
mementoObject[NotebookProviderInfoStore.CUSTOM_EDITORS_ENTRY_ID] = [];
this._memento.saveMemento();
}
}));
}
update(extensions: readonly IExtensionPointUser<INotebookEditorContribution[]>[]) {
setupHandler(extensions: readonly IExtensionPointUser<INotebookEditorContribution[]>[]) {
this._handled = true;
this.clear();
for (const extension of extensions) {
@@ -81,9 +98,6 @@ export class NotebookProviderInfoStore implements IDisposable {
}
dispose(): void {
}
private readonly _contributedEditors = new Map<string, NotebookProviderInfo>();
clear() {
@@ -188,13 +202,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu
) {
super();
this.notebookProviderInfoStore = new NotebookProviderInfoStore(this._storageService);
this.notebookProviderInfoStore = new NotebookProviderInfoStore(this._storageService, this._extensionService);
this._register(this.notebookProviderInfoStore);
notebookProviderExtensionPoint.setHandler((extensions) => {
this.notebookProviderInfoStore.update(extensions);
// console.log(this._notebookProviderInfoStore);
this.notebookProviderInfoStore.setupHandler(extensions);
});
notebookRendererExtensionPoint.setHandler((renderers) => {
@@ -683,13 +695,17 @@ export class NotebookService extends Disposable implements INotebookService, ICu
this._onNotebookEditorAdd.fire(editor);
}
getNotebookEditor(editorId: string) {
return this._notebookEditors.get(editorId);
}
listNotebookEditors(): INotebookEditor[] {
return [...this._notebookEditors].map(e => e[1]);
}
listVisibleNotebookEditors(): INotebookEditor[] {
return this._editorService.visibleEditorPanes
.filter(pane => (pane as any).isNotebookEditor)
.filter(pane => (pane as unknown as { isNotebookEditor?: boolean }).isNotebookEditor)
.map(pane => pane.getControl() as INotebookEditor)
.filter(editor => !!editor)
.filter(editor => this._notebookEditors.has(editor.getId()));
@@ -750,11 +766,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu
return undefined; // {{SQL CARBON EDIT}} strict-null-check
}
onDidReceiveMessage(viewType: string, editorId: string, message: any): void {
onDidReceiveMessage(viewType: string, editorId: string, rendererType: string | undefined, message: any): void {
let provider = this._notebookProviders.get(viewType);
if (provider) {
return provider.controller.onDidReceiveMessage(editorId, message);
return provider.controller.onDidReceiveMessage(editorId, rendererType, message);
}
}