提交 466c132f 编写于 作者: I isidor

polish download action

上级 9b8401da
......@@ -59,6 +59,11 @@ export interface ISaveDialogOptions {
*/
defaultUri?: URI;
/**
* If the defaultUri is not provided use the default file name.
*/
defaultFileName?: string;
/**
* A set of file filters that are used by the dialog. Each entry is a human readable label,
* like "TypeScript", and an array of extensions.
......
......@@ -23,7 +23,7 @@ import { ResourceContextKey } from 'vs/workbench/common/resources';
import { WorkbenchListDoubleSelection } from 'vs/platform/list/browser/listService';
import { URI } from 'vs/base/common/uri';
import { Schemas } from 'vs/base/common/network';
import { SupportsWorkspacesContext } from 'vs/workbench/browser/contextkeys';
import { SupportsWorkspacesContext, IsWebContext } from 'vs/workbench/browser/contextkeys';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
// Contribute Global Actions
......@@ -210,7 +210,7 @@ appendToCommandPalette(SAVE_FILE_AS_COMMAND_ID, { value: SAVE_FILE_AS_LABEL, ori
appendToCommandPalette(CLOSE_EDITOR_COMMAND_ID, { value: nls.localize('closeEditor', "Close Editor"), original: 'Close Editor' }, { value: nls.localize('view', "View"), original: 'View' });
appendToCommandPalette(NEW_FILE_COMMAND_ID, { value: NEW_FILE_LABEL, original: 'New File' }, category);
appendToCommandPalette(NEW_FOLDER_COMMAND_ID, { value: NEW_FOLDER_LABEL, original: 'New Folder' }, category);
appendToCommandPalette(DOWNLOAD_COMMAND_ID, { value: downloadLabel, original: 'Download' }, category, ResourceContextKey.Scheme.isEqualTo(Schemas.vscodeRemote));
appendToCommandPalette(DOWNLOAD_COMMAND_ID, { value: downloadLabel, original: 'Download' }, category, ContextKeyExpr.and(IsWebContext.toNegated(), ResourceContextKey.Scheme.notEqualsTo(Schemas.file)));
// Menu registration - open editors
......@@ -469,7 +469,7 @@ MenuRegistry.appendMenuItem(MenuId.ExplorerContext, {
id: DOWNLOAD_COMMAND_ID,
title: downloadLabel,
},
when: ResourceContextKey.Scheme.isEqualTo(Schemas.vscodeRemote)
when: ContextKeyExpr.and(IsWebContext.toNegated(), ResourceContextKey.Scheme.notEqualsTo(Schemas.file))
});
MenuRegistry.appendMenuItem(MenuId.ExplorerContext, {
......
......@@ -8,7 +8,7 @@ import * as nls from 'vs/nls';
import * as types from 'vs/base/common/types';
import { isWindows, isLinux } from 'vs/base/common/platform';
import * as extpath from 'vs/base/common/extpath';
import { extname, basename, join } from 'vs/base/common/path';
import { extname, basename } from 'vs/base/common/path';
import * as resources from 'vs/base/common/resources';
import { URI } from 'vs/base/common/uri';
import { toErrorMessage } from 'vs/base/common/errorMessage';
......@@ -45,7 +45,6 @@ import { coalesce } from 'vs/base/common/arrays';
import { AsyncDataTree } from 'vs/base/browser/ui/tree/asyncDataTree';
import { ExplorerItem, NewExplorerItem } from 'vs/workbench/contrib/files/common/explorerModel';
import { onUnexpectedError } from 'vs/base/common/errors';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
export const NEW_FILE_COMMAND_ID = 'explorer.newFile';
export const NEW_FILE_LABEL = nls.localize('newFile', "New File");
......@@ -984,13 +983,13 @@ const downloadFileHandler = (accessor: ServicesAccessor) => {
const explorerContext = getContext(listService.lastFocusedList);
const textFileService = accessor.get(ITextFileService);
const fileDialogService = accessor.get(IFileDialogService);
const environmentService = accessor.get(IEnvironmentService);
if (explorerContext.stat) {
const stats = explorerContext.selection.length > 1 ? explorerContext.selection : [explorerContext.stat];
stats.forEach(async s => {
const resource = await fileDialogService.showSaveDialog({
defaultUri: URI.file(join(environmentService.userHome, basename(s.resource.path)))
availableFileSystems: [Schemas.file],
defaultFileName: basename(s.resource.path)
});
if (resource) {
await textFileService.saveAs(s.resource, resource);
......
......@@ -189,7 +189,7 @@ export class FileDialogService implements IFileDialogService {
private toNativeSaveDialogOptions(options: ISaveDialogOptions): Electron.SaveDialogOptions {
return {
defaultPath: options.defaultUri && options.defaultUri.fsPath,
defaultPath: options.defaultUri && options.defaultUri.fsPath || options.defaultFileName,
buttonLabel: options.saveLabel,
filters: options.filters,
title: options.title
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册