From 07e4368720ea404a45b64c63e824bf42864206a3 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 28 Nov 2018 12:26:36 +0100 Subject: [PATCH] data tree: use proper loading --- src/vs/base/browser/ui/tree/abstractTree.ts | 12 +++---- src/vs/base/browser/ui/tree/dataTree.ts | 7 ++--- .../browser/ui/tree/media/loading-dark.svg | 31 +++++++++++++++++++ .../base/browser/ui/tree/media/loading-hc.svg | 31 +++++++++++++++++++ src/vs/base/browser/ui/tree/media/loading.svg | 31 +++++++++++++++++++ src/vs/base/browser/ui/tree/media/tree.css | 12 +++++++ src/vs/base/browser/ui/tree/tree.ts | 2 +- 7 files changed, 112 insertions(+), 14 deletions(-) create mode 100644 src/vs/base/browser/ui/tree/media/loading-dark.svg create mode 100644 src/vs/base/browser/ui/tree/media/loading-hc.svg create mode 100644 src/vs/base/browser/ui/tree/media/loading.svg diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index 3481338b38d..c9b9e67106c 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -151,16 +151,12 @@ class TreeRenderer implements IListRenderer, twistieElement: HTMLElement) { - if (this.renderer.renderTwistie && this.renderer.renderTwistie(node.element, twistieElement)) { - return; + if (this.renderer.renderTwistie) { + this.renderer.renderTwistie(node.element, twistieElement); } - TreeRenderer.renderDefaultTwistie(node, twistieElement); - } - - private static renderDefaultTwistie(node: ITreeNode, twistie: HTMLElement): void { - toggleClass(twistie, 'collapsible', node.collapsible); - toggleClass(twistie, 'collapsed', node.collapsed); + toggleClass(twistieElement, 'collapsible', node.collapsible); + toggleClass(twistieElement, 'collapsed', node.collapsed); } dispose(): void { diff --git a/src/vs/base/browser/ui/tree/dataTree.ts b/src/vs/base/browser/ui/tree/dataTree.ts index 368ecfef0c9..01ab3b8be26 100644 --- a/src/vs/base/browser/ui/tree/dataTree.ts +++ b/src/vs/base/browser/ui/tree/dataTree.ts @@ -12,6 +12,7 @@ import { Emitter, Event, mapEvent } from 'vs/base/common/event'; import { timeout, always } from 'vs/base/common/async'; import { ISequence } from 'vs/base/common/iterator'; import { IListStyles } from 'vs/base/browser/ui/list/listWidget'; +import { toggleClass } from 'vs/base/browser/dom'; export interface IDataSource> { hasChildren(element: T | null): boolean; @@ -72,11 +73,7 @@ class DataTreeRenderer implements ITreeRenderer, twistieElement: HTMLElement): boolean { - if (element.state === DataTreeNodeState.Slow) { - twistieElement.innerText = '🤨'; - return true; - } - + toggleClass(twistieElement, 'loading', element.state === DataTreeNodeState.Slow); return false; } diff --git a/src/vs/base/browser/ui/tree/media/loading-dark.svg b/src/vs/base/browser/ui/tree/media/loading-dark.svg new file mode 100644 index 00000000000..7dc1ebd8cf0 --- /dev/null +++ b/src/vs/base/browser/ui/tree/media/loading-dark.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + diff --git a/src/vs/base/browser/ui/tree/media/loading-hc.svg b/src/vs/base/browser/ui/tree/media/loading-hc.svg new file mode 100644 index 00000000000..c3633c0ddab --- /dev/null +++ b/src/vs/base/browser/ui/tree/media/loading-hc.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + diff --git a/src/vs/base/browser/ui/tree/media/loading.svg b/src/vs/base/browser/ui/tree/media/loading.svg new file mode 100644 index 00000000000..e762f06d5e6 --- /dev/null +++ b/src/vs/base/browser/ui/tree/media/loading.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + diff --git a/src/vs/base/browser/ui/tree/media/tree.css b/src/vs/base/browser/ui/tree/media/tree.css index 62a7ea676a4..5ba7214e866 100644 --- a/src/vs/base/browser/ui/tree/media/tree.css +++ b/src/vs/base/browser/ui/tree/media/tree.css @@ -51,4 +51,16 @@ .hc-black .monaco-tl-twistie.collapsible.collapsed { background-image: url("collapsed-hc.svg"); +} + +.monaco-tl-twistie.loading { + background-image: url("loading.svg"); +} + +.vs-dark .monaco-tl-twistie.loading { + background-image: url("loading-dark.svg"); +} + +.hc-black .monaco-tl-twistie.loading { + background-image: url("loading-hc.svg"); } \ No newline at end of file diff --git a/src/vs/base/browser/ui/tree/tree.ts b/src/vs/base/browser/ui/tree/tree.ts index 719e40d3c7e..4b4a50df0d9 100644 --- a/src/vs/base/browser/ui/tree/tree.ts +++ b/src/vs/base/browser/ui/tree/tree.ts @@ -107,7 +107,7 @@ export interface ITreeModel { } export interface ITreeRenderer extends IListRenderer, TTemplateData> { - renderTwistie?(element: T, twistieElement: HTMLElement): boolean; + renderTwistie?(element: T, twistieElement: HTMLElement): void; onDidChangeTwistieState?: Event; } -- GitLab