diff --git a/src/vs/code/common/windows.ts b/src/vs/code/common/windows.ts index ea0833ccefd..96ca219e07f 100644 --- a/src/vs/code/common/windows.ts +++ b/src/vs/code/common/windows.ts @@ -7,6 +7,27 @@ import Event from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { IWindowsService } from 'vs/platform/windows/common/windows'; +export enum OpenContext { + + // opening when running from the command line + CLI, + + // macOS only: opening from the dock (also when opening files to a running instance from desktop) + DOCK, + + // opening from the main application window + MENU, + + // opening from a file or folder dialog + DIALOG, + + // opening from the OS's UI + DESKTOP, + + // opening through the API + API +} + export interface IWindowEventService { _serviceBrand: any; diff --git a/src/vs/code/electron-main/launch.ts b/src/vs/code/electron-main/launch.ts index 0f35a39f929..1fe3c4cb558 100644 --- a/src/vs/code/electron-main/launch.ts +++ b/src/vs/code/electron-main/launch.ts @@ -5,7 +5,8 @@ 'use strict'; -import { IWindowsMainService, OpenContext } from 'vs/code/electron-main/windows'; +import { OpenContext } from 'vs/code/common/windows'; +import { IWindowsMainService } from 'vs/code/electron-main/windows'; import { VSCodeWindow } from 'vs/code/electron-main/window'; import { TPromise } from 'vs/base/common/winjs.base'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 97545ce2d90..523dc06bc50 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -11,7 +11,8 @@ import * as platform from 'vs/base/common/platform'; import { parseMainProcessArgv } from 'vs/platform/environment/node/argv'; import { mkdirp } from 'vs/base/node/pfs'; import { validatePaths } from 'vs/code/electron-main/paths'; -import { IWindowsMainService, WindowsManager, OpenContext } from 'vs/code/electron-main/windows'; +import { OpenContext } from 'vs/code/common/windows'; +import { IWindowsMainService, WindowsManager } from 'vs/code/electron-main/windows'; import { IWindowsService } from 'vs/platform/windows/common/windows'; import { WindowsChannel } from 'vs/platform/windows/common/windowsIpc'; import { WindowsService } from 'vs/platform/windows/electron-main/windowsService'; diff --git a/src/vs/code/electron-main/menus.ts b/src/vs/code/electron-main/menus.ts index 46e17a8ea8e..76442d930be 100644 --- a/src/vs/code/electron-main/menus.ts +++ b/src/vs/code/electron-main/menus.ts @@ -10,7 +10,8 @@ import { isMacintosh, isLinux, isWindows, language } from 'vs/base/common/platfo import * as arrays from 'vs/base/common/arrays'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { ipcMain as ipc, app, shell, dialog, Menu, MenuItem } from 'electron'; -import { IWindowsMainService, OpenContext } from 'vs/code/electron-main/windows'; +import { OpenContext } from 'vs/code/common/windows'; +import { IWindowsMainService } from 'vs/code/electron-main/windows'; import { VSCodeWindow } from 'vs/code/electron-main/window'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IStorageService } from 'vs/code/electron-main/storage'; diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 9ebe51aa7d0..39063c3e450 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -26,18 +26,16 @@ import { ILogService } from 'vs/code/electron-main/log'; import { getPathLabel } from 'vs/base/common/labels'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IWindowSettings } from 'vs/platform/windows/common/windows'; -import { getLastActiveWindow, OpenContext as OriginalOpenContext, findBestWindowOrFolder } from 'vs/code/node/windowsUtils'; +import { getLastActiveWindow, findBestWindowOrFolder } from 'vs/code/node/windowsUtils'; import CommonEvent, { Emitter } from 'vs/base/common/event'; import product from 'vs/platform/node/product'; +import { OpenContext } from 'vs/code/common/windows'; enum WindowError { UNRESPONSIVE, CRASHED } -export const OpenContext = OriginalOpenContext; -export type OpenContext = OriginalOpenContext; - export interface IOpenConfiguration { context: OpenContext; cli: ParsedArgs; diff --git a/src/vs/code/node/windowsUtils.ts b/src/vs/code/node/windowsUtils.ts index 97742a47756..fe6e84dc762 100644 --- a/src/vs/code/node/windowsUtils.ts +++ b/src/vs/code/node/windowsUtils.ts @@ -9,27 +9,7 @@ import * as path from 'path'; import * as fs from 'original-fs'; import * as platform from 'vs/base/common/platform'; import * as paths from 'vs/base/common/paths'; - -export enum OpenContext { - - // opening when running from the command line - CLI, - - // macOS only: opening from the dock (also when opening files to a running instance from desktop) - DOCK, - - // opening from the main application window - MENU, - - // opening from a file or folder dialog - DIALOG, - - // opening from the OS's UI - DESKTOP, - - // opening through the API - API -} +import { OpenContext } from 'vs/code/common/windows'; /** * Exported subset of VSCodeWindow for testing. @@ -42,8 +22,8 @@ export interface ISimpleWindow { /** * Exported for testing. */ -export interface IBestWindowOrFolderOptions { - windows: WINDOW[]; +export interface IBestWindowOrFolderOptions { + windows: SimpleWindow[]; newWindow: boolean; reuseWindow: boolean; context: OpenContext; @@ -52,7 +32,7 @@ export interface IBestWindowOrFolderOptions { vscodeFolder?: string; } -export function findBestWindowOrFolder({ windows, newWindow, reuseWindow, context, filePath, userHome, vscodeFolder }: IBestWindowOrFolderOptions): WINDOW | string { +export function findBestWindowOrFolder({ windows, newWindow, reuseWindow, context, filePath, userHome, vscodeFolder }: IBestWindowOrFolderOptions): SimpleWindow | string { // OpenContext.DOCK implies newWindow unless overwritten by settings. const findBest = filePath && (context === OpenContext.DESKTOP || context === OpenContext.CLI || context === OpenContext.DOCK); const bestWindow = !newWindow && findBest && findBestWindow(windows, filePath); diff --git a/src/vs/code/test/node/windowsUtils.test.ts b/src/vs/code/test/node/windowsUtils.test.ts index 7ca91ddadff..42649abda76 100644 --- a/src/vs/code/test/node/windowsUtils.test.ts +++ b/src/vs/code/test/node/windowsUtils.test.ts @@ -6,7 +6,8 @@ import assert = require('assert'); import path = require('path'); -import { findBestWindowOrFolder, OpenContext, ISimpleWindow, IBestWindowOrFolderOptions } from 'vs/code/node/windowsUtils'; +import { findBestWindowOrFolder, ISimpleWindow, IBestWindowOrFolderOptions } from 'vs/code/node/windowsUtils'; +import { OpenContext } from 'vs/code/common/windows'; const fixturesFolder = require.toUrl('./fixtures'); diff --git a/src/vs/platform/windows/electron-main/windowsService.ts b/src/vs/platform/windows/electron-main/windowsService.ts index 2528cf989f7..24c7323e079 100644 --- a/src/vs/platform/windows/electron-main/windowsService.ts +++ b/src/vs/platform/windows/electron-main/windowsService.ts @@ -16,7 +16,8 @@ import { fromEventEmitter } from 'vs/base/node/event'; import { IURLService } from 'vs/platform/url/common/url'; // TODO@Joao: remove this dependency, move all implementation to this class -import { IWindowsMainService, OpenContext } from 'vs/code/electron-main/windows'; +import { OpenContext } from 'vs/code/common/windows'; +import { IWindowsMainService } from 'vs/code/electron-main/windows'; export class WindowsService implements IWindowsService, IDisposable {