From ada12c7b1e5e0bb4ead67e5f3b2a99f0d772e9a0 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 27 Feb 2017 17:14:40 +0100 Subject: [PATCH] :lipstick: commands --- .../parts/files/browser/fileActions.ts | 16 +------ .../parts/files/browser/fileCommands.ts | 45 ++++++++++++++++--- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/vs/workbench/parts/files/browser/fileActions.ts b/src/vs/workbench/parts/files/browser/fileActions.ts index f5e1d4244e2..ee07e6bf9e3 100644 --- a/src/vs/workbench/parts/files/browser/fileActions.ts +++ b/src/vs/workbench/parts/files/browser/fileActions.ts @@ -1873,12 +1873,7 @@ export class GlobalRevealInOSAction extends Action { } public run(): TPromise { - const fileResource = toResource(this.editorService.getActiveEditorInput(), { supportSideBySide: true, filter: 'file' }); - if (fileResource) { - this.instantiationService.invokeFunction.apply(this.instantiationService, [revealInOSCommand, fileResource]); - } else { - this.messageService.show(severity.Info, nls.localize('openFileToReveal', "Open a file first to reveal")); - } + this.instantiationService.invokeFunction.apply(this.instantiationService, [revealInOSCommand]); return TPromise.as(true); } @@ -1921,14 +1916,7 @@ export class GlobalCopyPathAction extends Action { } public run(): TPromise { - const activeEditor = this.editorService.getActiveEditor(); - const fileResource = activeEditor ? toResource(activeEditor.input, { supportSideBySide: true, filter: 'file' }) : void 0; - if (fileResource) { - this.instantiationService.invokeFunction.apply(this.instantiationService, [copyPathCommand, fileResource]); - this.editorGroupService.focusGroup(activeEditor.position); // focus back to active editor group - } else { - this.messageService.show(severity.Info, nls.localize('openFileToCopy', "Open a file first to copy its path")); - } + this.instantiationService.invokeFunction.apply(this.instantiationService, [copyPathCommand]); return TPromise.as(true); } diff --git a/src/vs/workbench/parts/files/browser/fileCommands.ts b/src/vs/workbench/parts/files/browser/fileCommands.ts index 945a50c5e55..7615215f9ca 100644 --- a/src/vs/workbench/parts/files/browser/fileCommands.ts +++ b/src/vs/workbench/parts/files/browser/fileCommands.ts @@ -5,7 +5,9 @@ 'use strict'; +import nls = require('vs/nls'); import paths = require('vs/base/common/paths'); +import severity from 'vs/base/common/severity'; import { TPromise } from 'vs/base/common/winjs.base'; import URI from 'vs/base/common/uri'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -21,13 +23,32 @@ import errors = require('vs/base/common/errors'); import { ITree } from 'vs/base/parts/tree/browser/tree'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import labels = require('vs/base/common/labels'); +import { IEditorGroupService } from "vs/workbench/services/group/common/groupService"; +import { IMessageService } from "vs/platform/message/common/message"; // Commands -export const copyPathCommand = (accessor: ServicesAccessor, resource: URI) => { - const clipboardService = accessor.get(IClipboardService); +export const copyPathCommand = (accessor: ServicesAccessor, resource?: URI) => { - clipboardService.writeText(labels.getPathLabel(resource)); + // Without resource, try to look at the active editor + if (!resource) { + const editorGroupService = accessor.get(IEditorGroupService); + const editorService = accessor.get(IWorkbenchEditorService); + const activeEditor = editorService.getActiveEditor(); + + resource = activeEditor ? toResource(activeEditor.input, { supportSideBySide: true, filter: 'file' }) : void 0; + if (activeEditor) { + editorGroupService.focusGroup(activeEditor.position); // focus back to active editor group + } + } + + if (resource) { + const clipboardService = accessor.get(IClipboardService); + clipboardService.writeText(labels.getPathLabel(resource)); + } else { + const messageService = accessor.get(IMessageService); + messageService.show(severity.Info, nls.localize('openFileToCopy', "Open a file first to copy its path")); + } }; export const openFolderPickerCommand = (accessor: ServicesAccessor, forceNewWindow: boolean) => { @@ -50,10 +71,22 @@ export const openFileInNewWindowCommand = (accessor: ServicesAccessor) => { windowService.openFilePicker(true, fileResource ? paths.dirname(fileResource.fsPath) : void 0); }; -export const revealInOSCommand = (accessor: ServicesAccessor, resource: URI) => { - const windowsService = accessor.get(IWindowsService); +export const revealInOSCommand = (accessor: ServicesAccessor, resource?: URI) => { + + // Without resource, try to look at the active editor + if (!resource) { + const editorService = accessor.get(IWorkbenchEditorService); - windowsService.showItemInFolder(paths.normalize(resource.fsPath, true)); + resource = toResource(editorService.getActiveEditorInput(), { supportSideBySide: true, filter: 'file' }); + } + + if (resource) { + const windowsService = accessor.get(IWindowsService); + windowsService.showItemInFolder(paths.normalize(resource.fsPath, true)); + } else { + const messageService = accessor.get(IMessageService); + messageService.show(severity.Info, nls.localize('openFileToReveal', "Open a file first to reveal")); + } }; export const revealInExplorerCommand = (accessor: ServicesAccessor, resource: URI) => { -- GitLab