diff --git a/src/vs/workbench/browser/actions/toggleZenMode.ts b/src/vs/workbench/browser/actions/toggleZenMode.ts index 01718c2a6cde70a60bc947bd5473956be662adb6..d542e39b8ee1520ee175b58540153542a720149b 100644 --- a/src/vs/workbench/browser/actions/toggleZenMode.ts +++ b/src/vs/workbench/browser/actions/toggleZenMode.ts @@ -10,7 +10,7 @@ import { KeyCode, KeyMod, KeyChord } from 'vs/base/common/keyCodes'; import { Registry } from 'vs/platform/platform'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actionRegistry'; -import { IPartService, IZenModeOptions } from 'vs/workbench/services/part/common/partService'; +import { IPartService } from 'vs/workbench/services/part/common/partService'; class ToggleZenMode extends Action { @@ -26,8 +26,8 @@ class ToggleZenMode extends Action { this.enabled = !!this.partService; } - public run(options: IZenModeOptions): TPromise { - this.partService.toggleZenMode(options); + public run(): TPromise { + this.partService.toggleZenMode(); return TPromise.as(null); } } diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index f3b8f38466ee04d77db444364118e210f4a9a9c2..8be72f397275ae836d3ac37c2c82a9aa93eb7a1a 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -248,4 +248,29 @@ configurationRegistry.registerConfiguration({ 'title': nls.localize('windowConfigurationTitle', "Window"), 'type': 'object', 'properties': properties -}); \ No newline at end of file +}); + +// Configuration: Zen Mode +configurationRegistry.registerConfiguration({ + 'id': 'zenMode', + 'order': 9, + 'title': nls.localize('zenModeConfigurationTitle', "Zen Mode"), + 'type': 'object', + 'properties': { + 'zenMode.fullScreen': { + 'type': 'boolean', + 'default': true, + 'description': nls.localize('zenMode.fullScreen', "Controls if turning on Zen Mode also puts the workbench into full screen mode.") + }, + 'zenMode.hideTabs': { + 'type': 'boolean', + 'default': true, + 'description': nls.localize('zenMode.hideTabs', "Controls if turning on Zen Mode also hides workbench tabs.") + }, + 'zenMode.hideStatusBar': { + 'type': 'boolean', + 'default': true, + 'description': nls.localize('zenMode.hideStatusBar', "Controls if turning on Zen Mode also hides the status bar at the bottom of the workbench.") + } + } +}); diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index 10e91fab40ac5dba50efcba8e3911bab84c5b210..17c34c12ed02fe3c4cd36c96f41f2ad527442462 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -41,7 +41,7 @@ import { QuickOpenController } from 'vs/workbench/browser/parts/quickopen/quickO import { getServices } from 'vs/platform/instantiation/common/extensions'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { WorkbenchEditorService } from 'vs/workbench/services/editor/browser/editorService'; -import { Position, Parts, IPartService, ILayoutOptions, IZenModeOptions } from 'vs/workbench/services/part/common/partService'; +import { Position, Parts, IPartService, ILayoutOptions } from 'vs/workbench/services/part/common/partService'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ContextMenuService } from 'vs/workbench/services/contextview/electron-browser/contextmenuService'; @@ -97,6 +97,12 @@ interface WorkbenchParams { serviceCollection: ServiceCollection; } +interface IZenModeSettings { + fullScreen: boolean; + hideTabs: boolean; + hideStatusBar: boolean; +} + export interface IWorkbenchStartedInfo { customKeybindingsCount: number; restoreViewletDuration: number; @@ -1049,26 +1055,24 @@ export class Workbench implements IPartService { return Identifiers.WORKBENCH_CONTAINER; } - public toggleZenMode(options?: IZenModeOptions): void { - options = options || {}; + public toggleZenMode(): void { this.zenMode.active = !this.zenMode.active; // Check if zen mode transitioned to full screen and if now we are out of zen mode -> we need to go out of full screen let toggleFullScreen = false; if (this.zenMode.active) { - toggleFullScreen = !browser.isFullscreen() && !options.noFullScreen; + const config = this.configurationService.getConfiguration('zenMode'); + toggleFullScreen = !browser.isFullscreen() && config.fullScreen; this.zenMode.transitionedToFullScreen = toggleFullScreen; this.zenMode.wasSideBarVisible = this.isVisible(Parts.SIDEBAR_PART); this.zenMode.wasPanelVisible = this.isVisible(Parts.PANEL_PART); this.setPanelHidden(true, true); this.setSideBarHidden(true, true); - if (!options.keepStatusBar) { + this.setActivityBarHidden(true, true); + if (config.hideStatusBar) { this.setStatusBarHidden(true, true); } - if (!options.keepActivityBar) { - this.setActivityBarHidden(true, true); - } - if (!options.keepTabs) { + if (config.hideTabs) { this.editorPart.hideTabs(true); } } else { diff --git a/src/vs/workbench/services/part/common/partService.ts b/src/vs/workbench/services/part/common/partService.ts index 4a0475f01ebca107cfbfd7a66ccc6af2ddabc20e..5036d29cf889fd865a256058f4ff27dae5c9e4c6 100644 --- a/src/vs/workbench/services/part/common/partService.ts +++ b/src/vs/workbench/services/part/common/partService.ts @@ -27,13 +27,6 @@ export interface ILayoutOptions { toggleMaximizedPanel?: boolean; } -export interface IZenModeOptions { - noFullScreen?: boolean; - keepStatusBar?: boolean; - keepTabs?: boolean; - keepActivityBar?: boolean; -} - export const IPartService = createDecorator('partService'); export interface IPartService { @@ -123,5 +116,5 @@ export interface IPartService { /** * Toggles the workbench in and out of zen mode - parts get hidden and window goes fullscreen. */ - toggleZenMode(options?: IZenModeOptions): void; + toggleZenMode(): void; } \ No newline at end of file