mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-16 09:35:36 -05:00
Initial SQL Project tree viewlet in Explorer sidebar (#8639)
* Adding mock contents for tree * added open sqlproj dialog * reading files from directory * Added directory traversal * Adding tree sorting by folder vs file and label * Improved auto-unfolding of tree based on node type * replacing fs with fs.promise alias * added activation event for when workspace contains sqlproj files * Returning after displaying error
This commit is contained in:
@@ -4,12 +4,21 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
|
||||
import { SqlDatabaseProjectTreeViewProvider } from './databaseProjectTreeViewProvider';
|
||||
import { getErrorMessage } from '../common/utils';
|
||||
|
||||
const SQL_DATABASE_PROJECTS_VIEW_ID = 'sqlDatabaseProjectsView';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
|
||||
/**
|
||||
* The main controller class that initializes the extension
|
||||
*/
|
||||
export default class MainController implements vscode.Disposable {
|
||||
protected _context: vscode.ExtensionContext;
|
||||
protected dbProjectTreeViewProvider: SqlDatabaseProjectTreeViewProvider = new SqlDatabaseProjectTreeViewProvider();
|
||||
|
||||
public constructor(context: vscode.ExtensionContext) {
|
||||
this._context = context;
|
||||
@@ -22,14 +31,36 @@ export default class MainController implements vscode.Disposable {
|
||||
public deactivate(): void {
|
||||
}
|
||||
|
||||
public activate(): Promise<boolean> {
|
||||
this.initializeDatabaseProjects();
|
||||
return Promise.resolve(true);
|
||||
public async activate(): Promise<void> {
|
||||
await this.initializeDatabaseProjects();
|
||||
}
|
||||
|
||||
private initializeDatabaseProjects(): void {
|
||||
vscode.commands.registerCommand('sqlDatabaseProjects.new', () => { console.log('new database project called'); });
|
||||
vscode.commands.registerCommand('sqlDatabaseProjects.open', () => { console.log('open database project called'); });
|
||||
private async initializeDatabaseProjects(): Promise<void> {
|
||||
// init commands
|
||||
vscode.commands.registerCommand('sqlDatabaseProjects.new', () => { console.log('"New Database Project" called.'); });
|
||||
vscode.commands.registerCommand('sqlDatabaseProjects.open', async () => { this.openProjectFolder(); });
|
||||
|
||||
// init view
|
||||
this.dbProjectTreeViewProvider = new SqlDatabaseProjectTreeViewProvider();
|
||||
|
||||
this.extensionContext.subscriptions.push(vscode.window.registerTreeDataProvider(SQL_DATABASE_PROJECTS_VIEW_ID, this.dbProjectTreeViewProvider));
|
||||
}
|
||||
|
||||
public async openProjectFolder(): Promise<void> {
|
||||
try {
|
||||
let filter: { [key: string]: string[] } = {};
|
||||
|
||||
filter[localize('sqlDatabaseProject', "SQL database project")] = ['sqlproj'];
|
||||
|
||||
let file = await vscode.window.showOpenDialog({ filters: filter });
|
||||
|
||||
if (file) {
|
||||
await this.dbProjectTreeViewProvider.openProject(file);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
vscode.window.showErrorMessage(getErrorMessage(err));
|
||||
}
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
|
||||
Reference in New Issue
Block a user