提交 d7cb0d9c 编写于 作者: S Sandeep Somavarapu

#30955 Implement a workbenc action to open folder settings

上级 d5d5da95
......@@ -17,7 +17,7 @@ import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { DefaultPreferencesEditorInput, PreferencesEditor, PreferencesEditorInput } from 'vs/workbench/parts/preferences/browser/preferencesEditor';
import { KeybindingsEditor, KeybindingsEditorInput } from 'vs/workbench/parts/preferences/browser/keybindingsEditor';
import { OpenGlobalSettingsAction, OpenGlobalKeybindingsAction, OpenGlobalKeybindingsFileAction, OpenWorkspaceSettingsAction, ConfigureLanguageBasedSettingsAction } from 'vs/workbench/parts/preferences/browser/preferencesActions';
import { OpenGlobalSettingsAction, OpenGlobalKeybindingsAction, OpenGlobalKeybindingsFileAction, OpenWorkspaceSettingsAction, OpenFolderSettingsAction, ConfigureLanguageBasedSettingsAction } from 'vs/workbench/parts/preferences/browser/preferencesActions';
import {
IPreferencesService, IKeybindingsEditor, CONTEXT_KEYBINDING_FOCUS, CONTEXT_KEYBINDINGS_EDITOR, CONTEXT_KEYBINDINGS_SEARCH_FOCUS, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_REMOVE, KEYBINDINGS_EDITOR_COMMAND_SEARCH,
KEYBINDINGS_EDITOR_COMMAND_COPY, KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_SHOW_CONFLICTS, KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS
......@@ -164,6 +164,7 @@ const category = nls.localize('preferences', "Preferences");
const registry = Registry.as<IWorkbenchActionRegistry>(Extensions.WorkbenchActions);
registry.registerWorkbenchAction(new SyncActionDescriptor(OpenGlobalSettingsAction, OpenGlobalSettingsAction.ID, OpenGlobalSettingsAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.US_COMMA }), 'Preferences: Open User Settings', category);
registry.registerWorkbenchAction(new SyncActionDescriptor(OpenWorkspaceSettingsAction, OpenWorkspaceSettingsAction.ID, OpenWorkspaceSettingsAction.LABEL), 'Preferences: Open Workspace Settings', category);
registry.registerWorkbenchAction(new SyncActionDescriptor(OpenFolderSettingsAction, OpenFolderSettingsAction.ID, OpenFolderSettingsAction.LABEL), 'Preferences: Open Folder Settings', category);
registry.registerWorkbenchAction(new SyncActionDescriptor(OpenGlobalKeybindingsAction, OpenGlobalKeybindingsAction.ID, OpenGlobalKeybindingsAction.LABEL, { primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.KEY_S) }), 'Preferences: Open Keyboard Shortcuts', category);
registry.registerWorkbenchAction(new SyncActionDescriptor(OpenGlobalKeybindingsFileAction, OpenGlobalKeybindingsFileAction.ID, OpenGlobalKeybindingsFileAction.LABEL, { primary: null }), 'Preferences: Open Keyboard Shortcuts File', category);
registry.registerWorkbenchAction(new SyncActionDescriptor(ConfigureLanguageBasedSettingsAction, ConfigureLanguageBasedSettingsAction.ID, ConfigureLanguageBasedSettingsAction.LABEL), 'Preferences: Configure Language Specific Settings...', category);
......
......@@ -10,7 +10,8 @@ import URI from 'vs/base/common/uri';
import { Action } from 'vs/base/common/actions';
import { IModeService } from 'vs/editor/common/services/modeService';
import { IQuickOpenService, IPickOpenEntry, IFilePickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen';
import { IPreferencesService } from 'vs/workbench/parts/preferences/common/preferences';
import { IPreferencesService, getSettingsTargetName } from 'vs/workbench/parts/preferences/common/preferences';
import { IWorkspaceContextService } from "vs/platform/workspace/common/workspace";
export class OpenGlobalSettingsAction extends Action {
......@@ -74,9 +75,11 @@ export class OpenWorkspaceSettingsAction extends Action {
constructor(
id: string,
label: string,
@IPreferencesService private preferencesService: IPreferencesService
@IPreferencesService private preferencesService: IPreferencesService,
@IWorkspaceContextService private workspaceContextService: IWorkspaceContextService
) {
super(id, label);
this.enabled = this.workspaceContextService.hasWorkspace();
}
public run(event?: any): TPromise<any> {
......@@ -84,6 +87,41 @@ export class OpenWorkspaceSettingsAction extends Action {
}
}
export class OpenFolderSettingsAction extends Action {
public static ID = 'workbench.action.openFolderSettings';
public static LABEL = nls.localize('openFolderSettings', "Open Folder Settings");
constructor(
id: string,
label: string,
@IPreferencesService private preferencesService: IPreferencesService,
@IWorkspaceContextService private workspaceContextService: IWorkspaceContextService,
@IQuickOpenService private quickOpenService: IQuickOpenService
) {
super(id, label);
this.enabled = this.workspaceContextService.hasMultiFolderWorkspace();
}
public run(): TPromise<any> {
const picks: IPickOpenEntry[] = this.workspaceContextService.getWorkspace().roots.map((root, index) => {
return <IPickOpenEntry>{
label: getSettingsTargetName(root, this.workspaceContextService),
id: `${index}`
};
});
return this.quickOpenService.pick(picks, { placeHolder: nls.localize('pickFolder', "Select Folder") })
.then(pick => {
if (pick) {
return this.preferencesService.openSettings(this.workspaceContextService.getWorkspace().roots[parseInt(pick.id)]);
}
return undefined;
});
}
}
export class ConfigureLanguageBasedSettingsAction extends Action {
public static ID = 'workbench.action.configureLanguageBasedSettings';
......
......@@ -144,8 +144,8 @@ export class PreferencesService extends Disposable implements IPreferencesServic
return TPromise.wrap<IPreferencesEditorModel<any>>(null);
}
openSettings(): TPromise<IEditor> {
return this.doOpenSettings(ConfigurationTarget.USER, false);
openSettings(target: ConfigurationTarget | URI): TPromise<IEditor> {
return this.doOpenSettings(target);
}
openGlobalSettings(): TPromise<IEditor> {
......@@ -175,7 +175,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
});
});
} else {
this.openSettings();
this.openSettings(target);
return undefined;
}
}
......@@ -212,8 +212,8 @@ export class PreferencesService extends Disposable implements IPreferencesServic
});
}
private doOpenSettings(configurationTarget: ConfigurationTarget, checkToOpenDefaultSettings: boolean = true): TPromise<IEditor> {
const openDefaultSettings = !checkToOpenDefaultSettings || !!this.configurationService.getConfiguration<IWorkbenchSettingsConfiguration>().workbench.settings.openDefaultSettings;
private doOpenSettings(configurationTarget: ConfigurationTarget | URI): TPromise<IEditor> {
const openDefaultSettings = !!this.configurationService.getConfiguration<IWorkbenchSettingsConfiguration>().workbench.settings.openDefaultSettings;
return this.getOrCreateEditableSettingsEditorInput(configurationTarget)
.then(editableSettingsEditorInput => {
if (openDefaultSettings) {
......
......@@ -75,7 +75,7 @@ export interface IPreferencesService {
createPreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
openSettings(): TPromise<IEditor>;
openSettings(target: ConfigurationTarget | URI): TPromise<IEditor>;
switchSettings(target: URI | ConfigurationTarget): TPromise<void>;
openGlobalSettings(): TPromise<IEditor>;
openWorkspaceSettings(): TPromise<IEditor>;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册