From 2b132f6b588682f2e0641e17360355a34ad0e04c Mon Sep 17 00:00:00 2001 From: Benjin Dubishar Date: Thu, 23 Jul 2020 11:52:54 -0700 Subject: [PATCH] Adding icons to Database Projects' tree view (#11488) * Add images * Splitting to light and dark mode icons * Hooks up icons to treeItems * updating package.json with new icon and vbump * move icon loader before tree view created --- .../images/dark/dataSource-sql.svg | 29 ++++++++++++ .../images/dark/dataSourceGroup.svg | 23 ++++++++++ .../images/dark/databaseProject.svg | 13 ++++++ .../images/dark/reference-database.svg | 24 ++++++++++ .../images/dark/referenceGroup.svg | 13 ++++++ .../images/extension.png | Bin 3338 -> 0 bytes .../images/light/dataSource-sql.svg | 10 ++++ .../images/light/dataSourceGroup.svg | 10 ++++ .../images/light/databaseProject.svg | 5 ++ .../images/light/reference-database.svg | 7 +++ .../images/light/referenceGroup.svg | 6 +++ .../images/sqlDatabaseProjects.png | Bin 0 -> 11048 bytes .../images/sqlDatabaseProjects.svg | 28 ++++++++++++ extensions/sql-database-projects/package.json | 4 +- .../src/common/iconHelper.ts | 43 ++++++++++++++++++ .../src/controllers/mainController.ts | 3 ++ .../src/models/project.ts | 2 +- .../src/models/tree/dataSourceTreeItem.ts | 15 +++--- .../models/tree/databaseReferencesTreeItem.ts | 32 +++++++++++-- .../src/models/tree/projectTreeItem.ts | 3 ++ 20 files changed, 256 insertions(+), 14 deletions(-) create mode 100644 extensions/sql-database-projects/images/dark/dataSource-sql.svg create mode 100644 extensions/sql-database-projects/images/dark/dataSourceGroup.svg create mode 100644 extensions/sql-database-projects/images/dark/databaseProject.svg create mode 100644 extensions/sql-database-projects/images/dark/reference-database.svg create mode 100644 extensions/sql-database-projects/images/dark/referenceGroup.svg delete mode 100644 extensions/sql-database-projects/images/extension.png create mode 100644 extensions/sql-database-projects/images/light/dataSource-sql.svg create mode 100644 extensions/sql-database-projects/images/light/dataSourceGroup.svg create mode 100644 extensions/sql-database-projects/images/light/databaseProject.svg create mode 100644 extensions/sql-database-projects/images/light/reference-database.svg create mode 100644 extensions/sql-database-projects/images/light/referenceGroup.svg create mode 100644 extensions/sql-database-projects/images/sqlDatabaseProjects.png create mode 100644 extensions/sql-database-projects/images/sqlDatabaseProjects.svg create mode 100644 extensions/sql-database-projects/src/common/iconHelper.ts diff --git a/extensions/sql-database-projects/images/dark/dataSource-sql.svg b/extensions/sql-database-projects/images/dark/dataSource-sql.svg new file mode 100644 index 0000000000..032eed74b3 --- /dev/null +++ b/extensions/sql-database-projects/images/dark/dataSource-sql.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/extensions/sql-database-projects/images/dark/dataSourceGroup.svg b/extensions/sql-database-projects/images/dark/dataSourceGroup.svg new file mode 100644 index 0000000000..9c624ad93c --- /dev/null +++ b/extensions/sql-database-projects/images/dark/dataSourceGroup.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/extensions/sql-database-projects/images/dark/databaseProject.svg b/extensions/sql-database-projects/images/dark/databaseProject.svg new file mode 100644 index 0000000000..a9f5ff6776 --- /dev/null +++ b/extensions/sql-database-projects/images/dark/databaseProject.svg @@ -0,0 +1,13 @@ + + + + + + + diff --git a/extensions/sql-database-projects/images/dark/reference-database.svg b/extensions/sql-database-projects/images/dark/reference-database.svg new file mode 100644 index 0000000000..c71cbdca4f --- /dev/null +++ b/extensions/sql-database-projects/images/dark/reference-database.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/extensions/sql-database-projects/images/dark/referenceGroup.svg b/extensions/sql-database-projects/images/dark/referenceGroup.svg new file mode 100644 index 0000000000..1029ca131e --- /dev/null +++ b/extensions/sql-database-projects/images/dark/referenceGroup.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/extensions/sql-database-projects/images/extension.png b/extensions/sql-database-projects/images/extension.png deleted file mode 100644 index c86d6d1e009f12f1ccb246db45303707052175e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3338 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 + ConnectDatabase + + + + + + + + diff --git a/extensions/sql-database-projects/images/light/dataSourceGroup.svg b/extensions/sql-database-projects/images/light/dataSourceGroup.svg new file mode 100644 index 0000000000..135bc13853 --- /dev/null +++ b/extensions/sql-database-projects/images/light/dataSourceGroup.svg @@ -0,0 +1,10 @@ + + Data_source_group + + + + + + + + diff --git a/extensions/sql-database-projects/images/light/databaseProject.svg b/extensions/sql-database-projects/images/light/databaseProject.svg new file mode 100644 index 0000000000..61f68894fd --- /dev/null +++ b/extensions/sql-database-projects/images/light/databaseProject.svg @@ -0,0 +1,5 @@ + + Project + + + diff --git a/extensions/sql-database-projects/images/light/reference-database.svg b/extensions/sql-database-projects/images/light/reference-database.svg new file mode 100644 index 0000000000..eacb53973b --- /dev/null +++ b/extensions/sql-database-projects/images/light/reference-database.svg @@ -0,0 +1,7 @@ + + Reference + + + + + diff --git a/extensions/sql-database-projects/images/light/referenceGroup.svg b/extensions/sql-database-projects/images/light/referenceGroup.svg new file mode 100644 index 0000000000..725710a02f --- /dev/null +++ b/extensions/sql-database-projects/images/light/referenceGroup.svg @@ -0,0 +1,6 @@ + + Reference + + + + diff --git a/extensions/sql-database-projects/images/sqlDatabaseProjects.png b/extensions/sql-database-projects/images/sqlDatabaseProjects.png new file mode 100644 index 0000000000000000000000000000000000000000..308755ed5e22b820a1a7de996ad0fb2c7b220536 GIT binary patch literal 11048 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 U`1kj}kF5Y%NhOI|F_V!017=YiBLDyZ literal 0 HcmV?d00001 diff --git a/extensions/sql-database-projects/images/sqlDatabaseProjects.svg b/extensions/sql-database-projects/images/sqlDatabaseProjects.svg new file mode 100644 index 0000000000..8c87dccff1 --- /dev/null +++ b/extensions/sql-database-projects/images/sqlDatabaseProjects.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/sql-database-projects/package.json b/extensions/sql-database-projects/package.json index c06e1a2a5e..8434fa08a0 100644 --- a/extensions/sql-database-projects/package.json +++ b/extensions/sql-database-projects/package.json @@ -2,7 +2,7 @@ "name": "sql-database-projects", "displayName": "SQL Database Projects", "description": "The SQL Database Projects extension for Azure Data Studio allows users to develop and publish database schemas.", - "version": "0.1.1", + "version": "0.1.2", "publisher": "Microsoft", "preview": true, "engines": { @@ -10,7 +10,7 @@ "azdata": ">=1.20.0" }, "license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt", - "icon": "images/extension.png", + "icon": "images/sqlDatabaseProjects.png", "aiKey": "AIF-37eefaf0-8022-4671-a3fb-64752724682e", "activationEvents": [ "onCommand:sqlDatabaseProjects.new", diff --git a/extensions/sql-database-projects/src/common/iconHelper.ts b/extensions/sql-database-projects/src/common/iconHelper.ts new file mode 100644 index 0000000000..900b688a04 --- /dev/null +++ b/extensions/sql-database-projects/src/common/iconHelper.ts @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; + +export interface IconPath { + dark: string; + light: string; +} + +export class IconPathHelper { + private static extensionContext: vscode.ExtensionContext; + public static databaseProject: IconPath; + + public static dataSourceGroup: IconPath; + public static dataSourceSql: IconPath; + + public static referenceGroup: IconPath; + public static referenceDatabase: IconPath; + + public static setExtensionContext(extensionContext: vscode.ExtensionContext) { + IconPathHelper.extensionContext = extensionContext; + + IconPathHelper.databaseProject = IconPathHelper.makeIcon('databaseProject'); + + IconPathHelper.dataSourceGroup = IconPathHelper.makeIcon('dataSourceGroup'); + IconPathHelper.dataSourceSql = IconPathHelper.makeIcon('dataSource-sql'); + + IconPathHelper.referenceGroup = IconPathHelper.makeIcon('referenceGroup'); + IconPathHelper.referenceDatabase = IconPathHelper.makeIcon('reference-database'); + } + + private static makeIcon(name: string) { + const folder = 'images'; + + return { + dark: IconPathHelper.extensionContext.asAbsolutePath(`${folder}/dark/${name}.svg`), + light: IconPathHelper.extensionContext.asAbsolutePath(`${folder}/light/${name}.svg`) + }; + } +} diff --git a/extensions/sql-database-projects/src/controllers/mainController.ts b/extensions/sql-database-projects/src/controllers/mainController.ts index 1f364828d9..935432012f 100644 --- a/extensions/sql-database-projects/src/controllers/mainController.ts +++ b/extensions/sql-database-projects/src/controllers/mainController.ts @@ -17,6 +17,7 @@ import { BaseProjectTreeItem } from '../models/tree/baseTreeItem'; import { NetCoreTool } from '../tools/netcoreTool'; import { Project } from '../models/project'; import { FileNode, FolderNode } from '../models/tree/fileFolderTreeItem'; +import { IconPathHelper } from '../common/iconHelper'; const SQL_DATABASE_PROJECTS_VIEW_ID = 'sqlDatabaseProjectsView'; @@ -72,6 +73,8 @@ export default class MainController implements vscode.Disposable { vscode.commands.registerCommand('sqlDatabaseProjects.delete', async (node: BaseProjectTreeItem) => { await this.projectsController.delete(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.exclude', async (node: FileNode | FolderNode) => { await this.projectsController.exclude(node); }); + IconPathHelper.setExtensionContext(this.extensionContext); + // init view const treeView = vscode.window.createTreeView(SQL_DATABASE_PROJECTS_VIEW_ID, { treeDataProvider: this.dbProjectTreeViewProvider }); this.dbProjectTreeViewProvider.setTreeView(treeView); diff --git a/extensions/sql-database-projects/src/models/project.ts b/extensions/sql-database-projects/src/models/project.ts index 6cee34d0e2..1a3e4f2949 100644 --- a/extensions/sql-database-projects/src/models/project.ts +++ b/extensions/sql-database-projects/src/models/project.ts @@ -568,7 +568,7 @@ export class ProjectEntry { /** * Represents a database reference entry in a project file */ -class DatabaseReferenceProjectEntry extends ProjectEntry { +export class DatabaseReferenceProjectEntry extends ProjectEntry { constructor(uri: Uri, public databaseLocation: DatabaseReferenceLocation, public name?: string) { super(uri, '', EntryType.DatabaseReference); } diff --git a/extensions/sql-database-projects/src/models/tree/dataSourceTreeItem.ts b/extensions/sql-database-projects/src/models/tree/dataSourceTreeItem.ts index c2ef862d8d..32da15ea40 100644 --- a/extensions/sql-database-projects/src/models/tree/dataSourceTreeItem.ts +++ b/extensions/sql-database-projects/src/models/tree/dataSourceTreeItem.ts @@ -10,6 +10,7 @@ import * as constants from '../../common/constants'; import { ProjectRootTreeItem } from './projectTreeItem'; import { DataSource } from '../dataSources/dataSources'; import { SqlConnectionDataSource } from '../dataSources/sqlConnectionStringSource'; +import { IconPathHelper } from '../../common/iconHelper'; /** * Folder for containing DataSource nodes in the tree @@ -34,9 +35,11 @@ export class DataSourcesTreeItem extends BaseProjectTreeItem { } public get treeItem(): vscode.TreeItem { - const dataSource = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Collapsed); - dataSource.contextValue = constants.DatabaseProjectItemType.dataSourceRoot; - return dataSource; + const dataSources = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Collapsed); + dataSources.contextValue = constants.DatabaseProjectItemType.dataSourceRoot; + dataSources.iconPath = IconPathHelper.dataSourceGroup; + + return dataSources; } } @@ -46,16 +49,14 @@ abstract class DataSourceTreeItem extends BaseProjectTreeItem { } * Tree item representing a SQL connection string data source */ export class SqlConnectionDataSourceTreeItem extends DataSourceTreeItem { - private dataSource: SqlConnectionDataSource; - - constructor(dataSource: SqlConnectionDataSource, dataSourcesNode: DataSourcesTreeItem) { + constructor(private dataSource: SqlConnectionDataSource, dataSourcesNode: DataSourcesTreeItem) { super(vscode.Uri.file(path.join(dataSourcesNode.uri.path, dataSource.name)), dataSourcesNode); - this.dataSource = dataSource; } public get treeItem(): vscode.TreeItem { let item = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Collapsed); item.label = `${this.dataSource.name} (${this.dataSource.typeFriendlyName})`; + item.iconPath = IconPathHelper.dataSourceSql; return item; } diff --git a/extensions/sql-database-projects/src/models/tree/databaseReferencesTreeItem.ts b/extensions/sql-database-projects/src/models/tree/databaseReferencesTreeItem.ts index a571274f49..9028276c62 100644 --- a/extensions/sql-database-projects/src/models/tree/databaseReferencesTreeItem.ts +++ b/extensions/sql-database-projects/src/models/tree/databaseReferencesTreeItem.ts @@ -6,14 +6,17 @@ import * as vscode from 'vscode'; import * as path from 'path'; import * as constants from '../../common/constants'; -import { BaseProjectTreeItem, MessageTreeItem } from './baseTreeItem'; + +import { BaseProjectTreeItem } from './baseTreeItem'; import { ProjectRootTreeItem } from './projectTreeItem'; +import { IconPathHelper } from '../../common/iconHelper'; +import { DatabaseReferenceProjectEntry } from '../../models/project'; /** * Folder for containing references nodes in the tree */ export class DatabaseReferencesTreeItem extends BaseProjectTreeItem { - private references: MessageTreeItem[] = []; + private references: DatabaseReferenceTreeItem[] = []; constructor(project: ProjectRootTreeItem) { super(vscode.Uri.file(path.join(project.uri.path, constants.databaseReferencesNodeName)), project); @@ -23,17 +26,38 @@ export class DatabaseReferencesTreeItem extends BaseProjectTreeItem { private construct() { for (const reference of (this.parent as ProjectRootTreeItem).project.databaseReferences) { - this.references.push(new MessageTreeItem(reference.databaseName)); + this.references.push(new DatabaseReferenceTreeItem(reference, this)); } } - public get children(): BaseProjectTreeItem[] { + public get children(): DatabaseReferenceTreeItem[] { return this.references; } public get treeItem(): vscode.TreeItem { const refFolderItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Collapsed); refFolderItem.contextValue = constants.DatabaseProjectItemType.referencesRoot; + refFolderItem.iconPath = IconPathHelper.referenceGroup; + return refFolderItem; } } + +export class DatabaseReferenceTreeItem extends BaseProjectTreeItem { + constructor(private reference: DatabaseReferenceProjectEntry, referencesTreeItem: DatabaseReferencesTreeItem) { + super(vscode.Uri.file(path.join(referencesTreeItem.uri.path, reference.databaseName)), referencesTreeItem); + } + + public get children(): BaseProjectTreeItem[] { + return []; + } + + public get treeItem(): vscode.TreeItem { + const refItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.None); + refItem.label = this.reference.databaseName; + refItem.contextValue = constants.DatabaseProjectItemType.reference; + refItem.iconPath = IconPathHelper.referenceDatabase; + + return refItem; + } +} diff --git a/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts b/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts index 804c0bedc8..7f126d7770 100644 --- a/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts +++ b/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts @@ -12,6 +12,7 @@ import { Project, ProjectEntry, EntryType } from '../project'; import * as utils from '../../common/utils'; import { DatabaseReferencesTreeItem } from './databaseReferencesTreeItem'; import { DatabaseProjectItemType, RelativeOuterPath } from '../../common/constants'; +import { IconPathHelper } from '../../common/iconHelper'; /** * TreeNode root that represents an entire project @@ -45,6 +46,8 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem { public get treeItem(): vscode.TreeItem { const projectItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Expanded); projectItem.contextValue = DatabaseProjectItemType.project; + projectItem.iconPath = IconPathHelper.databaseProject; + return projectItem; }