Cleanup sql projects tree (#21883)

* remove MessageTreeItem and rename projectUri to relativeProjectUri

* declare variables inline in constructor
This commit is contained in:
Kim Santiago
2023-02-09 11:42:00 -08:00
committed by GitHub
parent 37ad1b0fdb
commit 0e269e0438
9 changed files with 33 additions and 62 deletions

View File

@@ -10,21 +10,19 @@ import * as path from 'path';
* Base class for an item that appears in the ADS project tree
*/
export abstract class BaseProjectTreeItem {
/** Project-relative URI that's compatible with the project tree */
projectUri: vscode.Uri;
parent?: BaseProjectTreeItem;
constructor(uri: vscode.Uri, parent?: BaseProjectTreeItem) {
this.projectUri = uri;
this.parent = parent;
}
/**
* Constructor
* @param relativeProjectUri Project-relative URI that's compatible with the project tree
* @param parent parent tree item
*/
constructor(public relativeProjectUri: vscode.Uri, public parent?: BaseProjectTreeItem) { }
abstract get children(): BaseProjectTreeItem[];
abstract get treeItem(): vscode.TreeItem;
public get friendlyName(): string {
return path.parse(this.projectUri.path).base;
return path.parse(this.relativeProjectUri.path).base;
}
public get root() {
@@ -37,25 +35,3 @@ export abstract class BaseProjectTreeItem {
return node;
}
}
/**
* Leaf tree item that just displays text for messaging purposes
*/
export class MessageTreeItem extends BaseProjectTreeItem {
private message: string;
constructor(message: string, parent?: BaseProjectTreeItem) {
super(vscode.Uri.file(path.join(parent?.projectUri.path ?? 'Message', message)), parent);
this.message = message;
}
public get children(): BaseProjectTreeItem[] {
return [];
}
public get treeItem(): vscode.TreeItem {
return new vscode.TreeItem(this.message, vscode.TreeItemCollapsibleState.None);
}
}
export const SpacerTreeItem = new MessageTreeItem('');

View File

@@ -19,7 +19,7 @@ export class DatabaseReferencesTreeItem extends BaseProjectTreeItem {
private references: DatabaseReferenceTreeItem[] = [];
constructor(project: ProjectRootTreeItem) {
super(vscode.Uri.file(path.join(project.projectUri.fsPath, constants.databaseReferencesNodeName)), project);
super(vscode.Uri.file(path.join(project.relativeProjectUri.fsPath, constants.databaseReferencesNodeName)), project);
this.construct();
}
@@ -35,7 +35,7 @@ export class DatabaseReferencesTreeItem extends BaseProjectTreeItem {
}
public get treeItem(): vscode.TreeItem {
const refFolderItem = new vscode.TreeItem(this.projectUri, vscode.TreeItemCollapsibleState.Collapsed);
const refFolderItem = new vscode.TreeItem(this.relativeProjectUri, vscode.TreeItemCollapsibleState.Collapsed);
refFolderItem.contextValue = constants.DatabaseProjectItemType.referencesRoot;
refFolderItem.iconPath = IconPathHelper.referenceGroup;
@@ -45,7 +45,7 @@ export class DatabaseReferencesTreeItem extends BaseProjectTreeItem {
export class DatabaseReferenceTreeItem extends BaseProjectTreeItem {
constructor(private reference: IDatabaseReferenceProjectEntry, referencesTreeItem: DatabaseReferencesTreeItem) {
super(vscode.Uri.file(path.join(referencesTreeItem.projectUri.fsPath, reference.databaseName)), referencesTreeItem);
super(vscode.Uri.file(path.join(referencesTreeItem.relativeProjectUri.fsPath, reference.databaseName)), referencesTreeItem);
}
public get children(): BaseProjectTreeItem[] {
@@ -53,7 +53,7 @@ export class DatabaseReferenceTreeItem extends BaseProjectTreeItem {
}
public get treeItem(): vscode.TreeItem {
const refItem = new vscode.TreeItem(this.projectUri, vscode.TreeItemCollapsibleState.None);
const refItem = new vscode.TreeItem(this.relativeProjectUri, vscode.TreeItemCollapsibleState.None);
refItem.label = this.reference.databaseName;
refItem.contextValue = constants.DatabaseProjectItemType.reference;
refItem.iconPath = IconPathHelper.referenceDatabase;

View File

@@ -100,7 +100,7 @@ export function sortFileFolderNodes(a: (FolderNode | FileNode), b: (FolderNode |
} else if (!(a instanceof FolderNode) && b instanceof FolderNode) {
return 1;
} else {
return a.projectUri.fsPath.localeCompare(b.projectUri.fsPath);
return a.relativeProjectUri.fsPath.localeCompare(b.relativeProjectUri.fsPath);
}
}
@@ -120,5 +120,5 @@ function fsPathToProjectUri(fileSystemUri: vscode.Uri, projectNode: ProjectRootT
localUri = parts[parts.length - 1];
}
return vscode.Uri.file(path.join(projectNode.projectUri.fsPath, localUri));
return vscode.Uri.file(path.join(projectNode.relativeProjectUri.fsPath, localUri));
}

View File

@@ -50,7 +50,7 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem {
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);
projectItem.label = path.basename(this.relativeProjectUri.fsPath, sqlprojExtension);
return projectItem;
}

View File

@@ -18,7 +18,7 @@ export class SqlCmdVariablesTreeItem extends BaseProjectTreeItem {
private sqlcmdVariables: SqlCmdVariableTreeItem[] = [];
constructor(project: ProjectRootTreeItem) {
super(vscode.Uri.file(path.join(project.projectUri.fsPath, constants.sqlcmdVariablesNodeName)), project);
super(vscode.Uri.file(path.join(project.relativeProjectUri.fsPath, constants.sqlcmdVariablesNodeName)), project);
this.construct();
}
@@ -42,7 +42,7 @@ export class SqlCmdVariablesTreeItem extends BaseProjectTreeItem {
}
public get treeItem(): vscode.TreeItem {
const sqlCmdVariableFolderItem = new vscode.TreeItem(this.projectUri, vscode.TreeItemCollapsibleState.Collapsed);
const sqlCmdVariableFolderItem = new vscode.TreeItem(this.relativeProjectUri, vscode.TreeItemCollapsibleState.Collapsed);
sqlCmdVariableFolderItem.contextValue = constants.DatabaseProjectItemType.sqlcmdVariablesRoot;
sqlCmdVariableFolderItem.iconPath = IconPathHelper.sqlCmdVariablesGroup;
@@ -55,7 +55,7 @@ export class SqlCmdVariablesTreeItem extends BaseProjectTreeItem {
*/
export class SqlCmdVariableTreeItem extends BaseProjectTreeItem {
constructor(private sqlcmdVar: string, sqlcmdVarsTreeItem: SqlCmdVariablesTreeItem) {
super(vscode.Uri.file(path.join(sqlcmdVarsTreeItem.projectUri.fsPath, sqlcmdVar)), sqlcmdVarsTreeItem);
super(vscode.Uri.file(path.join(sqlcmdVarsTreeItem.relativeProjectUri.fsPath, sqlcmdVar)), sqlcmdVarsTreeItem);
}
public get children(): BaseProjectTreeItem[] {
@@ -63,7 +63,7 @@ export class SqlCmdVariableTreeItem extends BaseProjectTreeItem {
}
public get treeItem(): vscode.TreeItem {
const sqlcmdVariableItem = new vscode.TreeItem(this.projectUri, vscode.TreeItemCollapsibleState.None);
const sqlcmdVariableItem = new vscode.TreeItem(this.relativeProjectUri, vscode.TreeItemCollapsibleState.None);
sqlcmdVariableItem.label = this.sqlcmdVar;
sqlcmdVariableItem.contextValue = constants.DatabaseProjectItemType.sqlcmdVariable;
sqlcmdVariableItem.iconPath = IconPathHelper.sqlCmdVariable;