From fb697729c02f87c57c909c1f4f7a4b4f25c3ff59 Mon Sep 17 00:00:00 2001 From: Anthony Dresser Date: Wed, 3 Apr 2019 11:10:48 -0700 Subject: [PATCH] Data Explorer Icons (#4806) * inital icon support * add necessary classes for icons * initialize icon to blank string --- .../common/objectExplorerViewTreeShim.ts | 18 ++++++++++++++++-- .../browser/parts/views/customView.ts | 5 ++++- src/sql/workbench/common/views.ts | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/sql/parts/objectExplorer/common/objectExplorerViewTreeShim.ts b/src/sql/parts/objectExplorer/common/objectExplorerViewTreeShim.ts index 9de15b9af4..8f12d10d8f 100644 --- a/src/sql/parts/objectExplorer/common/objectExplorerViewTreeShim.ts +++ b/src/sql/parts/objectExplorer/common/objectExplorerViewTreeShim.ts @@ -119,7 +119,20 @@ export class OEShimService extends Disposable implements IOEShimService { private treeNodeToITreeItem(viewId: string, node: TreeNode, parentNode: ITreeItem): ITreeItem { let handle = generateUuid(); let nodePath = node.nodePath; - let newTreeItem = { + let icon: string = ''; + if (node.iconType) { + icon = (typeof node.iconType === 'string') ? node.iconType : node.iconType.id; + } else { + icon = node.nodeTypeId; + if (node.nodeStatus) { + icon = node.nodeTypeId + '_' + node.nodeStatus; + } + if (node.nodeSubType) { + icon = node.nodeTypeId + '_' + node.nodeSubType; + } + } + icon = icon.toLowerCase(); + let newTreeItem: ITreeItem = { parentHandle: node.parent.id, handle, collapsibleState: node.isAlwaysLeaf ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Collapsed, @@ -129,7 +142,8 @@ export class OEShimService extends Disposable implements IOEShimService { childProvider: node.childProvider || parentNode.childProvider, providerHandle: parentNode.childProvider, payload: node.payload || parentNode.payload, - contextValue: node.nodeTypeId + contextValue: node.nodeTypeId, + sqlIcon: icon }; this.nodeHandleMap.set(generateNodeMapKey(viewId, newTreeItem), nodePath); return newTreeItem; diff --git a/src/sql/workbench/browser/parts/views/customView.ts b/src/sql/workbench/browser/parts/views/customView.ts index 3f6f09adf1..a11f6eab0f 100644 --- a/src/sql/workbench/browser/parts/views/customView.ts +++ b/src/sql/workbench/browser/parts/views/customView.ts @@ -639,6 +639,7 @@ class TreeRenderer implements IRenderer { const icon = this.themeService.getTheme().type === LIGHT ? node.icon : node.iconDark; const iconUrl = icon ? URI.revive(icon) : null; const title = node.tooltip ? node.tooltip : resource ? void 0 : label; + const sqlIcon = node.sqlIcon; // reset templateData.resourceLabel.clear(); @@ -652,7 +653,9 @@ class TreeRenderer implements IRenderer { } templateData.icon.style.backgroundImage = iconUrl ? `url('${iconUrl.toString(true)}')` : ''; - DOM.toggleClass(templateData.icon, 'custom-view-tree-node-item-icon', !!iconUrl); + DOM.toggleClass(templateData.icon, sqlIcon, !!sqlIcon); + DOM.toggleClass(templateData.icon, 'icon', !!sqlIcon); + DOM.toggleClass(templateData.icon, 'custom-view-tree-node-item-icon', !!iconUrl || !!sqlIcon); templateData.actionBar.context = ({ $treeViewId: this.treeViewId, $treeItemHandle: node.handle }); templateData.actionBar.push(this.menus.getResourceActions(node), { icon: true, label: false }); diff --git a/src/sql/workbench/common/views.ts b/src/sql/workbench/common/views.ts index 866db50485..fea7fac3f8 100644 --- a/src/sql/workbench/common/views.ts +++ b/src/sql/workbench/common/views.ts @@ -21,6 +21,7 @@ export interface ITreeItem extends vsITreeItem { providerHandle?: string; childProvider?: string; payload?: IConnectionProfile; // its possible we will want this to be more generic + sqlIcon?: string; } export interface ITreeView extends vsITreeView {