mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 04:49:35 +00:00
parent
5d663e0ecc
commit
f5004b783d
|
@ -16,7 +16,7 @@ import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/c
|
|||
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import { isWindows, isMacintosh } from 'vs/base/common/platform';
|
||||
import { FilesExplorerFocusCondition, ExplorerRootContext, ExplorerFolderContext, ExplorerFocusedContext } from 'vs/workbench/parts/files/common/files';
|
||||
import { FilesExplorerFocusCondition, ExplorerRootContext, ExplorerFolderContext } from 'vs/workbench/parts/files/common/files';
|
||||
import { ADD_ROOT_FOLDER_COMMAND_ID, ADD_ROOT_FOLDER_LABEL } from 'vs/workbench/browser/actions/workspaceCommands';
|
||||
import { CLOSE_UNMODIFIED_EDITORS_COMMAND_ID, CLOSE_EDITORS_IN_GROUP_COMMAND_ID, CLOSE_EDITOR_COMMAND_ID, CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID } from 'vs/workbench/browser/parts/editor/editorCommands';
|
||||
import { OPEN_FOLDER_SETTINGS_COMMAND, OPEN_FOLDER_SETTINGS_LABEL } from 'vs/workbench/parts/preferences/browser/preferencesActions';
|
||||
|
@ -142,14 +142,13 @@ function appendSaveConflictEditorTitleAction(id: string, title: string, iconPath
|
|||
|
||||
// Menu registration - command palette
|
||||
|
||||
function appendToCommandPalette(id: string, title: string, category: string, when?: ContextKeyExpr): void {
|
||||
function appendToCommandPalette(id: string, title: string, category: string): void {
|
||||
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
||||
command: {
|
||||
id,
|
||||
title,
|
||||
category
|
||||
},
|
||||
when
|
||||
}
|
||||
});
|
||||
}
|
||||
appendToCommandPalette(COPY_PATH_COMMAND_ID, nls.localize('copyPathOfActive', "Copy Path of Active File"), category);
|
||||
|
@ -161,8 +160,8 @@ appendToCommandPalette(COMPARE_WITH_SAVED_COMMAND_ID, nls.localize('compareActiv
|
|||
appendToCommandPalette(REVEAL_IN_OS_COMMAND_ID, REVEAL_IN_OS_LABEL, category);
|
||||
appendToCommandPalette(SAVE_FILE_AS_COMMAND_ID, SAVE_FILE_AS_LABEL, category);
|
||||
appendToCommandPalette(CLOSE_EDITOR_COMMAND_ID, nls.localize('closeEditor', "Close Editor"), nls.localize('view', "View"));
|
||||
appendToCommandPalette(NEW_FILE_COMMAND_ID, NEW_FILE_LABEL, category, ExplorerFocusedContext);
|
||||
appendToCommandPalette(NEW_FOLDER_COMMAND_ID, NEW_FOLDER_LABEL, category, ExplorerFocusedContext);
|
||||
appendToCommandPalette(NEW_FILE_COMMAND_ID, NEW_FILE_LABEL, category);
|
||||
appendToCommandPalette(NEW_FOLDER_COMMAND_ID, NEW_FOLDER_LABEL, category);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1525,27 +1525,42 @@ function getContext(listWidget: ListWidget, viewletService: IViewletService): IE
|
|||
|
||||
// TODO@isidor these commands are calling into actions due to the complex inheritance action structure.
|
||||
// It should be the other way around, that actions call into commands.
|
||||
function openExplorerAndRunAction(accessor: ServicesAccessor, isFolderAction: boolean): TPromise<any> {
|
||||
const instantationService = accessor.get(IInstantiationService);
|
||||
const listService = accessor.get(IListService);
|
||||
const viewletService = accessor.get(IViewletService);
|
||||
const activeViewlet = viewletService.getActiveViewlet();
|
||||
let explorerPromise = TPromise.as(activeViewlet);
|
||||
if (!activeViewlet || activeViewlet.getId() !== VIEWLET_ID) {
|
||||
explorerPromise = viewletService.openViewlet(VIEWLET_ID, true);
|
||||
}
|
||||
|
||||
return explorerPromise.then((explorer: ExplorerViewlet) => {
|
||||
const explorerView = explorer.getExplorerView();
|
||||
if (explorerView && explorerView.isVisible() && explorerView.isExpanded()) {
|
||||
explorerView.focus();
|
||||
const explorerContext = getContext(listService.lastFocusedList, viewletService);
|
||||
const constructor = isFolderAction ? NewFolderAction : NewFileAction;
|
||||
const action = instantationService.createInstance(constructor, listService.lastFocusedList, explorerContext.stat);
|
||||
|
||||
return action.run(explorerContext);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
|
||||
CommandsRegistry.registerCommand({
|
||||
id: NEW_FILE_COMMAND_ID,
|
||||
handler: (accessor) => {
|
||||
const instantationService = accessor.get(IInstantiationService);
|
||||
const listService = accessor.get(IListService);
|
||||
const explorerContext = getContext(listService.lastFocusedList, accessor.get(IViewletService));
|
||||
const newFileAction = instantationService.createInstance(NewFileAction, listService.lastFocusedList, explorerContext.stat);
|
||||
|
||||
return newFileAction.run(explorerContext);
|
||||
return openExplorerAndRunAction(accessor, false);
|
||||
}
|
||||
});
|
||||
|
||||
CommandsRegistry.registerCommand({
|
||||
id: NEW_FOLDER_COMMAND_ID,
|
||||
handler: (accessor) => {
|
||||
const instantationService = accessor.get(IInstantiationService);
|
||||
const listService = accessor.get(IListService);
|
||||
const explorerContext = getContext(listService.lastFocusedList, accessor.get(IViewletService));
|
||||
const newFolderAction = instantationService.createInstance(NewFolderAction, listService.lastFocusedList, explorerContext.stat);
|
||||
|
||||
return newFolderAction.run(explorerContext);
|
||||
return openExplorerAndRunAction(accessor, true);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue