diff --git a/src/vs/workbench/common/resources.ts b/src/vs/workbench/common/resources.ts index a967cabd158..2446c202c76 100644 --- a/src/vs/workbench/common/resources.ts +++ b/src/vs/workbench/common/resources.ts @@ -6,13 +6,7 @@ 'use strict'; import URI from 'vs/base/common/uri'; -import objects = require('vs/base/common/objects'); import paths = require('vs/base/common/paths'); -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import Event, { Emitter } from 'vs/base/common/event'; -import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; -import { ParsedExpression, IExpression, parse } from 'vs/base/common/glob'; import { basename } from 'vs/base/common/paths'; import { RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IModeService } from 'vs/editor/common/services/modeService'; @@ -63,118 +57,6 @@ export class ResourceContextKey implements IContextKey { } } -export class ResourceGlobMatcher { - - private static readonly NO_ROOT: string = null; - - private _onExpressionChange: Emitter; - private toUnbind: IDisposable[]; - private mapRootToParsedExpression: Map; - private mapRootToExpressionConfig: Map; - - constructor( - private globFn: (root?: URI) => IExpression, - private shouldUpdate: (event: IConfigurationChangeEvent) => boolean, - @IWorkspaceContextService private contextService: IWorkspaceContextService, - @IConfigurationService private configurationService: IConfigurationService - ) { - this.toUnbind = []; - - this.mapRootToParsedExpression = new Map(); - this.mapRootToExpressionConfig = new Map(); - - this._onExpressionChange = new Emitter(); - this.toUnbind.push(this._onExpressionChange); - - this.updateExcludes(false); - - this.registerListeners(); - } - - public get onExpressionChange(): Event { - return this._onExpressionChange.event; - } - - private registerListeners(): void { - this.toUnbind.push(this.configurationService.onDidChangeConfiguration(e => { - if (this.shouldUpdate(e)) { - this.updateExcludes(true); - } - })); - this.toUnbind.push(this.contextService.onDidChangeWorkspaceFolders(() => this.updateExcludes(true))); - } - - private updateExcludes(fromEvent: boolean): void { - let changed = false; - - // Add excludes per workspaces that got added - this.contextService.getWorkspace().folders.forEach(folder => { - const rootExcludes = this.globFn(folder.uri); - if (!this.mapRootToExpressionConfig.has(folder.uri.toString()) || !objects.equals(this.mapRootToExpressionConfig.get(folder.uri.toString()), rootExcludes)) { - changed = true; - - this.mapRootToParsedExpression.set(folder.uri.toString(), parse(rootExcludes)); - this.mapRootToExpressionConfig.set(folder.uri.toString(), objects.deepClone(rootExcludes)); - } - }); - - // Remove excludes per workspace no longer present - this.mapRootToExpressionConfig.forEach((value, root) => { - if (root === ResourceGlobMatcher.NO_ROOT) { - return; // always keep this one - } - - if (!this.contextService.getWorkspaceFolder(URI.parse(root))) { - this.mapRootToParsedExpression.delete(root); - this.mapRootToExpressionConfig.delete(root); - - changed = true; - } - }); - - // Always set for resources outside root as well - const globalExcludes = this.globFn(); - if (!this.mapRootToExpressionConfig.has(ResourceGlobMatcher.NO_ROOT) || !objects.equals(this.mapRootToExpressionConfig.get(ResourceGlobMatcher.NO_ROOT), globalExcludes)) { - changed = true; - - this.mapRootToParsedExpression.set(ResourceGlobMatcher.NO_ROOT, parse(globalExcludes)); - this.mapRootToExpressionConfig.set(ResourceGlobMatcher.NO_ROOT, objects.deepClone(globalExcludes)); - } - - if (fromEvent && changed) { - this._onExpressionChange.fire(); - } - } - - public matches(resource: URI): boolean { - const folder = this.contextService.getWorkspaceFolder(resource); - - let expressionForRoot: ParsedExpression; - if (folder && this.mapRootToParsedExpression.has(folder.uri.toString())) { - expressionForRoot = this.mapRootToParsedExpression.get(folder.uri.toString()); - } else { - expressionForRoot = this.mapRootToParsedExpression.get(ResourceGlobMatcher.NO_ROOT); - } - - // If the resource if from a workspace, convert its absolute path to a relative - // path so that glob patterns have a higher probability to match. For example - // a glob pattern of "src/**" will not match on an absolute path "/folder/src/file.txt" - // but can match on "src/file.txt" - let resourcePathToMatch: string; - if (folder) { - resourcePathToMatch = paths.normalize(paths.relative(folder.uri.fsPath, resource.fsPath)); - } else { - resourcePathToMatch = resource.fsPath; - } - - return !!expressionForRoot(resourcePathToMatch); - } - - public dispose(): void { - this.toUnbind = dispose(this.toUnbind); - } -} - /** * Data URI related helpers. */ diff --git a/src/vs/workbench/electron-browser/resources.ts b/src/vs/workbench/electron-browser/resources.ts new file mode 100644 index 00000000000..38d3b8a3eca --- /dev/null +++ b/src/vs/workbench/electron-browser/resources.ts @@ -0,0 +1,128 @@ +/*--------------------------------------------------------------------------------------------- + * 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 URI from 'vs/base/common/uri'; +import objects = require('vs/base/common/objects'); +import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import Event, { Emitter } from 'vs/base/common/event'; +import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; +import { ParsedExpression, IExpression, parse } from 'vs/base/common/glob'; +import { relative } from 'path'; +import { normalize } from 'vs/base/common/paths'; + +export class ResourceGlobMatcher { + + private static readonly NO_ROOT: string = null; + + private _onExpressionChange: Emitter; + private toUnbind: IDisposable[]; + private mapRootToParsedExpression: Map; + private mapRootToExpressionConfig: Map; + + constructor( + private globFn: (root?: URI) => IExpression, + private shouldUpdate: (event: IConfigurationChangeEvent) => boolean, + @IWorkspaceContextService private contextService: IWorkspaceContextService, + @IConfigurationService private configurationService: IConfigurationService + ) { + this.toUnbind = []; + + this.mapRootToParsedExpression = new Map(); + this.mapRootToExpressionConfig = new Map(); + + this._onExpressionChange = new Emitter(); + this.toUnbind.push(this._onExpressionChange); + + this.updateExcludes(false); + + this.registerListeners(); + } + + public get onExpressionChange(): Event { + return this._onExpressionChange.event; + } + + private registerListeners(): void { + this.toUnbind.push(this.configurationService.onDidChangeConfiguration(e => { + if (this.shouldUpdate(e)) { + this.updateExcludes(true); + } + })); + this.toUnbind.push(this.contextService.onDidChangeWorkspaceFolders(() => this.updateExcludes(true))); + } + + private updateExcludes(fromEvent: boolean): void { + let changed = false; + + // Add excludes per workspaces that got added + this.contextService.getWorkspace().folders.forEach(folder => { + const rootExcludes = this.globFn(folder.uri); + if (!this.mapRootToExpressionConfig.has(folder.uri.toString()) || !objects.equals(this.mapRootToExpressionConfig.get(folder.uri.toString()), rootExcludes)) { + changed = true; + + this.mapRootToParsedExpression.set(folder.uri.toString(), parse(rootExcludes)); + this.mapRootToExpressionConfig.set(folder.uri.toString(), objects.deepClone(rootExcludes)); + } + }); + + // Remove excludes per workspace no longer present + this.mapRootToExpressionConfig.forEach((value, root) => { + if (root === ResourceGlobMatcher.NO_ROOT) { + return; // always keep this one + } + + if (!this.contextService.getWorkspaceFolder(URI.parse(root))) { + this.mapRootToParsedExpression.delete(root); + this.mapRootToExpressionConfig.delete(root); + + changed = true; + } + }); + + // Always set for resources outside root as well + const globalExcludes = this.globFn(); + if (!this.mapRootToExpressionConfig.has(ResourceGlobMatcher.NO_ROOT) || !objects.equals(this.mapRootToExpressionConfig.get(ResourceGlobMatcher.NO_ROOT), globalExcludes)) { + changed = true; + + this.mapRootToParsedExpression.set(ResourceGlobMatcher.NO_ROOT, parse(globalExcludes)); + this.mapRootToExpressionConfig.set(ResourceGlobMatcher.NO_ROOT, objects.deepClone(globalExcludes)); + } + + if (fromEvent && changed) { + this._onExpressionChange.fire(); + } + } + + public matches(resource: URI): boolean { + const folder = this.contextService.getWorkspaceFolder(resource); + + let expressionForRoot: ParsedExpression; + if (folder && this.mapRootToParsedExpression.has(folder.uri.toString())) { + expressionForRoot = this.mapRootToParsedExpression.get(folder.uri.toString()); + } else { + expressionForRoot = this.mapRootToParsedExpression.get(ResourceGlobMatcher.NO_ROOT); + } + + // If the resource if from a workspace, convert its absolute path to a relative + // path so that glob patterns have a higher probability to match. For example + // a glob pattern of "src/**" will not match on an absolute path "/folder/src/file.txt" + // but can match on "src/file.txt" + let resourcePathToMatch: string; + if (folder) { + resourcePathToMatch = normalize(relative(folder.uri.fsPath, resource.fsPath)); + } else { + resourcePathToMatch = resource.fsPath; + } + + return !!expressionForRoot(resourcePathToMatch); + } + + public dispose(): void { + this.toUnbind = dispose(this.toUnbind); + } +} \ No newline at end of file diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index 0f1477e4b31..ac402789f8c 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -25,7 +25,7 @@ import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; import { Position as EditorPosition, IResourceDiffInput, IUntitledResourceInput, IEditor, IResourceInput } from 'vs/platform/editor/common/editor'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; import { IEditorInputFactoryRegistry, Extensions as EditorExtensions } from 'vs/workbench/common/editor'; -import { HistoryService } from 'vs/workbench/services/history/browser/history'; +import { HistoryService } from 'vs/workbench/services/history/electron-browser/history'; import { ActivitybarPart } from 'vs/workbench/browser/parts/activitybar/activitybarPart'; import { EditorPart } from 'vs/workbench/browser/parts/editor/editorPart'; import { SidebarPart } from 'vs/workbench/browser/parts/sidebar/sidebarPart'; diff --git a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts index 4f1d8d3741d..8d300d8a568 100644 --- a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts +++ b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts @@ -11,13 +11,12 @@ import { toErrorMessage } from 'vs/base/common/errorMessage'; import types = require('vs/base/common/types'); import paths = require('vs/base/common/paths'); import { Action } from 'vs/base/common/actions'; -import { VIEWLET_ID, TEXT_FILE_EDITOR_ID } from 'vs/workbench/parts/files/common/files'; +import { VIEWLET_ID, TEXT_FILE_EDITOR_ID, IExplorerViewlet } from 'vs/workbench/parts/files/common/files'; import { ITextFileEditorModel, ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { BaseTextEditor } from 'vs/workbench/browser/parts/editor/textEditor'; import { EditorOptions, TextEditorOptions, IEditorCloseEvent } from 'vs/workbench/common/editor'; import { BinaryEditorModel } from 'vs/workbench/common/editor/binaryEditorModel'; import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput'; -import { ExplorerViewlet } from 'vs/workbench/parts/files/browser/explorerViewlet'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { FileOperationError, FileOperationResult, FileChangesEvent, IFileService } from 'vs/platform/files/common/files'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -191,7 +190,7 @@ export class TextFileEditor extends BaseTextEditor { // Best we can do is to reveal the folder in the explorer if (this.contextService.isInsideWorkspace(input.getResource())) { this.viewletService.openViewlet(VIEWLET_ID, true).done(viewlet => { - return (viewlet as ExplorerViewlet).getExplorerView().select(input.getResource(), true); + return (viewlet as IExplorerViewlet).getExplorerView().select(input.getResource(), true); }, errors.onUnexpectedError); } }, errors.onUnexpectedError); diff --git a/src/vs/workbench/parts/files/common/files.ts b/src/vs/workbench/parts/files/common/files.ts index e63b3e56b59..0bb9d5ee7f1 100644 --- a/src/vs/workbench/parts/files/common/files.ts +++ b/src/vs/workbench/parts/files/common/files.ts @@ -19,12 +19,21 @@ import { IMode } from 'vs/editor/common/modes'; import { IModelService } from 'vs/editor/common/services/modelService'; import { IModeService } from 'vs/editor/common/services/modeService'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; +import { IViewlet } from 'vs/workbench/common/viewlet'; /** * Explorer viewlet id. */ export const VIEWLET_ID = 'workbench.view.explorer'; +export interface IExplorerViewlet extends IViewlet { + getExplorerView(): IExplorerView; +} + +export interface IExplorerView { + select(resource: URI, reveal?: boolean): TPromise; +} + /** * Context Keys to use with keybindings for the Explorer and Open Editors view */ diff --git a/src/vs/workbench/parts/files/browser/explorerViewlet.ts b/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts similarity index 95% rename from src/vs/workbench/parts/files/browser/explorerViewlet.ts rename to src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts index 4175dc945a6..9837557f688 100644 --- a/src/vs/workbench/parts/files/browser/explorerViewlet.ts +++ b/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts @@ -11,13 +11,13 @@ import { IActionRunner } from 'vs/base/common/actions'; import { TPromise } from 'vs/base/common/winjs.base'; import * as DOM from 'vs/base/browser/dom'; import { Builder } from 'vs/base/browser/builder'; -import { VIEWLET_ID, ExplorerViewletVisibleContext, IFilesConfiguration, OpenEditorsVisibleContext, OpenEditorsVisibleCondition } from 'vs/workbench/parts/files/common/files'; +import { VIEWLET_ID, ExplorerViewletVisibleContext, IFilesConfiguration, OpenEditorsVisibleContext, OpenEditorsVisibleCondition, IExplorerViewlet } from 'vs/workbench/parts/files/common/files'; import { PersistentViewsViewlet, ViewsViewletPanel, IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; -import { ActionRunner, FileViewletState } from 'vs/workbench/parts/files/browser/views/explorerViewer'; -import { ExplorerView, IExplorerViewOptions } from 'vs/workbench/parts/files/browser/views/explorerView'; -import { EmptyView } from 'vs/workbench/parts/files/browser/views/emptyView'; -import { OpenEditorsView } from 'vs/workbench/parts/files/browser/views/openEditorsView'; +import { ActionRunner, FileViewletState } from 'vs/workbench/parts/files/electron-browser/views/explorerViewer'; +import { ExplorerView, IExplorerViewOptions } from 'vs/workbench/parts/files/electron-browser/views/explorerView'; +import { EmptyView } from 'vs/workbench/parts/files/electron-browser/views/emptyView'; +import { OpenEditorsView } from 'vs/workbench/parts/files/electron-browser/views/openEditorsView'; import { IStorageService } from 'vs/platform/storage/common/storage'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IExtensionService } from 'vs/platform/extensions/common/extensions'; @@ -33,7 +33,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; import { ViewsRegistry, ViewLocation, IViewDescriptor } from 'vs/workbench/browser/parts/views/viewsRegistry'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -export class ExplorerViewlet extends PersistentViewsViewlet { +export class ExplorerViewlet extends PersistentViewsViewlet implements IExplorerViewlet { private static EXPLORER_VIEWS_STATE = 'workbench.explorer.views.state'; diff --git a/src/vs/workbench/parts/files/browser/fileActions.contribution.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts similarity index 98% rename from src/vs/workbench/parts/files/browser/fileActions.contribution.ts rename to src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts index 6d0d584dd6b..5621838a480 100644 --- a/src/vs/workbench/parts/files/browser/fileActions.contribution.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts @@ -9,8 +9,8 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { Action, IAction } from 'vs/base/common/actions'; import { ActionItem, BaseActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor } from 'vs/workbench/browser/actions'; -import { GlobalNewUntitledFileAction, SaveFileAsAction, ShowOpenedFileInNewWindow, CopyPathAction, GlobalCopyPathAction, RevealInOSAction, GlobalRevealInOSAction, pasteIntoFocusedFilesExplorerViewItem, FocusOpenEditorsView, FocusFilesExplorer, GlobalCompareResourcesAction, GlobalNewFileAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView, CompareWithSavedAction, CompareWithClipboardAction } from 'vs/workbench/parts/files/browser/fileActions'; -import { revertLocalChangesCommand, acceptLocalChangesCommand, CONFLICT_RESOLUTION_CONTEXT } from 'vs/workbench/parts/files/browser/saveErrorHandler'; +import { GlobalNewUntitledFileAction, SaveFileAsAction, ShowOpenedFileInNewWindow, CopyPathAction, GlobalCopyPathAction, RevealInOSAction, GlobalRevealInOSAction, pasteIntoFocusedFilesExplorerViewItem, FocusOpenEditorsView, FocusFilesExplorer, GlobalCompareResourcesAction, GlobalNewFileAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView, CompareWithSavedAction, CompareWithClipboardAction } from 'vs/workbench/parts/files/electron-browser/fileActions'; +import { revertLocalChangesCommand, acceptLocalChangesCommand, CONFLICT_RESOLUTION_CONTEXT } from 'vs/workbench/parts/files/electron-browser/saveErrorHandler'; import { SyncActionDescriptor, MenuId, MenuRegistry } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; @@ -18,7 +18,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { FileStat, Model } from 'vs/workbench/parts/files/common/explorerModel'; import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; import { AddRootFolderAction, RemoveRootFolderAction, OpenFolderSettingsAction } from 'vs/workbench/browser/actions/workspaceActions'; -import { copyFocusedFilesExplorerViewItem, revealInOSFocusedFilesExplorerItem, openFocusedExplorerItemSideBySideCommand, copyPathOfFocusedExplorerItem, copyPathCommand, revealInExplorerCommand, revealInOSCommand, openWindowCommand, deleteFocusedFilesExplorerViewItemCommand, moveFocusedFilesExplorerViewItemToTrashCommand, renameFocusedFilesExplorerViewItemCommand } from 'vs/workbench/parts/files/browser/fileCommands'; +import { copyFocusedFilesExplorerViewItem, revealInOSFocusedFilesExplorerItem, openFocusedExplorerItemSideBySideCommand, copyPathOfFocusedExplorerItem, copyPathCommand, revealInExplorerCommand, revealInOSCommand, openWindowCommand, deleteFocusedFilesExplorerViewItemCommand, moveFocusedFilesExplorerViewItemToTrashCommand, renameFocusedFilesExplorerViewItemCommand } from 'vs/workbench/parts/files/electron-browser/fileCommands'; import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; diff --git a/src/vs/workbench/parts/files/browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts similarity index 99% rename from src/vs/workbench/parts/files/browser/fileActions.ts rename to src/vs/workbench/parts/files/electron-browser/fileActions.ts index fdb24e9ea11..c21ea893f22 100644 --- a/src/vs/workbench/parts/files/browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -28,8 +28,8 @@ import { ITextFileService } from 'vs/workbench/services/textfile/common/textfile import { IFileService, IFileStat } from 'vs/platform/files/common/files'; import { toResource, IEditorIdentifier } from 'vs/workbench/common/editor'; import { FileStat, Model, NewStatPlaceholder } from 'vs/workbench/parts/files/common/explorerModel'; -import { ExplorerView } from 'vs/workbench/parts/files/browser/views/explorerView'; -import { ExplorerViewlet } from 'vs/workbench/parts/files/browser/explorerViewlet'; +import { ExplorerView } from 'vs/workbench/parts/files/electron-browser/views/explorerView'; +import { ExplorerViewlet } from 'vs/workbench/parts/files/electron-browser/explorerViewlet'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { CollapseAction } from 'vs/workbench/browser/viewlet'; @@ -44,7 +44,7 @@ import { getCodeEditor } from 'vs/editor/browser/services/codeEditorService'; import { IEditorViewState, IModel } from 'vs/editor/common/editorCommon'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; import { IWindowsService } from 'vs/platform/windows/common/windows'; -import { withFocusedFilesExplorer, revealInOSCommand, revealInExplorerCommand, copyPathCommand } from 'vs/workbench/parts/files/browser/fileCommands'; +import { withFocusedFilesExplorer, revealInOSCommand, revealInExplorerCommand, copyPathCommand } from 'vs/workbench/parts/files/electron-browser/fileCommands'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { ITextModelService, ITextModelContentProvider } from 'vs/editor/common/services/resolverService'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; diff --git a/src/vs/workbench/parts/files/browser/fileCommands.ts b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts similarity index 98% rename from src/vs/workbench/parts/files/browser/fileCommands.ts rename to src/vs/workbench/parts/files/electron-browser/fileCommands.ts index 8a0a4629dc2..b2eeab111dd 100644 --- a/src/vs/workbench/parts/files/browser/fileCommands.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts @@ -16,7 +16,7 @@ import { IWindowsService } from 'vs/platform/windows/common/windows'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { ExplorerViewlet } from 'vs/workbench/parts/files/browser/explorerViewlet'; +import { ExplorerViewlet } from 'vs/workbench/parts/files/electron-browser/explorerViewlet'; import { VIEWLET_ID, explorerItemToFileResource } from 'vs/workbench/parts/files/common/files'; import { FileStat, OpenEditor } from 'vs/workbench/parts/files/common/explorerModel'; import errors = require('vs/base/common/errors'); diff --git a/src/vs/workbench/parts/files/browser/files.contribution.ts b/src/vs/workbench/parts/files/electron-browser/files.contribution.ts similarity index 99% rename from src/vs/workbench/parts/files/browser/files.contribution.ts rename to src/vs/workbench/parts/files/electron-browser/files.contribution.ts index f4b01bb8357..b09d84a7d00 100644 --- a/src/vs/workbench/parts/files/browser/files.contribution.ts +++ b/src/vs/workbench/parts/files/electron-browser/files.contribution.ts @@ -17,7 +17,7 @@ import { IEditorInputFactory, EditorInput, IFileEditorInput, IEditorInputFactory import { AutoSaveConfiguration, HotExitConfiguration, SUPPORTED_ENCODINGS } from 'vs/platform/files/common/files'; import { FILE_EDITOR_INPUT_ID, VIEWLET_ID, SortOrderConfiguration } from 'vs/workbench/parts/files/common/files'; import { FileEditorTracker } from 'vs/workbench/parts/files/browser/editors/fileEditorTracker'; -import { SaveErrorHandler } from 'vs/workbench/parts/files/browser/saveErrorHandler'; +import { SaveErrorHandler } from 'vs/workbench/parts/files/electron-browser/saveErrorHandler'; import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput'; import { TextFileEditor } from 'vs/workbench/parts/files/browser/editors/textFileEditor'; import { BinaryFileEditor } from 'vs/workbench/parts/files/browser/editors/binaryFileEditor'; @@ -29,7 +29,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import * as platform from 'vs/base/common/platform'; import { DirtyFilesTracker } from 'vs/workbench/parts/files/common/dirtyFilesTracker'; -import { ExplorerViewlet } from 'vs/workbench/parts/files/browser/explorerViewlet'; +import { ExplorerViewlet } from 'vs/workbench/parts/files/electron-browser/explorerViewlet'; import { IEditorRegistry, EditorDescriptor, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; import { DataUriEditorInput } from 'vs/workbench/common/editor/dataUriEditorInput'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; diff --git a/src/vs/workbench/parts/files/browser/media/AddFile.svg b/src/vs/workbench/parts/files/electron-browser/media/AddFile.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/AddFile.svg rename to src/vs/workbench/parts/files/electron-browser/media/AddFile.svg diff --git a/src/vs/workbench/parts/files/browser/media/AddFile_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/AddFile_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/AddFile_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/AddFile_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/AddFolder.svg b/src/vs/workbench/parts/files/electron-browser/media/AddFolder.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/AddFolder.svg rename to src/vs/workbench/parts/files/electron-browser/media/AddFolder.svg diff --git a/src/vs/workbench/parts/files/browser/media/AddFolder_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/AddFolder_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/AddFolder_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/AddFolder_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/CollapseAll.svg b/src/vs/workbench/parts/files/electron-browser/media/CollapseAll.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/CollapseAll.svg rename to src/vs/workbench/parts/files/electron-browser/media/CollapseAll.svg diff --git a/src/vs/workbench/parts/files/browser/media/CollapseAll_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/CollapseAll_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/CollapseAll_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/CollapseAll_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/Preview.svg b/src/vs/workbench/parts/files/electron-browser/media/Preview.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/Preview.svg rename to src/vs/workbench/parts/files/electron-browser/media/Preview.svg diff --git a/src/vs/workbench/parts/files/browser/media/Preview_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/Preview_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/Preview_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/Preview_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/Refresh.svg b/src/vs/workbench/parts/files/electron-browser/media/Refresh.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/Refresh.svg rename to src/vs/workbench/parts/files/electron-browser/media/Refresh.svg diff --git a/src/vs/workbench/parts/files/browser/media/Refresh_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/Refresh_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/Refresh_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/Refresh_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/action-close-dark.svg b/src/vs/workbench/parts/files/electron-browser/media/action-close-dark.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/action-close-dark.svg rename to src/vs/workbench/parts/files/electron-browser/media/action-close-dark.svg diff --git a/src/vs/workbench/parts/files/browser/media/action-close-dirty-dark.svg b/src/vs/workbench/parts/files/electron-browser/media/action-close-dirty-dark.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/action-close-dirty-dark.svg rename to src/vs/workbench/parts/files/electron-browser/media/action-close-dirty-dark.svg diff --git a/src/vs/workbench/parts/files/browser/media/action-close-dirty-focus.svg b/src/vs/workbench/parts/files/electron-browser/media/action-close-dirty-focus.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/action-close-dirty-focus.svg rename to src/vs/workbench/parts/files/electron-browser/media/action-close-dirty-focus.svg diff --git a/src/vs/workbench/parts/files/browser/media/action-close-dirty.svg b/src/vs/workbench/parts/files/electron-browser/media/action-close-dirty.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/action-close-dirty.svg rename to src/vs/workbench/parts/files/electron-browser/media/action-close-dirty.svg diff --git a/src/vs/workbench/parts/files/browser/media/action-close-focus.svg b/src/vs/workbench/parts/files/electron-browser/media/action-close-focus.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/action-close-focus.svg rename to src/vs/workbench/parts/files/electron-browser/media/action-close-focus.svg diff --git a/src/vs/workbench/parts/files/browser/media/action-close.svg b/src/vs/workbench/parts/files/electron-browser/media/action-close.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/action-close.svg rename to src/vs/workbench/parts/files/electron-browser/media/action-close.svg diff --git a/src/vs/workbench/parts/files/browser/media/check-inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/check-inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/check-inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/check-inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/check.svg b/src/vs/workbench/parts/files/electron-browser/media/check.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/check.svg rename to src/vs/workbench/parts/files/electron-browser/media/check.svg diff --git a/src/vs/workbench/parts/files/browser/media/closeall.svg b/src/vs/workbench/parts/files/electron-browser/media/closeall.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/closeall.svg rename to src/vs/workbench/parts/files/electron-browser/media/closeall.svg diff --git a/src/vs/workbench/parts/files/browser/media/closeall_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/closeall_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/closeall_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/closeall_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/collapsed-dark.svg b/src/vs/workbench/parts/files/electron-browser/media/collapsed-dark.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/collapsed-dark.svg rename to src/vs/workbench/parts/files/electron-browser/media/collapsed-dark.svg diff --git a/src/vs/workbench/parts/files/browser/media/collapsed-hc.svg b/src/vs/workbench/parts/files/electron-browser/media/collapsed-hc.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/collapsed-hc.svg rename to src/vs/workbench/parts/files/electron-browser/media/collapsed-hc.svg diff --git a/src/vs/workbench/parts/files/browser/media/collapsed.svg b/src/vs/workbench/parts/files/electron-browser/media/collapsed.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/collapsed.svg rename to src/vs/workbench/parts/files/electron-browser/media/collapsed.svg diff --git a/src/vs/workbench/parts/files/browser/media/expanded-dark.svg b/src/vs/workbench/parts/files/electron-browser/media/expanded-dark.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/expanded-dark.svg rename to src/vs/workbench/parts/files/electron-browser/media/expanded-dark.svg diff --git a/src/vs/workbench/parts/files/browser/media/expanded-hc.svg b/src/vs/workbench/parts/files/electron-browser/media/expanded-hc.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/expanded-hc.svg rename to src/vs/workbench/parts/files/electron-browser/media/expanded-hc.svg diff --git a/src/vs/workbench/parts/files/browser/media/expanded.svg b/src/vs/workbench/parts/files/electron-browser/media/expanded.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/expanded.svg rename to src/vs/workbench/parts/files/electron-browser/media/expanded.svg diff --git a/src/vs/workbench/parts/files/browser/media/explorerviewlet.css b/src/vs/workbench/parts/files/electron-browser/media/explorerviewlet.css similarity index 100% rename from src/vs/workbench/parts/files/browser/media/explorerviewlet.css rename to src/vs/workbench/parts/files/electron-browser/media/explorerviewlet.css diff --git a/src/vs/workbench/parts/files/browser/media/fileactions.css b/src/vs/workbench/parts/files/electron-browser/media/fileactions.css similarity index 100% rename from src/vs/workbench/parts/files/browser/media/fileactions.css rename to src/vs/workbench/parts/files/electron-browser/media/fileactions.css diff --git a/src/vs/workbench/parts/files/browser/media/files-dark.svg b/src/vs/workbench/parts/files/electron-browser/media/files-dark.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/files-dark.svg rename to src/vs/workbench/parts/files/electron-browser/media/files-dark.svg diff --git a/src/vs/workbench/parts/files/browser/media/new-file-tb.png b/src/vs/workbench/parts/files/electron-browser/media/new-file-tb.png similarity index 100% rename from src/vs/workbench/parts/files/browser/media/new-file-tb.png rename to src/vs/workbench/parts/files/electron-browser/media/new-file-tb.png diff --git a/src/vs/workbench/parts/files/browser/media/saveall.svg b/src/vs/workbench/parts/files/electron-browser/media/saveall.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/saveall.svg rename to src/vs/workbench/parts/files/electron-browser/media/saveall.svg diff --git a/src/vs/workbench/parts/files/browser/media/saveall_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/saveall_inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/saveall_inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/saveall_inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/split-editor-horizontal-inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/split-editor-horizontal-inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/split-editor-horizontal-inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/split-editor-horizontal-inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/split-editor-horizontal.svg b/src/vs/workbench/parts/files/electron-browser/media/split-editor-horizontal.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/split-editor-horizontal.svg rename to src/vs/workbench/parts/files/electron-browser/media/split-editor-horizontal.svg diff --git a/src/vs/workbench/parts/files/browser/media/split-editor-vertical-inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/split-editor-vertical-inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/split-editor-vertical-inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/split-editor-vertical-inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/split-editor-vertical.svg b/src/vs/workbench/parts/files/electron-browser/media/split-editor-vertical.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/split-editor-vertical.svg rename to src/vs/workbench/parts/files/electron-browser/media/split-editor-vertical.svg diff --git a/src/vs/workbench/parts/files/browser/media/undo-inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/undo-inverse.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/undo-inverse.svg rename to src/vs/workbench/parts/files/electron-browser/media/undo-inverse.svg diff --git a/src/vs/workbench/parts/files/browser/media/undo.svg b/src/vs/workbench/parts/files/electron-browser/media/undo.svg similarity index 100% rename from src/vs/workbench/parts/files/browser/media/undo.svg rename to src/vs/workbench/parts/files/electron-browser/media/undo.svg diff --git a/src/vs/workbench/parts/files/browser/saveErrorHandler.ts b/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.ts similarity index 99% rename from src/vs/workbench/parts/files/browser/saveErrorHandler.ts rename to src/vs/workbench/parts/files/electron-browser/saveErrorHandler.ts index 4c37acb9edd..b032912fc49 100644 --- a/src/vs/workbench/parts/files/browser/saveErrorHandler.ts +++ b/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.ts @@ -11,7 +11,7 @@ import { toErrorMessage } from 'vs/base/common/errorMessage'; import paths = require('vs/base/common/paths'); import { Action } from 'vs/base/common/actions'; import URI from 'vs/base/common/uri'; -import { SaveFileAsAction, RevertFileAction, SaveFileAction } from 'vs/workbench/parts/files/browser/fileActions'; +import { SaveFileAsAction, RevertFileAction, SaveFileAction } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; diff --git a/src/vs/workbench/parts/files/browser/views/emptyView.ts b/src/vs/workbench/parts/files/electron-browser/views/emptyView.ts similarity index 100% rename from src/vs/workbench/parts/files/browser/views/emptyView.ts rename to src/vs/workbench/parts/files/electron-browser/views/emptyView.ts diff --git a/src/vs/workbench/parts/files/browser/views/explorerDecorationsProvider.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.ts similarity index 100% rename from src/vs/workbench/parts/files/browser/views/explorerDecorationsProvider.ts rename to src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.ts diff --git a/src/vs/workbench/parts/files/browser/views/explorerView.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts similarity index 98% rename from src/vs/workbench/parts/files/browser/views/explorerView.ts rename to src/vs/workbench/parts/files/electron-browser/views/explorerView.ts index 8c0bb21d272..b9855ff254f 100644 --- a/src/vs/workbench/parts/files/browser/views/explorerView.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts @@ -18,10 +18,10 @@ import { prepareActions } from 'vs/workbench/browser/actions'; import { memoize } from 'vs/base/common/decorators'; import { ITree } from 'vs/base/parts/tree/browser/tree'; import { Tree } from 'vs/base/parts/tree/browser/treeImpl'; -import { IFilesConfiguration, ExplorerFolderContext, FilesExplorerFocusedContext, ExplorerFocusedContext, SortOrderConfiguration, SortOrder } from 'vs/workbench/parts/files/common/files'; +import { IFilesConfiguration, ExplorerFolderContext, FilesExplorerFocusedContext, ExplorerFocusedContext, SortOrderConfiguration, SortOrder, IExplorerView } from 'vs/workbench/parts/files/common/files'; import { FileOperation, FileOperationEvent, IResolveFileOptions, FileChangeType, FileChangesEvent, IFileService, FILES_EXCLUDE_CONFIG } from 'vs/platform/files/common/files'; -import { RefreshViewExplorerAction, NewFolderAction, NewFileAction } from 'vs/workbench/parts/files/browser/fileActions'; -import { FileDragAndDrop, FileFilter, FileSorter, FileController, FileRenderer, FileDataSource, FileViewletState, FileAccessibilityProvider } from 'vs/workbench/parts/files/browser/views/explorerViewer'; +import { RefreshViewExplorerAction, NewFolderAction, NewFileAction } from 'vs/workbench/parts/files/electron-browser/fileActions'; +import { FileDragAndDrop, FileFilter, FileSorter, FileController, FileRenderer, FileDataSource, FileViewletState, FileAccessibilityProvider } from 'vs/workbench/parts/files/electron-browser/views/explorerViewer'; import { toResource } from 'vs/workbench/common/editor'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; @@ -32,7 +32,7 @@ import { FileStat, Model } from 'vs/workbench/parts/files/common/explorerModel'; import { IListService } from 'vs/platform/list/browser/listService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { ExplorerDecorationsProvider } from 'vs/workbench/parts/files/browser/views/explorerDecorationsProvider'; +import { ExplorerDecorationsProvider } from 'vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider'; import { IWorkspaceContextService, WorkbenchState, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; @@ -41,7 +41,8 @@ import { IProgressService } from 'vs/platform/progress/common/progress'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IMessageService, Severity } from 'vs/platform/message/common/message'; import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; -import { ResourceContextKey, ResourceGlobMatcher } from 'vs/workbench/common/resources'; +import { ResourceContextKey } from 'vs/workbench/common/resources'; +import { ResourceGlobMatcher } from 'vs/workbench/electron-browser/resources'; import { IWorkbenchThemeService, IFileIconTheme } from 'vs/workbench/services/themes/common/workbenchThemeService'; import { isLinux } from 'vs/base/common/platform'; import { attachListStyler } from 'vs/platform/theme/common/styler'; @@ -51,7 +52,7 @@ export interface IExplorerViewOptions extends IViewletViewOptions { viewletState: FileViewletState; } -export class ExplorerView extends ViewsViewletPanel { +export class ExplorerView extends ViewsViewletPanel implements IExplorerView { public static ID: string = 'workbench.explorer.fileView'; private static EXPLORER_FILE_CHANGES_REACT_DELAY = 500; // delay in ms to react to file changes to give our internal events a chance to react first diff --git a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts similarity index 99% rename from src/vs/workbench/parts/files/browser/views/explorerViewer.ts rename to src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 16cc0020069..94e7686903d 100644 --- a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -28,7 +28,7 @@ import { IFilesConfiguration, SortOrder } from 'vs/workbench/parts/files/common/ import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { FileOperationError, FileOperationResult, IFileService, FileKind } from 'vs/platform/files/common/files'; import { ResourceMap } from 'vs/base/common/map'; -import { DuplicateFileAction, ImportFileAction, IEditableData, IFileViewletState } from 'vs/workbench/parts/files/browser/fileActions'; +import { DuplicateFileAction, ImportFileAction, IEditableData, IFileViewletState } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { IDataSource, ITree, IAccessibilityProvider, IRenderer, ContextMenuEvent, ISorter, IFilter, IDragAndDropData, IDragOverReaction, DRAG_OVER_ACCEPT_BUBBLE_DOWN, DRAG_OVER_ACCEPT_BUBBLE_DOWN_COPY, DRAG_OVER_ACCEPT_BUBBLE_UP, DRAG_OVER_ACCEPT_BUBBLE_UP_COPY, DRAG_OVER_REJECT } from 'vs/base/parts/tree/browser/tree'; import { DesktopDragAndDropData, ExternalElementsDragAndDropData, SimpleFileResourceDragAndDrop } from 'vs/base/parts/tree/browser/treeDnd'; import { ClickBehavior, DefaultController } from 'vs/base/parts/tree/browser/treeDefaults'; @@ -55,6 +55,7 @@ import { IWindowService } from 'vs/platform/windows/common/windows'; import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing'; import { getPathLabel } from 'vs/base/common/labels'; import { extractResources } from 'vs/workbench/browser/editor'; +import { relative } from 'path'; export class FileDataSource implements IDataSource { constructor( @@ -717,7 +718,7 @@ export class FileFilter implements IFilter { // Hide those that match Hidden Patterns const siblingsFn = () => siblings && siblings.map(c => c.name); const expression = this.hiddenExpressionPerRoot.get(stat.root.resource.toString()) || Object.create(null); - if (glob.match(expression, paths.normalize(paths.relative(stat.root.resource.fsPath, stat.resource.fsPath), true), siblingsFn)) { + if (glob.match(expression, paths.normalize(relative(stat.root.resource.fsPath, stat.resource.fsPath), true), siblingsFn)) { return false; // hidden through pattern } diff --git a/src/vs/workbench/parts/files/browser/views/openEditorsView.ts b/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts similarity index 98% rename from src/vs/workbench/parts/files/browser/views/openEditorsView.ts rename to src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts index 6467e58b843..532be0fe3ed 100644 --- a/src/vs/workbench/parts/files/browser/views/openEditorsView.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts @@ -17,13 +17,13 @@ import { IEditorGroupService } from 'vs/workbench/services/group/common/groupSer import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IEditorStacksModel, IStacksModelChangeEvent, IEditorGroup } from 'vs/workbench/common/editor'; -import { SaveAllAction } from 'vs/workbench/parts/files/browser/fileActions'; +import { SaveAllAction } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { ViewsViewletPanel, IViewletViewOptions, IViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; import { VIEWLET_ID, OpenEditorsFocusedContext, ExplorerFocusedContext } from 'vs/workbench/parts/files/common/files'; import { ITextFileService, AutoSaveMode } from 'vs/workbench/services/textfile/common/textfiles'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { OpenEditor } from 'vs/workbench/parts/files/common/explorerModel'; -import { Renderer, DataSource, Controller, AccessibilityProvider, ActionProvider, DragAndDrop } from 'vs/workbench/parts/files/browser/views/openEditorsViewer'; +import { Renderer, DataSource, Controller, AccessibilityProvider, ActionProvider, DragAndDrop } from 'vs/workbench/parts/files/electron-browser/views/openEditorsViewer'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { CloseAllEditorsAction } from 'vs/workbench/browser/parts/editor/editorActions'; import { ToggleEditorLayoutAction } from 'vs/workbench/browser/actions/toggleEditorLayout'; diff --git a/src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/openEditorsViewer.ts similarity index 99% rename from src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts rename to src/vs/workbench/parts/files/electron-browser/views/openEditorsViewer.ts index 8024b248317..5ca4c004f89 100644 --- a/src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/openEditorsViewer.ts @@ -28,7 +28,7 @@ import { explorerItemToFileResource, IFilesConfiguration } from 'vs/workbench/pa import { ITextFileService, AutoSaveMode } from 'vs/workbench/services/textfile/common/textfiles'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { EditorStacksModel, EditorGroup } from 'vs/workbench/common/editor/editorStacksModel'; -import { SaveFileAction, RevertFileAction, SaveFileAsAction, OpenToSideAction, SelectResourceForCompareAction, CompareResourcesAction, SaveAllInGroupAction, CompareWithSavedAction } from 'vs/workbench/parts/files/browser/fileActions'; +import { SaveFileAction, RevertFileAction, SaveFileAsAction, OpenToSideAction, SelectResourceForCompareAction, CompareResourcesAction, SaveAllInGroupAction, CompareWithSavedAction } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { CloseOtherEditorsInGroupAction, CloseEditorAction, CloseEditorsInGroupAction, CloseUnmodifiedEditorsInGroupAction } from 'vs/workbench/browser/parts/editor/editorActions'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; diff --git a/src/vs/workbench/parts/files/test/browser/explorerModel.test.ts b/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts similarity index 99% rename from src/vs/workbench/parts/files/test/browser/explorerModel.test.ts rename to src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts index 2f5ab6b4a64..fd651f9af7c 100644 --- a/src/vs/workbench/parts/files/test/browser/explorerModel.test.ts +++ b/src/vs/workbench/parts/files/test/electron-browser/explorerModel.test.ts @@ -10,7 +10,7 @@ import { isUndefinedOrNull, isArray } from 'vs/base/common/types'; import { isLinux, isWindows } from 'vs/base/common/platform'; import URI from 'vs/base/common/uri'; import { join } from 'vs/base/common/paths'; -import { validateFileName } from 'vs/workbench/parts/files/browser/fileActions'; +import { validateFileName } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { FileStat } from 'vs/workbench/parts/files/common/explorerModel'; function createStat(path: string, name: string, isFolder: boolean, hasChildren: boolean, size: number, mtime: number): FileStat { diff --git a/src/vs/workbench/parts/search/browser/searchViewlet.ts b/src/vs/workbench/parts/search/browser/searchViewlet.ts index 6eec3b4490d..7a78bb4f08f 100644 --- a/src/vs/workbench/parts/search/browser/searchViewlet.ts +++ b/src/vs/workbench/parts/search/browser/searchViewlet.ts @@ -904,7 +904,7 @@ export class SearchViewlet extends Viewlet { if (resource) { if (this.contextService.getWorkbenchState() === WorkbenchState.FOLDER) { // Show relative path from the root for single-root mode - folderPath = paths.relative(workspace.folders[0].uri.fsPath, resource.fsPath); + folderPath = paths.normalize(pathToRelative(workspace.folders[0].uri.fsPath, resource.fsPath)); if (folderPath && folderPath !== '.') { folderPath = './' + folderPath; } diff --git a/src/vs/workbench/parts/watermark/electron-browser/watermark.ts b/src/vs/workbench/parts/watermark/electron-browser/watermark.ts index 70f3784bf1c..f34d5ea4a0f 100644 --- a/src/vs/workbench/parts/watermark/electron-browser/watermark.ts +++ b/src/vs/workbench/parts/watermark/electron-browser/watermark.ts @@ -18,7 +18,7 @@ import { IWorkbenchContribution, IWorkbenchContributionsRegistry, Extensions as import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { OpenRecentAction } from 'vs/workbench/electron-browser/actions'; -import { GlobalNewUntitledFileAction } from 'vs/workbench/parts/files/browser/fileActions'; +import { GlobalNewUntitledFileAction } from 'vs/workbench/parts/files/electron-browser/fileActions'; import { OpenFolderAction, OpenFileFolderAction, OpenFileAction } from 'vs/workbench/browser/actions/workspaceActions'; import { ShowAllCommandsAction } from 'vs/workbench/parts/quickopen/browser/commandsHandler'; import { Parts, IPartService } from 'vs/workbench/services/part/common/partService'; diff --git a/src/vs/workbench/services/history/browser/history.ts b/src/vs/workbench/services/history/electron-browser/history.ts similarity index 99% rename from src/vs/workbench/services/history/browser/history.ts rename to src/vs/workbench/services/history/electron-browser/history.ts index bfd0b35e94f..86b413f2331 100644 --- a/src/vs/workbench/services/history/browser/history.ts +++ b/src/vs/workbench/services/history/electron-browser/history.ts @@ -29,7 +29,7 @@ import { getExcludes, ISearchConfiguration } from 'vs/platform/search/common/sea import { IExpression } from 'vs/base/common/glob'; import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { ResourceGlobMatcher } from 'vs/workbench/common/resources'; +import { ResourceGlobMatcher } from 'vs/workbench/electron-browser/resources'; /** * Stores the selection & view state of an editor and allows to compare it to other selection states. diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index ca1055517a7..e0dccc45d3a 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -5,7 +5,7 @@ 'use strict'; -import 'vs/workbench/parts/files/browser/files.contribution'; // load our contribution into the test +import 'vs/workbench/parts/files/electron-browser/files.contribution'; // load our contribution into the test import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput'; import { Promise, TPromise } from 'vs/base/common/winjs.base'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index 907f39eb071..8b75deae37f 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -36,9 +36,9 @@ import 'vs/workbench/browser/parts/quickopen/quickopen.contribution'; import 'vs/workbench/parts/quickopen/browser/quickopen.contribution'; import 'vs/workbench/browser/parts/editor/editorPicker'; -import 'vs/workbench/parts/files/browser/explorerViewlet'; -import 'vs/workbench/parts/files/browser/fileActions.contribution'; -import 'vs/workbench/parts/files/browser/files.contribution'; +import 'vs/workbench/parts/files/electron-browser/explorerViewlet'; +import 'vs/workbench/parts/files/electron-browser/fileActions.contribution'; +import 'vs/workbench/parts/files/electron-browser/files.contribution'; import 'vs/workbench/parts/backup/common/backup.contribution';