From 099f8bfdaa075bb29fcd610b58680f8982d98aab Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 13 Jul 2018 12:58:33 +0200 Subject: [PATCH] breadcrumbs - move config logic --- .../browser/parts/editor/breadcrumbs.ts | 64 ++++++++++++++++++ .../parts/editor/breadcrumbsControl.ts | 62 ------------------ .../browser/parts/editor/titleControl.ts | 65 ++++++++++--------- 3 files changed, 97 insertions(+), 94 deletions(-) diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbs.ts b/src/vs/workbench/browser/parts/editor/breadcrumbs.ts index 27d5727d3c6..f50ade2fed6 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbs.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbs.ts @@ -10,6 +10,11 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { GroupIdentifier } from 'vs/workbench/common/editor'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { Emitter, Event } from 'vs/base/common/event'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry'; +import { localize } from 'vs/nls'; export const IBreadcrumbsService = createDecorator('IEditorBreadcrumbsService'); @@ -45,3 +50,62 @@ export class BreadcrumbsService implements IBreadcrumbsService { } registerSingleton(IBreadcrumbsService, BreadcrumbsService); + + +//#region config + +export abstract class BreadcrumbsConfig { + + name: string; + value: T; + onDidChange: Event; + abstract dispose(): void; + + private constructor() { + // internal + } + + static IsEnabled = BreadcrumbsConfig._stub('breadcrumbs.enabled'); + + private static _stub(name: string): { bindTo(service: IConfigurationService): BreadcrumbsConfig } { + return { + bindTo(service) { + let value: T = service.getValue(name); + let onDidChange = new Emitter(); + + let listener = service.onDidChangeConfiguration(e => { + if (e.affectsConfiguration(name)) { + value = service.getValue(name); + onDidChange.fire(value); + } + }); + + return { + name, + get value() { return value; }, + onDidChange: onDidChange.event, + dispose(): void { + listener.dispose(); + onDidChange.dispose(); + } + }; + } + }; + } +} + +Registry.as(Extensions.Configuration).registerConfiguration({ + id: 'breadcrumbs', + title: localize('title', "Breadcrumb Navigation"), + order: 101, + type: 'object', + properties: { + 'breadcrumbs.enabled': { + 'description': localize('enabled', "Enable/disable navigation breadcrumbss"), + 'type': 'boolean', + 'default': false + } + } +}); + +//#endregion diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index bbcfe72961c..e07d8aa83cf 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -8,7 +8,6 @@ import * as dom from 'vs/base/browser/dom'; import { BreadcrumbsItem, BreadcrumbsWidget, IBreadcrumbsItemEvent } from 'vs/base/browser/ui/breadcrumbs/breadcrumbsWidget'; import { IconLabel } from 'vs/base/browser/ui/iconLabel/iconLabel'; -import { Emitter, Event } from 'vs/base/common/event'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { dispose, IDisposable, combinedDisposable } from 'vs/base/common/lifecycle'; import { isEqual, basenameOrAuthority } from 'vs/base/common/resources'; @@ -17,15 +16,12 @@ import 'vs/css!./media/breadcrumbscontrol'; import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser'; import { Range } from 'vs/editor/common/core/range'; import { OutlineElement, OutlineGroup, OutlineModel, TreeElement } from 'vs/editor/contrib/documentSymbols/outlineModel'; -import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { FileKind, IFileService } from 'vs/platform/files/common/files'; import { IConstructorSignature2, IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { Registry } from 'vs/platform/registry/common/platform'; import { attachBreadcrumbsStyler } from 'vs/platform/theme/common/styler'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -283,64 +279,6 @@ export class BreadcrumbsControl { } } -//#region config - -export abstract class BreadcrumbsConfig { - - name: string; - value: T; - onDidChange: Event; - abstract dispose(): void; - - private constructor() { - // internal - } - - static IsEnabled = BreadcrumbsConfig._stub('breadcrumbs.enabled'); - - private static _stub(name: string): { bindTo(service: IConfigurationService): BreadcrumbsConfig } { - return { - bindTo(service) { - let value: T = service.getValue(name); - let onDidChange = new Emitter(); - - let listener = service.onDidChangeConfiguration(e => { - if (e.affectsConfiguration(name)) { - value = service.getValue(name); - onDidChange.fire(value); - } - }); - - return { - name, - get value() { return value; }, - onDidChange: onDidChange.event, - dispose(): void { - listener.dispose(); - onDidChange.dispose(); - } - }; - } - }; - } -} - -Registry.as(Extensions.Configuration).registerConfiguration({ - id: 'breadcrumbs', - title: localize('title', "Breadcrumb Navigation"), - order: 101, - type: 'object', - properties: { - 'breadcrumbs.enabled': { - 'description': localize('enabled', "Enable/disable navigation breadcrumbss"), - 'type': 'boolean', - 'default': false - } - } -}); - -//#endregion - //#region commands KeybindingsRegistry.registerCommandAndKeybindingRule({ diff --git a/src/vs/workbench/browser/parts/editor/titleControl.ts b/src/vs/workbench/browser/parts/editor/titleControl.ts index 3a26b67de21..3a123c9c218 100644 --- a/src/vs/workbench/browser/parts/editor/titleControl.ts +++ b/src/vs/workbench/browser/parts/editor/titleControl.ts @@ -5,40 +5,41 @@ 'use strict'; -import 'vs/css!./media/titlecontrol'; -import { localize } from 'vs/nls'; -import { prepareActions } from 'vs/workbench/browser/actions'; -import { IAction, Action, IRunEvent } from 'vs/base/common/actions'; -import { TPromise } from 'vs/base/common/winjs.base'; -import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import * as arrays from 'vs/base/common/arrays'; -import { toResource, IEditorCommandsContext, IEditorInput, EditorCommandsContextActionRunner } from 'vs/workbench/common/editor'; -import { IActionItem, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar'; -import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar'; -import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { ResolvedKeybinding } from 'vs/base/common/keyCodes'; -import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { createActionItem, fillInContextMenuActions, fillInActionBarActions } from 'vs/platform/actions/browser/menuItemActionItem'; -import { IMenuService, MenuId, IMenu, ExecuteCommandAction } from 'vs/platform/actions/common/actions'; -import { ResourceContextKey } from 'vs/workbench/common/resources'; -import { IThemeService, registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; -import { Themable } from 'vs/workbench/common/theme'; -import { getCodeEditor } from 'vs/editor/browser/editorBrowser'; -import { INotificationService } from 'vs/platform/notification/common/notification'; -import { Dimension, addDisposableListener, EventType } from 'vs/base/browser/dom'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { IEditorGroupsAccessor, IEditorPartOptions, IEditorGroupView, EDITOR_TITLE_HEIGHT } from 'vs/workbench/browser/parts/editor/editor'; -import { listActiveSelectionBackground, listActiveSelectionForeground } from 'vs/platform/theme/common/colorRegistry'; -import { LocalSelectionTransfer, DraggedEditorGroupIdentifier, DraggedEditorIdentifier, fillResourceDataTransfers } from 'vs/workbench/browser/dnd'; import { applyDragImage } from 'vs/base/browser/dnd'; +import { addDisposableListener, Dimension, EventType } from 'vs/base/browser/dom'; +import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; +import { ActionsOrientation, IActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar'; +import { Action, IAction, IRunEvent } from 'vs/base/common/actions'; +import * as arrays from 'vs/base/common/arrays'; +import { ResolvedKeybinding } from 'vs/base/common/keyCodes'; +import { dispose, IDisposable } from 'vs/base/common/lifecycle'; +import { TPromise } from 'vs/base/common/winjs.base'; +import 'vs/css!./media/titlecontrol'; +import { getCodeEditor } from 'vs/editor/browser/editorBrowser'; +import { localize } from 'vs/nls'; +import { createActionItem, fillInActionBarActions, fillInContextMenuActions } from 'vs/platform/actions/browser/menuItemActionItem'; +import { ExecuteCommandAction, IMenu, IMenuService, MenuId } from 'vs/platform/actions/common/actions'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { BreadcrumbsConfig, BreadcrumbsControl, IBreadcrumbsControlOptions } from 'vs/workbench/browser/parts/editor/breadcrumbsControl'; +import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { listActiveSelectionBackground, listActiveSelectionForeground } from 'vs/platform/theme/common/colorRegistry'; +import { ICssStyleCollector, ITheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { prepareActions } from 'vs/workbench/browser/actions'; +import { DraggedEditorGroupIdentifier, DraggedEditorIdentifier, fillResourceDataTransfers, LocalSelectionTransfer } from 'vs/workbench/browser/dnd'; +import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; +import { BreadcrumbsConfig } from 'vs/workbench/browser/parts/editor/breadcrumbs'; +import { BreadcrumbsControl, IBreadcrumbsControlOptions } from 'vs/workbench/browser/parts/editor/breadcrumbsControl'; +import { EDITOR_TITLE_HEIGHT, IEditorGroupsAccessor, IEditorGroupView, IEditorPartOptions } from 'vs/workbench/browser/parts/editor/editor'; +import { EditorCommandsContextActionRunner, IEditorCommandsContext, IEditorInput, toResource } from 'vs/workbench/common/editor'; +import { ResourceContextKey } from 'vs/workbench/common/resources'; +import { Themable } from 'vs/workbench/common/theme'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; export interface IToolbarActions { primary: IAction[];