/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; import { TPromise } from 'vs/base/common/winjs.base'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import Event from 'vs/base/common/event'; import { ITelemetryData } from 'vs/platform/telemetry/common/telemetry'; export const IWindowsService = createDecorator('windowsService'); export interface IWindowsService { _serviceBrand: any; onWindowOpen: Event; onWindowFocus: Event; openFileFolderPicker(windowId: number, forceNewWindow?: boolean, data?: ITelemetryData): TPromise; openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string, data?: ITelemetryData): TPromise; openFolderPicker(windowId: number, forceNewWindow?: boolean, data?: ITelemetryData): TPromise; reloadWindow(windowId: number): TPromise; openDevTools(windowId: number): TPromise; toggleDevTools(windowId: number): TPromise; closeFolder(windowId: number): TPromise; toggleFullScreen(windowId: number): TPromise; setRepresentedFilename(windowId: number, fileName: string): TPromise; addToRecentlyOpen(paths: { path: string, isFile?: boolean }[]): TPromise; removeFromRecentlyOpen(paths: string[]): TPromise; getRecentlyOpen(windowId: number): TPromise<{ files: string[]; folders: string[]; }>; focusWindow(windowId: number): TPromise; isMaximized(windowId: number): TPromise; maximizeWindow(windowId: number): TPromise; unmaximizeWindow(windowId: number): TPromise; setDocumentEdited(windowId: number, flag: boolean): TPromise; quit(): TPromise; relaunch(options: { addArgs?: string[], removeArgs?: string[] }): TPromise; // Shared process toggleSharedProcess(): TPromise; // Global methods openWindow(paths: string[], options?: { forceNewWindow?: boolean, forceReuseWindow?: boolean }): TPromise; openNewWindow(): TPromise; showWindow(windowId: number): TPromise; getWindows(): TPromise<{ id: number; path: string; title: string; }[]>; getWindowCount(): TPromise; log(severity: string, ...messages: string[]): TPromise; // TODO@joao: what? closeExtensionHostWindow(extensionDevelopmentPath: string): TPromise; showItemInFolder(path: string): TPromise; // This needs to be handled from browser process to prevent // foreground ordering issues on Windows openExternal(url: string): TPromise; // TODO: this is a bit backwards startCrashReporter(config: Electron.CrashReporterStartOptions): TPromise; } export const IWindowService = createDecorator('windowService'); export interface IWindowService { _serviceBrand: any; getCurrentWindowId(): number; openFileFolderPicker(forceNewWindow?: boolean, data?: ITelemetryData): TPromise; openFilePicker(forceNewWindow?: boolean, path?: string, data?: ITelemetryData): TPromise; openFolderPicker(forceNewWindow?: boolean, data?: ITelemetryData): TPromise; reloadWindow(): TPromise; openDevTools(): TPromise; toggleDevTools(): TPromise; closeFolder(): TPromise; toggleFullScreen(): TPromise; setRepresentedFilename(fileName: string): TPromise; addToRecentlyOpen(paths: { path: string, isFile?: boolean }[]): TPromise; removeFromRecentlyOpen(paths: string[]): TPromise; getRecentlyOpen(): TPromise<{ files: string[]; folders: string[]; }>; focusWindow(): TPromise; setDocumentEdited(flag: boolean): TPromise; isMaximized(): TPromise; maximizeWindow(): TPromise; unmaximizeWindow(): TPromise; } export type MenuBarVisibility = 'default' | 'visible' | 'toggle' | 'hidden'; export interface IWindowSettings { openFilesInNewWindow: 'on' | 'off' | 'default'; openFoldersInNewWindow: 'on' | 'off' | 'default'; reopenFolders: 'all' | 'one' | 'none'; restoreFullscreen: boolean; zoomLevel: number; titleBarStyle: 'native' | 'custom'; autoDetectHighContrast: boolean; menuBarVisibility: MenuBarVisibility; newWindowDimensions: 'default' | 'inherit' | 'maximized' | 'fullscreen'; }