Normalize property names in notebooks - remove _ on privates when possible

This commit is contained in:
Rob Lourens 2020-06-17 12:39:13 -05:00
parent 8ba8383072
commit 3c9728579b
3 changed files with 91 additions and 90 deletions

View file

@ -31,9 +31,9 @@ export class NotebookEditor extends BaseEditor {
private readonly editorMemento: IEditorMemento<INotebookEditorViewState>;
private readonly groupListener = this._register(new MutableDisposable());
private readonly _widgetDisposableStore: DisposableStore = new DisposableStore();
private _widget: IBorrowValue<NotebookEditorWidget> = { value: undefined };
private _rootElement!: HTMLElement;
private readonly widgetDisposableStore: DisposableStore = new DisposableStore();
private widget: IBorrowValue<NotebookEditorWidget> = { value: undefined };
private rootElement!: HTMLElement;
private dimension?: DOM.Dimension;
// todo@rebornix is there a reason that `super.fireOnDidFocus` isn't used?
@ -58,14 +58,14 @@ export class NotebookEditor extends BaseEditor {
}
set viewModel(newModel: NotebookViewModel | undefined) {
if (this._widget.value) {
this._widget.value.viewModel = newModel;
if (this.widget.value) {
this.widget.value.viewModel = newModel;
this._onDidChangeModel.fire();
}
}
get viewModel() {
return this._widget.value?.viewModel;
return this.widget.value?.viewModel;
}
get minimumWidth(): number { return 375; }
@ -82,26 +82,26 @@ export class NotebookEditor extends BaseEditor {
}
protected createEditor(parent: HTMLElement): void {
this._rootElement = DOM.append(parent, DOM.$('.notebook-editor'));
this.rootElement = DOM.append(parent, DOM.$('.notebook-editor'));
// this._widget.createEditor();
this._register(this.onDidFocus(() => this._widget.value?.updateEditorFocus()));
this._register(this.onDidBlur(() => this._widget.value?.updateEditorFocus()));
this._register(this.onDidFocus(() => this.widget.value?.updateEditorFocus()));
this._register(this.onDidBlur(() => this.widget.value?.updateEditorFocus()));
}
getDomNode() {
return this._rootElement;
return this.rootElement;
}
getControl(): NotebookEditorWidget | undefined {
return this._widget.value;
return this.widget.value;
}
onWillHide() {
this.saveEditorViewState(this.input);
if (this.input && this._widget.value) {
if (this.input && this.widget.value) {
// the widget is not transfered to other editor inputs
this._widget.value.onWillHide();
this.widget.value.onWillHide();
}
super.onWillHide();
}
@ -113,7 +113,7 @@ export class NotebookEditor extends BaseEditor {
focus() {
super.focus();
this._widget.value?.focus();
this.widget.value?.focus();
}
async setInput(input: NotebookEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise<void> {
@ -123,21 +123,21 @@ export class NotebookEditor extends BaseEditor {
this.saveEditorViewState(this.input);
await super.setInput(input, options, token);
this._widgetDisposableStore.clear();
this.widgetDisposableStore.clear();
// there currently is a widget which we still own so
// we need to hide it before getting a new widget
if (this._widget.value) {
this._widget.value.onWillHide();
if (this.widget.value) {
this.widget.value.onWillHide();
}
this._widget = this.instantiationService.invokeFunction(this.notebookWidgetService.retrieveWidget, group, input);
this.widget = this.instantiationService.invokeFunction(this.notebookWidgetService.retrieveWidget, group, input);
if (this.dimension) {
this._widget.value!.layout(this.dimension, this._rootElement);
this.widget.value!.layout(this.dimension, this.rootElement);
}
const model = await input.resolve(this._widget.value!.getId());
const model = await input.resolve(this.widget.value!.getId());
if (model === null) {
this.notificationService.prompt(
@ -157,19 +157,19 @@ export class NotebookEditor extends BaseEditor {
const viewState = this.loadTextEditorViewState(input);
await this._widget.value!.setModel(model.notebook, viewState, options);
this._widgetDisposableStore.add(this._widget.value!.onDidFocus(() => this._onDidFocusWidget.fire()));
await this.widget.value!.setModel(model.notebook, viewState, options);
this.widgetDisposableStore.add(this.widget.value!.onDidFocus(() => this._onDidFocusWidget.fire()));
if (this.editorGroupService instanceof EditorPart) {
this._widgetDisposableStore.add(this.editorGroupService.createEditorDropTarget(this._widget.value!.getDomNode(), {
this.widgetDisposableStore.add(this.editorGroupService.createEditorDropTarget(this.widget.value!.getDomNode(), {
groupContainsPredicate: (group) => this.group?.id === group.group.id
}));
}
}
clearInput(): void {
if (this._widget.value) {
this._widget.value.onWillHide();
if (this.widget.value) {
this.widget.value.onWillHide();
}
super.clearInput();
}
@ -181,8 +181,8 @@ export class NotebookEditor extends BaseEditor {
}
private saveEditorViewState(input: IEditorInput | undefined): void {
if (this.group && this._widget.value && input instanceof NotebookEditorInput) {
const state = this._widget.value.getEditorViewState();
if (this.group && this.widget.value && input instanceof NotebookEditorInput) {
const state = this.widget.value.getEditorViewState();
this.editorMemento.saveEditorState(this.group, input.resource, state);
}
}
@ -196,15 +196,15 @@ export class NotebookEditor extends BaseEditor {
}
layout(dimension: DOM.Dimension): void {
this._rootElement.classList.toggle('mid-width', dimension.width < 1000 && dimension.width >= 600);
this._rootElement.classList.toggle('narrow-width', dimension.width < 600);
this.rootElement.classList.toggle('mid-width', dimension.width < 1000 && dimension.width >= 600);
this.rootElement.classList.toggle('narrow-width', dimension.width < 600);
this.dimension = dimension;
if (!this._widget.value || !(this._input instanceof NotebookEditorInput)) {
if (!this.widget.value || !(this._input instanceof NotebookEditorInput)) {
return;
}
if (this._input.resource.toString() !== this._widget.value.viewModel?.uri.toString() && this._widget.value?.viewModel) {
if (this._input.resource.toString() !== this.widget.value.viewModel?.uri.toString() && this.widget.value?.viewModel) {
// input and widget mismatch
// this happens when
// 1. open document A, pin the document
@ -214,7 +214,7 @@ export class NotebookEditor extends BaseEditor {
return;
}
this._widget.value.layout(this.dimension, this._rootElement);
this.widget.value.layout(this.dimension, this.rootElement);
}
//#endregion

View file

@ -90,15 +90,16 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
private editorExecutingNotebook: IContextKey<boolean> | null = null;
private notebookHasMultipleKernels: IContextKey<boolean> | null = null;
private outputRenderer: OutputRenderer;
protected readonly _contributions: { [key: string]: INotebookEditorContribution; };
protected readonly contributions: { [key: string]: INotebookEditorContribution; };
private scrollBeyondLastLine: boolean;
private readonly memento: Memento;
private readonly onDidFocusEmitter = this._register(new Emitter<void>());
public readonly onDidFocus = this.onDidFocusEmitter.event;
private cellContextKeyManager: CellContextKeyManager | null = null;
private isVisible = false;
private readonly uuid = generateUuid();
private _isDisposed: boolean = false;
private readonly _onDidFocusWidget = this._register(new Emitter<void>());
public get onDidFocus(): Event<any> { return this._onDidFocusWidget.event; }
private _cellContextKeyManager: CellContextKeyManager | null = null;
private _isVisible = false;
private readonly _uuid = generateUuid();
get isDisposed() {
return this._isDisposed;
@ -110,19 +111,19 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
@INotebookService private notebookService: INotebookService,
@IConfigurationService private readonly configurationService: IConfigurationService,
@IContextKeyService readonly contextKeyService: IContextKeyService,
@ILayoutService private readonly _layoutService: ILayoutService
@ILayoutService private readonly layoutService: ILayoutService
) {
super();
this.memento = new Memento(NotebookEditorWidget.ID, storageService);
this.outputRenderer = new OutputRenderer(this, this.instantiationService);
this._contributions = {};
this.contributions = {};
this.scrollBeyondLastLine = this.configurationService.getValue<boolean>('editor.scrollBeyondLastLine');
this.configurationService.onDidChangeConfiguration(e => {
if (e.affectsConfiguration('editor.scrollBeyondLastLine')) {
this.scrollBeyondLastLine = this.configurationService.getValue<boolean>('editor.scrollBeyondLastLine');
if (this.dimension && this._isVisible) {
if (this.dimension && this.isVisible) {
this.layout(this.dimension);
}
}
@ -132,7 +133,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
public getId(): string {
return this._uuid;
return this.uuid;
}
private readonly _onDidChangeModel = new Emitter<NotebookTextModel | undefined>();
@ -231,12 +232,12 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
DOM.addClass(this.overlayContainer, 'notebook-editor');
this.overlayContainer.style.visibility = 'hidden';
this._layoutService.container.appendChild(this.overlayContainer);
this.layoutService.container.appendChild(this.overlayContainer);
this.createBody(this.overlayContainer);
this.generateFontInfo();
this.editorFocus = NOTEBOOK_EDITOR_FOCUSED.bindTo(this.contextKeyService);
this.editorFocus.set(true);
this._isVisible = true;
this.isVisible = true;
this.outputFocus = NOTEBOOK_OUTPUT_FOCUSED.bindTo(this.contextKeyService);
this.editorEditable = NOTEBOOK_EDITOR_EDITABLE.bindTo(this.contextKeyService);
this.editorEditable.set(true);
@ -251,7 +252,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
for (const desc of contributions) {
try {
const contribution = this.instantiationService.createInstance(desc.ctor, this);
this._contributions[desc.id] = contribution;
this.contributions[desc.id] = contribution;
} catch (err) {
onUnexpectedError(err);
}
@ -364,7 +365,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
const widgetFocusTracker = DOM.trackFocus(this.getDomNode());
this._register(widgetFocusTracker);
this._register(widgetFocusTracker.onDidFocus(() => this._onDidFocusWidget.fire()));
this._register(widgetFocusTracker.onDidFocus(() => this.onDidFocusEmitter.fire()));
}
getDomNode() {
@ -372,7 +373,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
onWillHide() {
this._isVisible = false;
this.isVisible = false;
this.editorFocus?.set(false);
this.overlayContainer.style.visibility = 'hidden';
this.overlayContainer.style.left = '-50000px';
@ -383,7 +384,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
focus() {
this._isVisible = true;
this.isVisible = true;
this.editorFocus?.set(true);
this.list?.domFocus();
this._onDidFocusEditorWidget.fire();
@ -398,22 +399,22 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
// clear state
this.dndController?.clearGlobalDragState();
this._setKernels(textModel);
this.setKernels(textModel);
this.localStore.add(this.notebookService.onDidChangeKernels(() => {
if (this.activeKernel === undefined) {
this._setKernels(textModel);
this.setKernels(textModel);
}
}));
this.localStore.add(this.list!.onDidChangeFocus(() => {
const focused = this.list!.getFocusedElements()[0];
if (focused) {
if (!this._cellContextKeyManager) {
this._cellContextKeyManager = this.localStore.add(new CellContextKeyManager(this.contextKeyService, textModel, focused as any));
if (!this.cellContextKeyManager) {
this.cellContextKeyManager = this.localStore.add(new CellContextKeyManager(this.contextKeyService, textModel, focused as any));
}
this._cellContextKeyManager.updateForElement(focused as any);
this.cellContextKeyManager.updateForElement(focused as any);
}
}));
@ -472,7 +473,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
this.list?.clear();
}
private _setKernels(textModel: NotebookTextModel) {
private setKernels(textModel: NotebookTextModel) {
const provider = this.notebookService.getContributedNotebookProviders(this.viewModel!.uri)[0];
const availableKernels = this.notebookService.getContributedNotebookKernels(textModel.viewType, textModel.uri);
@ -522,7 +523,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
this.webview.webview.onDidFocus(() => {
this.outputFocus?.set(true);
this.updateEditorFocus();
this._onDidFocusWidget.fire();
this.onDidFocusEmitter.fire();
});
this.localStore.add(this.webview.onMessage(message => {
@ -553,10 +554,10 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
// contribution state restore
const contributionsState = viewState?.contributionsState || {};
const keys = Object.keys(this._contributions);
const keys = Object.keys(this.contributions);
for (let i = 0, len = keys.length; i < len; i++) {
const id = keys[i];
const contribution = this._contributions[id];
const contribution = this.contributions[id];
if (typeof contribution.restoreViewState === 'function') {
contribution.restoreViewState(contributionsState[id]);
}
@ -696,9 +697,9 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
// Save contribution view states
const contributionsState: { [key: string]: any } = {};
const keys = Object.keys(this._contributions);
const keys = Object.keys(this.contributions);
for (const id of keys) {
const contribution = this._contributions[id];
const contribution = this.contributions[id];
if (typeof contribution.saveViewState === 'function') {
contributionsState[id] = contribution.saveViewState();
}
@ -1218,7 +1219,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
//#region Editor Contributions
public getContribution<T extends INotebookEditorContribution>(id: string): T {
return <T>(this._contributions[id] || null);
return <T>(this.contributions[id] || null);
}
//#endregion
@ -1226,10 +1227,10 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
dispose() {
this._isDisposed = true;
this.notebookService.removeNotebookEditor(this);
const keys = Object.keys(this._contributions);
const keys = Object.keys(this.contributions);
for (let i = 0, len = keys.length; i < len; i++) {
const contributionId = keys[i];
this._contributions[contributionId].dispose();
this.contributions[contributionId].dispose();
}
this.localStore.clear();

View file

@ -53,17 +53,17 @@ import { CellContextKeyManager } from 'vs/workbench/contrib/notebook/browser/vie
const $ = DOM.$;
export class NotebookCellListDelegate implements IListVirtualDelegate<CellViewModel> {
private _lineHeight: number;
private readonly lineHeight: number;
constructor(
@IConfigurationService private readonly configurationService: IConfigurationService
) {
const editorOptions = this.configurationService.getValue<IEditorOptions>('editor');
this._lineHeight = BareFontInfo.createFromRawSettings(editorOptions, getZoomLevel()).lineHeight;
this.lineHeight = BareFontInfo.createFromRawSettings(editorOptions, getZoomLevel()).lineHeight;
}
getHeight(element: CellViewModel): number {
return element.getHeight(this._lineHeight);
return element.getHeight(this.lineHeight);
}
hasDynamicHeight(element: CellViewModel): boolean {
@ -82,11 +82,11 @@ export class NotebookCellListDelegate implements IListVirtualDelegate<CellViewMo
export class CodiconActionViewItem extends ContextAwareMenuEntryActionViewItem {
constructor(
readonly _action: MenuItemAction,
_keybindingService: IKeybindingService,
_notificationService: INotificationService,
_contextMenuService: IContextMenuService
keybindingService: IKeybindingService,
notificationService: INotificationService,
contextMenuService: IContextMenuService
) {
super(_action, _keybindingService, _notificationService, _contextMenuService);
super(_action, keybindingService, notificationService, contextMenuService);
}
updateLabel(): void {
if (this.options.label && this.label) {
@ -123,14 +123,14 @@ export class CellEditorOptions {
};
private _value: IEditorOptions;
private _disposable: IDisposable;
private disposable: IDisposable;
private readonly _onDidChange = new Emitter<IEditorOptions>();
readonly onDidChange: Event<IEditorOptions> = this._onDidChange.event;
constructor(configurationService: IConfigurationService, language: string) {
this._disposable = configurationService.onDidChangeConfiguration(e => {
this.disposable = configurationService.onDidChangeConfiguration(e => {
if (e.affectsConfiguration('editor')) {
this._value = computeEditorOptions();
this._onDidChange.fire(this.value);
@ -150,7 +150,7 @@ export class CellEditorOptions {
dispose(): void {
this._onDidChange.dispose();
this._disposable.dispose();
this.disposable.dispose();
}
get value(): IEditorOptions {
@ -378,13 +378,13 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
private getDragImage(templateData: MarkdownCellRenderTemplate): HTMLElement {
if (templateData.currentRenderedCell!.editState === CellEditState.Editing) {
return this._getEditDragImage(templateData);
return this.getEditDragImage(templateData);
} else {
return this._getMarkdownDragImage(templateData);
return this.getMarkdownDragImage(templateData);
}
}
private _getMarkdownDragImage(templateData: MarkdownCellRenderTemplate): HTMLElement {
private getMarkdownDragImage(templateData: MarkdownCellRenderTemplate): HTMLElement {
const dragImageContainer = DOM.$('.cell-drag-image.monaco-list-row.focused.markdown-cell-row');
dragImageContainer.innerHTML = templateData.container.innerHTML;
@ -398,7 +398,7 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
return dragImageContainer;
}
private _getEditDragImage(templateData: MarkdownCellRenderTemplate): HTMLElement {
private getEditDragImage(templateData: MarkdownCellRenderTemplate): HTMLElement {
return new CodeCellDragImageRenderer().getDragImage(templateData, templateData.currentEditor!, 'markdown');
}
@ -681,10 +681,10 @@ export class CellDragAndDropController extends Disposable {
}
export class CellLanguageStatusBarItem extends Disposable {
private labelElement: HTMLElement;
private readonly labelElement: HTMLElement;
private _cell: ICellViewModel | undefined;
private _editor: INotebookEditor | undefined;
private cell: ICellViewModel | undefined;
private editor: INotebookEditor | undefined;
private cellDisposables: DisposableStore;
@ -699,7 +699,7 @@ export class CellLanguageStatusBarItem extends Disposable {
this._register(DOM.addDisposableListener(this.labelElement, DOM.EventType.CLICK, () => {
this.instantiationService.invokeFunction(accessor => {
new ChangeCellLanguageAction().run(accessor, { notebookEditor: this._editor!, cell: this._cell! });
new ChangeCellLanguageAction().run(accessor, { notebookEditor: this.editor!, cell: this.cell! });
});
}));
this._register(this.cellDisposables = new DisposableStore());
@ -707,15 +707,15 @@ export class CellLanguageStatusBarItem extends Disposable {
update(cell: ICellViewModel, editor: INotebookEditor): void {
this.cellDisposables.clear();
this._cell = cell;
this._editor = editor;
this.cell = cell;
this.editor = editor;
this.render();
this.cellDisposables.add(this._cell.model.onDidChangeLanguage(() => this.render()));
this.cellDisposables.add(this.cell.model.onDidChangeLanguage(() => this.render()));
}
private render(): void {
this.labelElement.textContent = this.modeService.getLanguageName(this._cell!.language!);
this.labelElement.textContent = this.modeService.getLanguageName(this.cell!.language!);
}
}
@ -727,7 +727,7 @@ class EditorTextRenderer {
return null;
}
const colorMap = this._getDefaultColorMap();
const colorMap = this.getDefaultColorMap();
const fontInfo = editor.getOptions().get(EditorOption.fontInfo);
const fontFamily = fontInfo.fontFamily === EDITOR_FONT_DEFAULTS.fontFamily ? fontInfo.fontFamily : `'${fontInfo.fontFamily}', ${EDITOR_FONT_DEFAULTS.fontFamily}`;
@ -740,11 +740,11 @@ class EditorTextRenderer {
+ `line-height: ${fontInfo.lineHeight}px;`
+ `white-space: pre;`
+ `">`
+ this._getRichTextLines(model, modelRange, colorMap)
+ this.getRichTextLines(model, modelRange, colorMap)
+ '</div>';
}
private _getRichTextLines(model: ITextModel, modelRange: Range, colorMap: string[]): string {
private getRichTextLines(model: ITextModel, modelRange: Range, colorMap: string[]): string {
const startLineNumber = modelRange.startLineNumber;
const startColumn = modelRange.startColumn;
const endLineNumber = modelRange.endLineNumber;
@ -770,7 +770,7 @@ class EditorTextRenderer {
return result;
}
private _getDefaultColorMap(): string[] {
private getDefaultColorMap(): string[] {
let colorMap = modes.TokenizationRegistry.getColorMap();
let result: string[] = ['#000000'];
if (colorMap) {
@ -784,7 +784,7 @@ class EditorTextRenderer {
class CodeCellDragImageRenderer {
getDragImage(templateData: BaseCellRenderTemplate, editor: ICodeEditor, type: 'code' | 'markdown'): HTMLElement {
let dragImage = this._getDragImage(templateData, editor, type);
let dragImage = this.getDragImageImpl(templateData, editor, type);
if (!dragImage) {
// TODO@roblourens I don't think this can happen
dragImage = document.createElement('div');
@ -794,7 +794,7 @@ class CodeCellDragImageRenderer {
return dragImage;
}
private _getDragImage(templateData: BaseCellRenderTemplate, editor: ICodeEditor, type: 'code' | 'markdown'): HTMLElement | null {
private getDragImageImpl(templateData: BaseCellRenderTemplate, editor: ICodeEditor, type: 'code' | 'markdown'): HTMLElement | null {
const dragImageContainer = DOM.$(`.cell-drag-image.monaco-list-row.focused.${type}-cell-row`);
dragImageContainer.innerHTML = templateData.container.innerHTML;