Expand/collapse all node options (#11728)

* Implementing expand and collapse nodes

* adding constants for error messages

* Removing expand all database projects functionality

* Reformatting imports
This commit is contained in:
anjalia
2020-08-13 18:31:03 -07:00
committed by GitHub
parent 28aa9b7912
commit 1ee4af52b4
4 changed files with 15 additions and 3 deletions

View File

@@ -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 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 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 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 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 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); } export function noFileExist(fileName: string) { return localize('noFileExist', "File {0} doesn't exist", fileName); }

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import * as constants from '../common/constants';
import { BaseProjectTreeItem, SpacerTreeItem } from '../models/tree/baseTreeItem'; import { BaseProjectTreeItem, SpacerTreeItem } from '../models/tree/baseTreeItem';
import { ProjectRootTreeItem } from '../models/tree/projectTreeItem'; import { ProjectRootTreeItem } from '../models/tree/projectTreeItem';
@@ -39,6 +40,13 @@ export class SqlDatabaseProjectTreeViewProvider implements vscode.TreeDataProvid
return element.children; 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 * Constructs a new set of root nodes from a list of Projects
* @param projects 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 ? (<ProjectRootTreeItem>x).project === project : false); const projNode = this.roots.find(x => x instanceof ProjectRootTreeItem ? (<ProjectRootTreeItem>x).project === project : false);
if (projNode) { if (projNode) {
this.treeView?.reveal(projNode, { focus: true, expand: true }); await this.treeView?.reveal(projNode, { focus: true, expand: true });
} }
} }
} }

View File

@@ -76,7 +76,10 @@ export default class MainController implements vscode.Disposable {
IconPathHelper.setExtensionContext(this.extensionContext); IconPathHelper.setExtensionContext(this.extensionContext);
// init view // 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.dbProjectTreeViewProvider.setTreeView(treeView);
this.extensionContext.subscriptions.push(treeView); this.extensionContext.subscriptions.push(treeView);

View File

@@ -28,7 +28,7 @@ export class FolderNode extends BaseProjectTreeItem {
} }
public get treeItem(): vscode.TreeItem { 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; folderItem.contextValue = DatabaseProjectItemType.folder;
return folderItem; return folderItem;
} }