提交 78ae98cc 编写于 作者: J Joao Moreno

tree.renderIndentGuides always

上级 491c6a8c
......@@ -195,9 +195,15 @@ interface ITreeListTemplateData<T> {
readonly templateData: T;
}
export enum RenderIndentGuides {
None = 'none',
OnHover = 'onHover',
Always = 'always'
}
interface ITreeRendererOptions {
readonly indent?: number;
readonly renderIndentGuides?: boolean;
readonly renderIndentGuides?: RenderIndentGuides;
}
interface IRenderData<TTemplateData> {
......@@ -236,7 +242,7 @@ class TreeRenderer<T, TFilterData, TTemplateData> implements IListRenderer<ITree
private renderedNodes = new Map<ITreeNode<T, TFilterData>, IRenderData<TTemplateData>>();
private indent: number = TreeRenderer.DefaultIndent;
private _renderIndentGuides = false;
private _renderIndentGuides: RenderIndentGuides = RenderIndentGuides.None;
private renderedIndentGuides = new SetMap<ITreeNode<T, TFilterData>, SVGLineElement>();
private activeParentNodes = new Set<ITreeNode<T, TFilterData>>();
private indentGuidesDisposable: IDisposable = Disposable.None;
......@@ -265,7 +271,7 @@ class TreeRenderer<T, TFilterData, TTemplateData> implements IListRenderer<ITree
}
if (typeof options.renderIndentGuides !== 'undefined') {
const renderIndentGuides = !!options.renderIndentGuides;
const renderIndentGuides = options.renderIndentGuides;
if (renderIndentGuides !== this._renderIndentGuides) {
this._renderIndentGuides = renderIndentGuides;
......@@ -366,7 +372,7 @@ class TreeRenderer<T, TFilterData, TTemplateData> implements IListRenderer<ITree
}
private renderIndentGuides(target: ITreeNode<T, TFilterData>, templateData: ITreeListTemplateData<TTemplateData>, height: number): void {
if (!this._renderIndentGuides) {
if (this._renderIndentGuides === RenderIndentGuides.None) {
clearNode(templateData.indent);
return;
}
......@@ -408,7 +414,7 @@ class TreeRenderer<T, TFilterData, TTemplateData> implements IListRenderer<ITree
}
private _onDidChangeActiveNodes(nodes: ITreeNode<T, TFilterData>[]): void {
if (!this._renderIndentGuides) {
if (this._renderIndentGuides === RenderIndentGuides.None) {
return;
}
......@@ -1237,6 +1243,7 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
}
this.styleElement = createStyleSheet(this.view.getHTMLElement());
toggleClass(this.getHTMLElement(), 'always', this._options.renderIndentGuides === RenderIndentGuides.Always);
}
updateOptions(optionsUpdate: IAbstractTreeOptionsUpdate = {}): void {
......@@ -1256,6 +1263,8 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
}
this._onDidUpdateOptions.fire(this._options);
toggleClass(this.getHTMLElement(), 'always', this._options.renderIndentGuides === RenderIndentGuides.Always);
}
get options(): IAbstractTreeOptions<T, TFilterData> {
......@@ -1341,7 +1350,7 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
const content: string[] = [];
if (styles.treeIndentGuidesStroke) {
content.push(`.monaco-list${suffix}:hover .monaco-tl-indent > svg > line { stroke: ${styles.treeIndentGuidesStroke.transparent(0.4)}; }`);
content.push(`.monaco-list${suffix}:hover .monaco-tl-indent > svg > line, .monaco-list${suffix}.always .monaco-tl-indent > svg > line { stroke: ${styles.treeIndentGuidesStroke.transparent(0.4)}; }`);
content.push(`.monaco-list${suffix} .monaco-tl-indent > svg > line.active { stroke: ${styles.treeIndentGuidesStroke}; }`);
}
......
......@@ -29,7 +29,7 @@ import { ObjectTree, IObjectTreeOptions } from 'vs/base/browser/ui/tree/objectTr
import { ITreeEvent, ITreeRenderer, IAsyncDataSource, IDataSource, ITreeMouseEvent } from 'vs/base/browser/ui/tree/tree';
import { AsyncDataTree, IAsyncDataTreeOptions } from 'vs/base/browser/ui/tree/asyncDataTree';
import { DataTree, IDataTreeOptions } from 'vs/base/browser/ui/tree/dataTree';
import { IKeyboardNavigationEventFilter, IAbstractTreeOptions } from 'vs/base/browser/ui/tree/abstractTree';
import { IKeyboardNavigationEventFilter, IAbstractTreeOptions, RenderIndentGuides } from 'vs/base/browser/ui/tree/abstractTree';
import { IAccessibilityService, AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility';
export type ListWidget = List<any> | PagedList<any> | ITree | ObjectTree<any, any> | DataTree<any, any, any> | AsyncDataTree<any, any, any>;
......@@ -898,7 +898,7 @@ function workbenchTreeDataPreamble<T, TFilterData>(
...computeStyles(themeService.getTheme(), defaultListStyles),
...workbenchListOptions,
indent: configurationService.getValue<number>(treeIndentKey),
renderIndentGuides: configurationService.getValue<boolean>(treeRenderIndentGuidesKey),
renderIndentGuides: configurationService.getValue<RenderIndentGuides>(treeRenderIndentGuidesKey),
automaticKeyboardNavigation: getAutomaticKeyboardNavigation(),
simpleKeyboardNavigation: keyboardNavigation === 'simple',
filterOnType: keyboardNavigation === 'filter',
......@@ -980,7 +980,7 @@ class WorkbenchTreeInternals<TInput, T, TFilterData> {
tree.updateOptions({ indent });
}
if (e.affectsConfiguration(treeRenderIndentGuidesKey)) {
const renderIndentGuides = configurationService.getValue<boolean>(treeRenderIndentGuidesKey);
const renderIndentGuides = configurationService.getValue<RenderIndentGuides>(treeRenderIndentGuidesKey);
tree.updateOptions({ renderIndentGuides });
}
if (e.affectsConfiguration(keyboardNavigationSettingKey)) {
......@@ -1060,9 +1060,10 @@ configurationRegistry.registerConfiguration({
'description': localize('tree indent setting', "Controls tree indentation in pixels.")
},
[treeRenderIndentGuidesKey]: {
type: 'boolean',
default: false,
'description': localize('render tree indent guides', "Controls whether the tree should render indent guides.")
type: 'string',
enum: ['none', 'onHover', 'always'],
default: 'none',
description: localize('render tree indent guides', "Controls whether the tree should render indent guides.")
},
[keyboardNavigationSettingKey]: {
'type': 'string',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册