From 13cd8ca47722573b6067965cdc3ef3582dcf27e2 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 25 Jul 2017 20:02:27 +0530 Subject: [PATCH] Fix #31037 --- .../preferences/browser/media/preferences.css | 2 -- .../browser/preferencesRenderers.ts | 27 ++++++++++++++----- .../preferences/browser/preferencesService.ts | 19 +++---------- .../preferences/browser/preferencesWidgets.ts | 10 ++++++- .../preferences/common/preferencesModels.ts | 2 +- 5 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/media/preferences.css b/src/vs/workbench/parts/preferences/browser/media/preferences.css index eee39c73482..fb63ef3b79d 100644 --- a/src/vs/workbench/parts/preferences/browser/media/preferences.css +++ b/src/vs/workbench/parts/preferences/browser/media/preferences.css @@ -107,7 +107,6 @@ } .monaco-editor .settings-header-widget .title-container { - padding-left: 12px; display: flex; } @@ -128,7 +127,6 @@ } .monaco-editor .settings-header-widget .title-container .message { - padding-left: 12px; white-space: nowrap; } diff --git a/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts b/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts index 0756292a4a2..a274ede5bf9 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts @@ -82,6 +82,12 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend this.editSettingActionRenderer = this._register(this.instantiationService.createInstance(EditSettingRenderer, this.editor, this.preferencesModel, this.settingHighlighter)); this._register(this.editSettingActionRenderer.onUpdateSetting(({ key, value, source }) => this.updatePreference(key, value, source))); this._register(this.editor.getModel().onDidChangeContent(() => this.modelChangeDelayer.trigger(() => this.onModelChanged()))); + + this.createHeader(); + } + + protected createHeader(): void { + this._register(new SettingsHeaderWidget(this.editor, '')).setMessage(nls.localize('emptyUserSettingsHeader', "Place your settings here to overwrite the Default Settings.")); } public render(): void { @@ -178,6 +184,10 @@ export class WorkspaceSettingsRenderer extends UserSettingsRenderer implements I this.untrustedSettingRenderer = this._register(instantiationService.createInstance(UnsupportedWorkspaceSettingsRenderer, editor, preferencesModel)); } + protected createHeader(): void { + this._register(new SettingsHeaderWidget(this.editor, '')).setMessage(nls.localize('emptyWorkspaceSettingsHeader', "Place your settings here to overwrite the User Settings.")); + } + public render(): void { super.render(); this.untrustedSettingRenderer.render(); @@ -200,6 +210,10 @@ export class FolderSettingsRenderer extends UserSettingsRenderer implements IPre this.unsupportedWorkbenchSettingsRenderer = this._register(instantiationService.createInstance(UnsupportedWorkbenchSettingsRenderer, editor, preferencesModel)); } + protected createHeader(): void { + this._register(new SettingsHeaderWidget(this.editor, '')).setMessage(nls.localize('emptyFolderSettingsHeader', "Place your folder settings here to overwrite those from the Workspace Settings.")); + } + public render(): void { super.render(); this.unsupportedWorkbenchSettingsRenderer.render(); @@ -210,7 +224,7 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR private _associatedPreferencesModel: IPreferencesEditorModel; private settingHighlighter: SettingHighlighter; - private settingsHeaderRenderer: SettingsHeaderRenderer; + private settingsHeaderRenderer: DefaultSettingsHeaderRenderer; private settingsGroupTitleRenderer: SettingsGroupTitleRenderer; private filteredMatchesRenderer: FilteredMatchesRenderer; private hiddenAreasRenderer: HiddenAreasRenderer; @@ -234,7 +248,7 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR ) { super(); this.settingHighlighter = this._register(instantiationService.createInstance(SettingHighlighter, editor, this._onFocusPreference, this._onClearFocusPreference)); - this.settingsHeaderRenderer = this._register(instantiationService.createInstance(SettingsHeaderRenderer, editor)); + this.settingsHeaderRenderer = this._register(instantiationService.createInstance(DefaultSettingsHeaderRenderer, editor, preferencesModel.configurationScope)); this.settingsGroupTitleRenderer = this._register(instantiationService.createInstance(SettingsGroupTitleRenderer, editor)); this.filteredMatchesRenderer = this._register(instantiationService.createInstance(FilteredMatchesRenderer, editor)); this.editSettingActionRenderer = this._register(instantiationService.createInstance(EditSettingRenderer, editor, preferencesModel, this.settingHighlighter)); @@ -369,18 +383,19 @@ export class StaticContentHidingRenderer extends Disposable implements HiddenAre } -class SettingsHeaderRenderer extends Disposable { +class DefaultSettingsHeaderRenderer extends Disposable { private settingsHeaderWidget: SettingsHeaderWidget; - constructor(private editor: ICodeEditor) { + constructor(private editor: ICodeEditor, scope: ConfigurationScope) { super(); - this.settingsHeaderWidget = this._register(new SettingsHeaderWidget(editor, nls.localize('defaultSettingsTitle', "Default Settings"))); + const title = scope === ConfigurationScope.RESOURCE ? nls.localize('defaultFolderSettingsTitle', "Default Folder Settings") : nls.localize('defaultSettingsTitle', "Default Settings"); + this.settingsHeaderWidget = this._register(new SettingsHeaderWidget(editor, title)); } public render(settingsGroups: ISettingsGroup[]) { if (settingsGroups.length) { - this.settingsHeaderWidget.setMessage(nls.localize('defaultSettingsMessage', "Place your settings in the file to the right to overwrite.")); + this.settingsHeaderWidget.setMessage(''); } else { this.settingsHeaderWidget.setMessage(nls.localize('noSettingsFound', "No Settings Found.")); } diff --git a/src/vs/workbench/parts/preferences/browser/preferencesService.ts b/src/vs/workbench/parts/preferences/browser/preferencesService.ts index 8fffe6ed7ce..e412ad5316a 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesService.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesService.ts @@ -51,6 +51,8 @@ interface IWorkbenchSettingsConfiguration { }; } +const emptyEditableSettingsContent = '{\n}'; + export class PreferencesService extends Disposable implements IPreferencesService { _serviceBrand: any; @@ -299,24 +301,12 @@ export class PreferencesService extends Disposable implements IPreferencesServic const model = reference.object.textEditorModel; const settingsContent = WorkspaceConfigModel.getSettingsContentFromConfigContent(model.getValue()); reference.dispose(); - return TPromise.as(settingsContent ? settingsContent : this.getEmptyEditableSettingsContent(ConfigurationTarget.WORKSPACE)); + return TPromise.as(settingsContent ? settingsContent : emptyEditableSettingsContent); }); } return TPromise.as(null); } - private getEmptyEditableSettingsContent(target: ConfigurationTarget): string { - if (target === ConfigurationTarget.USER) { - const emptySettingsHeader = nls.localize('emptySettingsHeader', "Place your settings in this file to overwrite the default settings"); - return '// ' + emptySettingsHeader + '\n{\n}'; - } - return [ - '// ' + nls.localize('emptySettingsHeader1', "Place your settings in this file to overwrite default and user settings."), - '{', - '}' - ].join('\n'); - } - private getEditableSettingsURI(configurationTarget: ConfigurationTarget, resource?: URI): URI { switch (configurationTarget) { case ConfigurationTarget.USER: @@ -345,8 +335,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic if (this.contextService.hasMultiFolderWorkspace() && target === ConfigurationTarget.WORKSPACE) { return TPromise.as(null); } - const editableSettingsEmptyContent = this.getEmptyEditableSettingsContent(target); - return this.createIfNotExists(resource, editableSettingsEmptyContent).then(() => { }); + return this.createIfNotExists(resource, emptyEditableSettingsContent).then(() => { }); } private createIfNotExists(resource: URI, contents: string): TPromise { diff --git a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts index bce0560ebaa..26e0aa5012a 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts @@ -66,8 +66,13 @@ export class SettingsHeaderWidget extends Widget implements IViewZone { this._domNode = DOM.$('.settings-header-widget'); this.titleContainer = DOM.append(this._domNode, DOM.$('.title-container')); - DOM.append(this.titleContainer, DOM.$('.title')).textContent = this.title; + if (this.title) { + DOM.append(this.titleContainer, DOM.$('.title')).textContent = this.title; + } this.messageElement = DOM.append(this.titleContainer, DOM.$('.message')); + if (this.title) { + this.messageElement.style.paddingLeft = '12px'; + } this.editor.changeViewZones(accessor => { this.id = accessor.addZone(this); @@ -82,6 +87,9 @@ export class SettingsHeaderWidget extends Widget implements IViewZone { private layout(): void { const configuration = this.editor.getConfiguration(); this.titleContainer.style.fontSize = configuration.fontInfo.fontSize + 'px'; + if (!configuration.contribInfo.folding) { + this.titleContainer.style.paddingLeft = '12px'; + } } public dispose() { diff --git a/src/vs/workbench/parts/preferences/common/preferencesModels.ts b/src/vs/workbench/parts/preferences/common/preferencesModels.ts index 785707f7093..4cc3705f767 100644 --- a/src/vs/workbench/parts/preferences/common/preferencesModels.ts +++ b/src/vs/workbench/parts/preferences/common/preferencesModels.ts @@ -598,7 +598,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements private _content: string; private _contentByLines: string[]; - constructor(private _uri: URI, private _mostCommonlyUsedSettingsKeys: string[], private configurationScope: ConfigurationScope) { + constructor(private _uri: URI, private _mostCommonlyUsedSettingsKeys: string[], readonly configurationScope: ConfigurationScope) { super(); }