diff --git a/extensions/sql-database-projects/package.json b/extensions/sql-database-projects/package.json index 7031fc5943..198bf34f36 100644 --- a/extensions/sql-database-projects/package.json +++ b/extensions/sql-database-projects/package.json @@ -59,6 +59,10 @@ "sqlDatabaseProjects.autorestSqlVersion": { "type": "string", "description": "%sqlDatabaseProjects.autorestSqlVersion%" + }, + "sqlDatabaseProjects.collapseProjectNodes": { + "type": "boolean", + "description": "%sqlDatabaseProjects.collapseProjectNodes%" } } } diff --git a/extensions/sql-database-projects/package.nls.json b/extensions/sql-database-projects/package.nls.json index 262a62f3a3..51dbbbe405 100644 --- a/extensions/sql-database-projects/package.nls.json +++ b/extensions/sql-database-projects/package.nls.json @@ -40,5 +40,6 @@ "sqlDatabaseProjects.netCoreDoNotAsk": "Whether to prompt the user to install .NET Core when not detected.", "sqlDatabaseProjects.nodejsDoNotAsk": "Whether to prompt the user to install Node.js when not detected.", "sqlDatabaseProjects.autorestSqlVersion": "Which version of Autorest.Sql to use from NPM. Latest will be used if not set.", + "sqlDatabaseProjects.collapseProjectNodes": "Whether project nodes start collapsed", "sqlDatabaseProjects.welcome": "No database projects currently open.\n[New Project](command:sqlDatabaseProjects.new)\n[Open Project](command:sqlDatabaseProjects.open)\n[Create Project From Database](command:sqlDatabaseProjects.importDatabase)" } diff --git a/extensions/sql-database-projects/src/common/constants.ts b/extensions/sql-database-projects/src/common/constants.ts index 501ad8e649..e97e82ed5e 100644 --- a/extensions/sql-database-projects/src/common/constants.ts +++ b/extensions/sql-database-projects/src/common/constants.ts @@ -605,3 +605,5 @@ export enum PublishTargetType { docker = 'docker', newAzureServer = 'newAzureServer' } + +export const CollapseProjectNodesKey = 'collapseProjectNodes'; diff --git a/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts b/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts index 4e2c9f6e2c..f6d9965609 100644 --- a/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts +++ b/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts @@ -11,10 +11,11 @@ import * as fileTree from './fileFolderTreeItem'; import { Project } from '../project'; import * as utils from '../../common/utils'; import { DatabaseReferencesTreeItem } from './databaseReferencesTreeItem'; -import { DatabaseProjectItemType, RelativeOuterPath, ExternalStreamingJob, sqlprojExtension } from '../../common/constants'; +import { DatabaseProjectItemType, RelativeOuterPath, ExternalStreamingJob, sqlprojExtension, CollapseProjectNodesKey } from '../../common/constants'; import { IconPathHelper } from '../../common/iconHelper'; import { FileProjectEntry } from '../projectEntry'; import { EntryType } from 'sqldbproj'; +import { DBProjectConfigurationKey } from '../../tools/netcoreTool'; /** * TreeNode root that represents an entire project @@ -47,7 +48,8 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem { } public get treeItem(): vscode.TreeItem { - const projectItem = new vscode.TreeItem(this.fileSystemUri, vscode.TreeItemCollapsibleState.Expanded); + const collapsibleState = vscode.workspace.getConfiguration(DBProjectConfigurationKey)[CollapseProjectNodesKey] ? vscode.TreeItemCollapsibleState.Collapsed : vscode.TreeItemCollapsibleState.Expanded; + const projectItem = new vscode.TreeItem(this.fileSystemUri, collapsibleState); projectItem.contextValue = this.project.isSdkStyleProject ? DatabaseProjectItemType.project : DatabaseProjectItemType.legacyProject; projectItem.iconPath = IconPathHelper.databaseProject; projectItem.label = path.basename(this.projectUri.fsPath, sqlprojExtension);