提交 b31c338c 编写于 作者: R Rob Lourens

Settings editor - add setting to configure TOC behavior during search

上级 b1361059
......@@ -306,6 +306,12 @@ configurationRegistry.registerConfiguration({
'type': 'boolean',
'description': nls.localize('enableNaturalLanguageSettingsSearch', "Controls whether to enable the natural language search mode for settings."),
'default': true
},
'workbench.settings.settingsSearchTocBehavior': {
'type': 'string',
'enum': ['hide', 'filter', 'show'],
'description': nls.localize('settingsSearchTocBehavior', "Controls the behavior of the settings editor TOC while searching."),
'default': 'hide'
}
}
});
......
......@@ -101,7 +101,6 @@
.settings-editor > .settings-body {
display: flex;
margin: auto;
margin-top: 5px;
max-width: 1000px;
}
......@@ -115,7 +114,7 @@
}
.search-mode .settings-toc-container {
/* display: none; */
display: none;
}
.settings-editor > .settings-body .settings-toc-container .monaco-tree-row .settings-toc-entry {
......
......@@ -468,7 +468,10 @@ export class SettingsEditor2 extends BaseEditor {
}
private toggleSearchMode(): void {
DOM.toggleClass(this.rootElement, 'search-mode', !!this.searchResultModel);
DOM.removeClass(this.rootElement, 'search-mode');
if (this.configurationService.getValue('workbench.settings.settingsSearchTocBehavior') === 'hide') {
DOM.toggleClass(this.rootElement, 'search-mode', !!this.searchResultModel);
}
}
private onConfigUpdate(): TPromise<void> {
......
......@@ -8,10 +8,12 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { IDataSource, IRenderer, ITree } from 'vs/base/parts/tree/browser/tree';
import { SearchResultModel, SettingsTreeElement, SettingsTreeGroupElement, SettingsTreeSettingElement } from 'vs/workbench/parts/preferences/browser/settingsTree';
import { ISetting } from 'vs/workbench/services/preferences/common/preferences';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
const $ = DOM.$;
export class TOCTreeModel {
private _currentSearchModel: SearchResultModel;
private _settingsTreeRoot: SettingsTreeGroupElement;
......@@ -67,6 +69,11 @@ export class TOCTreeModel {
export type TOCTreeElement = SettingsTreeGroupElement | TOCTreeModel;
export class TOCDataSource implements IDataSource {
constructor(
@IConfigurationService private configService: IConfigurationService
) {
}
getId(tree: ITree, element: SettingsTreeGroupElement): string {
return element.id;
}
......@@ -77,7 +84,18 @@ export class TOCDataSource implements IDataSource {
}
getChildren(tree: ITree, element: TOCTreeElement): TPromise<SettingsTreeElement[], any> {
return TPromise.as(<SettingsTreeElement[]>element.children);
return TPromise.as(this._getChildren(element));
}
private _getChildren(element: TOCTreeElement): SettingsTreeElement[] {
if (this.configService.getValue('workbench.settings.settingsSearchTocBehavior') === 'filter') {
const children = element.children as SettingsTreeElement[]; // ????
return children.filter(group => {
return (<any>group).count !== 0;
});
}
return element.children;
}
getParent(tree: ITree, element: TOCTreeElement): TPromise<any, any> {
......@@ -96,6 +114,11 @@ interface ITOCEntryTemplate {
}
export class TOCRenderer implements IRenderer {
constructor(
@IConfigurationService private configService: IConfigurationService
) {
}
getHeight(tree: ITree, element: SettingsTreeElement): number {
return 22;
}
......@@ -115,7 +138,10 @@ export class TOCRenderer implements IRenderer {
`${element.label} (${(<any>element).count})` :
element.label;
DOM.toggleClass(template.element, 'no-results', (<any>element).count === 0);
if (this.configService.getValue('workbench.settings.settingsSearchTocBehavior') === 'show') {
DOM.toggleClass(template.element, 'no-results', (<any>element).count === 0);
}
template.element.textContent = label;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册