Books/navigation (#6280)

* added previous and next buttons

* previous and next notebook API

* links for prev/next notebooks

* fixed first and last pages

* made code more readable

* addressed Kevin's comments

* moved logic over to BookTreeItem

* show buttons in dev mode only

* added BookTreeItemFormat interface

* added interface and enum

* removed localize call
This commit is contained in:
Lucy Zhang
2019-07-12 10:18:46 -07:00
committed by GitHub
parent 6606be998b
commit a706ff4d5b
13 changed files with 347 additions and 37 deletions

View File

@@ -45,6 +45,10 @@ export interface INotebookService {
*/
unregisterProvider(providerId: string): void;
registerNavigationProvider(provider: INavigationProvider): void;
getNavigationProvider(notebookUri: URI): INavigationProvider;
getSupportedFileExtensions(): string[];
getProvidersForFileType(fileType: string): string[];
@@ -149,3 +153,9 @@ export interface INotebookEditor {
getSections(): INotebookSection[];
navigateToSection(sectionId: string): void;
}
export interface INavigationProvider {
providerId: string;
onNext(uri: URI): void;
onPrevious(uri: URI): void;
}

View File

@@ -10,7 +10,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
import {
INotebookService, INotebookManager, INotebookProvider,
DEFAULT_NOTEBOOK_FILETYPE, INotebookEditor, SQL_NOTEBOOK_PROVIDER, OVERRIDE_EDITOR_THEMING_SETTING
DEFAULT_NOTEBOOK_FILETYPE, INotebookEditor, SQL_NOTEBOOK_PROVIDER, OVERRIDE_EDITOR_THEMING_SETTING, INavigationProvider
} from 'sql/workbench/services/notebook/common/notebookService';
import { RenderMimeRegistry } from 'sql/workbench/parts/notebook/outputs/registry';
import { standardRendererFactories } from 'sql/workbench/parts/notebook/outputs/factories';
@@ -97,6 +97,7 @@ export class NotebookService extends Disposable implements INotebookService {
private _trustedNotebooksMemento: Memento;
private _mimeRegistry: RenderMimeRegistry;
private _providers: Map<string, ProviderDescriptor> = new Map();
private _navigationProviders: Map<string, INavigationProvider> = new Map();
private _managersMap: Map<string, INotebookManager[]> = new Map();
private _onNotebookEditorAdd = new Emitter<INotebookEditor>();
private _onNotebookEditorRemove = new Emitter<INotebookEditor>();
@@ -269,6 +270,15 @@ export class NotebookService extends Disposable implements INotebookService {
this._providers.delete(providerId);
}
registerNavigationProvider(provider: INavigationProvider): void {
this._navigationProviders.set(provider.providerId, provider);
}
getNavigationProvider(): INavigationProvider {
let provider = this._navigationProviders.size > 0 ? this._navigationProviders.values().next().value : undefined;
return provider;
}
get isRegistrationComplete(): boolean {
return this._isRegistrationComplete;
}