Improve file explorer to use file system provider and reveal api

This commit is contained in:
Sandeep Somavarapu
2018-02-23 18:33:03 +01:00
parent 4a1d8c37ff
commit d8afd98c65
9 changed files with 1269 additions and 195 deletions

View File

@ -46,23 +46,23 @@ export class DepNodeProvider implements vscode.TreeDataProvider<Dependency> {
if (this.pathExists(packageJsonPath)) {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
const toDep = (moduleName: string): Dependency => {
const toDep = (moduleName: string, version: string): Dependency => {
if (this.pathExists(path.join(this.workspaceRoot, 'node_modules', moduleName))) {
return new Dependency(moduleName, vscode.TreeItemCollapsibleState.Collapsed);
return new Dependency(moduleName, version, vscode.TreeItemCollapsibleState.Collapsed);
} else {
return new Dependency(moduleName, vscode.TreeItemCollapsibleState.None, {
return new Dependency(moduleName, version, vscode.TreeItemCollapsibleState.None, {
command: 'extension.openPackageOnNpm',
title: '',
arguments: [moduleName],
arguments: [moduleName]
});
}
}
const deps = packageJson.dependencies
? Object.keys(packageJson.dependencies).map(toDep)
? Object.keys(packageJson.dependencies).map(dep => toDep(dep, packageJson.dependencies[dep]))
: [];
const devDeps = packageJson.devDependencies
? Object.keys(packageJson.devDependencies).map(toDep)
? Object.keys(packageJson.devDependencies).map(dep => toDep(dep, packageJson.devDependencies[dep]))
: [];
return deps.concat(devDeps);
} else {
@ -85,12 +85,17 @@ class Dependency extends vscode.TreeItem {
constructor(
public readonly label: string,
private version: string,
public readonly collapsibleState: vscode.TreeItemCollapsibleState,
public readonly command?: vscode.Command
) {
super(label, collapsibleState);
}
get tooltip(): string {
return `${this.label}-${this.version}`
}
iconPath = {
light: path.join(__filename, '..', '..', '..', 'resources', 'light', 'dependency.svg'),
dark: path.join(__filename, '..', '..', '..', 'resources', 'dark', 'dependency.svg')