diff --git a/extensions/sql-database-projects/src/common/constants.ts b/extensions/sql-database-projects/src/common/constants.ts index b12343ec06..123b19f4b4 100644 --- a/extensions/sql-database-projects/src/common/constants.ts +++ b/extensions/sql-database-projects/src/common/constants.ts @@ -110,6 +110,7 @@ export const invalidDatabaseReference = localize('invalidDatabaseReference', "In export const databaseSelectionRequired = localize('databaseSelectionRequired', "Database selection is required to import a project"); export const databaseReferenceAlreadyExists = localize('databaseReferenceAlreadyExists', "A reference to this database already exists in this project"); export const ousiderFolderPath = localize('outsideFolderPath', "Items with absolute path outside project folder are not supported. Please make sure the paths in the project file are relative to project folder."); +export const parentTreeItemUnknown = localize('parentTreeItemUnknown', "Cannot access parent of provided tree item"); export function projectAlreadyOpened(path: string) { return localize('projectAlreadyOpened', "Project '{0}' is already opened.", path); } export function projectAlreadyExists(name: string, path: string) { return localize('projectAlreadyExists', "A project named {0} already exists in {1}.", name, path); } export function noFileExist(fileName: string) { return localize('noFileExist', "File {0} doesn't exist", fileName); } diff --git a/extensions/sql-database-projects/src/controllers/databaseProjectTreeViewProvider.ts b/extensions/sql-database-projects/src/controllers/databaseProjectTreeViewProvider.ts index b2d2fcd398..46aa583d84 100644 --- a/extensions/sql-database-projects/src/controllers/databaseProjectTreeViewProvider.ts +++ b/extensions/sql-database-projects/src/controllers/databaseProjectTreeViewProvider.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; +import * as constants from '../common/constants'; import { BaseProjectTreeItem, SpacerTreeItem } from '../models/tree/baseTreeItem'; import { ProjectRootTreeItem } from '../models/tree/projectTreeItem'; @@ -39,6 +40,13 @@ export class SqlDatabaseProjectTreeViewProvider implements vscode.TreeDataProvid return element.children; } + public getParent(element: BaseProjectTreeItem): BaseProjectTreeItem { + if (!element.parent) { + throw new Error(constants.parentTreeItemUnknown); + } + return element.parent; + } + /** * Constructs a new set of root nodes from a list of Projects * @param projects List of Projects @@ -71,7 +79,7 @@ export class SqlDatabaseProjectTreeViewProvider implements vscode.TreeDataProvid const projNode = this.roots.find(x => x instanceof ProjectRootTreeItem ? (x).project === project : false); if (projNode) { - this.treeView?.reveal(projNode, { focus: true, expand: true }); + await this.treeView?.reveal(projNode, { focus: true, expand: true }); } } } diff --git a/extensions/sql-database-projects/src/controllers/mainController.ts b/extensions/sql-database-projects/src/controllers/mainController.ts index a8cb704944..30ada8b7e5 100644 --- a/extensions/sql-database-projects/src/controllers/mainController.ts +++ b/extensions/sql-database-projects/src/controllers/mainController.ts @@ -76,7 +76,10 @@ export default class MainController implements vscode.Disposable { IconPathHelper.setExtensionContext(this.extensionContext); // init view - const treeView = vscode.window.createTreeView(SQL_DATABASE_PROJECTS_VIEW_ID, { treeDataProvider: this.dbProjectTreeViewProvider }); + const treeView = vscode.window.createTreeView(SQL_DATABASE_PROJECTS_VIEW_ID, { + treeDataProvider: this.dbProjectTreeViewProvider, + showCollapseAll: true + }); this.dbProjectTreeViewProvider.setTreeView(treeView); this.extensionContext.subscriptions.push(treeView); diff --git a/extensions/sql-database-projects/src/models/tree/fileFolderTreeItem.ts b/extensions/sql-database-projects/src/models/tree/fileFolderTreeItem.ts index 8f0db363d2..d91b85036a 100644 --- a/extensions/sql-database-projects/src/models/tree/fileFolderTreeItem.ts +++ b/extensions/sql-database-projects/src/models/tree/fileFolderTreeItem.ts @@ -28,7 +28,7 @@ export class FolderNode extends BaseProjectTreeItem { } public get treeItem(): vscode.TreeItem { - const folderItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Expanded); + const folderItem = new vscode.TreeItem(this.uri, vscode.TreeItemCollapsibleState.Collapsed); folderItem.contextValue = DatabaseProjectItemType.folder; return folderItem; }