From b754888622cdb8d225d353e79554d25ceae0b819 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 14 Jun 2018 11:26:06 -0700 Subject: [PATCH] Settings editor - fix search results --- .../browser/media/settingsEditor2.css | 5 ++ .../preferences/browser/settingsEditor2.ts | 6 +- .../parts/preferences/browser/settingsTree.ts | 67 +++++++++++-------- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css b/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css index ad311e185dc..996becb45fa 100644 --- a/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css +++ b/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css @@ -126,6 +126,11 @@ width: 200px; } +.settings-editor > .settings-body .settings-toc-container .monaco-tree-row .settings-toc-entry { + overflow: hidden; + text-overflow: ellipsis; +} + .settings-editor > .settings-body .settings-tree-container { flex: 1; border-spacing: 0; diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index 943b6e1f350..c4826ba9c07 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -239,8 +239,10 @@ export class SettingsEditor2 extends BaseEditor { }); this._register(this.tocTree.onDidChangeSelection(e => { - const element = this.settingsTreeModel.getElementById(e.selection[0] && e.selection[0].id); - this.settingsTree.reveal(element, 0); + if (this.settingsTreeModel) { + const element = this.settingsTreeModel.getElementById(e.selection[0] && e.selection[0].id); + this.settingsTree.reveal(element, 0); + } })); } diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 0cff11828d8..51ff7006be0 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -47,7 +47,7 @@ registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => { export abstract class SettingsTreeElement { id: string; - parent: SettingsTreeElement; + parent: any; // SearchResultModel or group element... TODO search should be more similar to the normal case } export class SettingsTreeGroupElement extends SettingsTreeElement { @@ -108,38 +108,43 @@ export class SettingsTreeModel { } private createSettingsTreeSettingElement(setting: ISetting, parent: SettingsTreeGroupElement): SettingsTreeSettingElement { - const element = new SettingsTreeSettingElement(); - element.id = setting.key; - element.parent = parent; + const element = createSettingsTreeSettingElement(setting, parent, this.viewState.settingsTarget, this.configurationService); + this._treeElementsById.set(element.id, element); + return element; + } +} - const { isConfigured, inspected, targetSelector } = inspectSetting(setting.key, this.viewState.settingsTarget, this.configurationService); +function createSettingsTreeSettingElement(setting: ISetting, parent: any, settingsTarget: SettingsTarget, configurationService: IConfigurationService): SettingsTreeSettingElement { + const element = new SettingsTreeSettingElement(); + element.id = setting.key; + element.parent = parent; - const displayValue = isConfigured ? inspected[targetSelector] : inspected.default; - const overriddenScopeList = []; - if (targetSelector === 'user' && typeof inspected.workspace !== 'undefined') { - overriddenScopeList.push(localize('workspace', "Workspace")); - } + const { isConfigured, inspected, targetSelector } = inspectSetting(setting.key, settingsTarget, configurationService); - if (targetSelector === 'workspace' && typeof inspected.user !== 'undefined') { - overriddenScopeList.push(localize('user', "User")); - } + const displayValue = isConfigured ? inspected[targetSelector] : inspected.default; + const overriddenScopeList = []; + if (targetSelector === 'user' && typeof inspected.workspace !== 'undefined') { + overriddenScopeList.push(localize('workspace', "Workspace")); + } - const displayKeyFormat = settingKeyToDisplayFormat(setting.key, parent.id); - element.setting = setting; - element.displayLabel = displayKeyFormat.label; - element.displayCategory = displayKeyFormat.category; - element.isExpanded = false; + if (targetSelector === 'workspace' && typeof inspected.user !== 'undefined') { + overriddenScopeList.push(localize('user', "User")); + } - element.value = displayValue; - element.isConfigured = isConfigured; - element.overriddenScopeList = overriddenScopeList; - element.description = setting.description.join('\n'); - element.enum = setting.enum; - element.valueType = setting.type; + const displayKeyFormat = settingKeyToDisplayFormat(setting.key, parent.id); + element.setting = setting; + element.displayLabel = displayKeyFormat.label; + element.displayCategory = displayKeyFormat.category; + element.isExpanded = false; - this._treeElementsById.set(element.id, element); - return element; - } + element.value = displayValue; + element.isConfigured = isConfigured; + element.overriddenScopeList = overriddenScopeList; + element.description = setting.description.join('\n'); + element.enum = setting.enum; + element.valueType = setting.type; + + return element; } function inspectSetting(key: string, target: SettingsTarget, configurationService: IConfigurationService): { isConfigured: boolean, inspected: any, targetSelector: string } { @@ -214,6 +219,12 @@ function getFlatSettings(settingsGroups: ISettingsGroup[]) { export class SettingsDataSource implements IDataSource { + constructor( + private viewState: ISettingsEditorViewState, + @IConfigurationService private configurationService: IConfigurationService + ) { + } + getId(tree: ITree, element: SettingsTreeElement): string { return element.id; } @@ -232,7 +243,7 @@ export class SettingsDataSource implements IDataSource { private getSearchResultChildren(searchResult: SearchResultModel): SettingsTreeSettingElement[] { return searchResult.getFlatSettings() - .map(s => this.getSettingElement(s, searchResult, 'searchResult')); + .map(s => createSettingsTreeSettingElement(s, searchResult, this.viewState.settingsTarget, this.configurationService)); } getChildren(tree: ITree, element: SettingsTreeElement): TPromise { -- GitLab