add api to open new project dialog with only one project type with filtered target platforms (#16315)

This commit is contained in:
Kim Santiago
2021-07-27 10:03:44 -07:00
committed by GitHub
parent b2c203eaef
commit f01e9e2fc0
6 changed files with 71 additions and 7 deletions

View File

@@ -9,6 +9,7 @@ import * as sqldbproj from 'sqldbproj';
import * as vscode from 'vscode';
import * as constants from '../common/constants';
import { IconPathHelper } from '../common/iconHelper';
import { getDataWorkspaceExtensionApi } from '../common/utils';
import { SqlDatabaseProjectTreeViewProvider } from '../controllers/databaseProjectTreeViewProvider';
import { ProjectsController } from '../controllers/projectController';
import { Project } from '../models/project';
@@ -147,4 +148,24 @@ export class SqlDatabaseProjectProvider implements dataworkspace.IProjectProvide
get image(): ThemedIconPath {
return IconPathHelper.dashboardSqlProj;
}
async openSqlNewProjectDialog(allowedTargetPlatforms?: sqldbproj.SqlTargetPlatform[]): Promise<vscode.Uri | undefined> {
let targetPlatforms = Array.from(constants.targetPlatformToVersion.keys());
if (allowedTargetPlatforms) {
targetPlatforms = targetPlatforms.filter(p => allowedTargetPlatforms.toString().includes(p));
}
const projectType: dataworkspace.IProjectType = {
id: constants.emptySqlDatabaseProjectTypeId,
projectFileExtension: constants.sqlprojExtension.replace(/\./g, ''),
displayName: constants.emptyProjectTypeDisplayName,
description: constants.emptyProjectTypeDescription,
icon: IconPathHelper.colorfulSqlProject,
targetPlatforms: targetPlatforms,
defaultTargetPlatform: constants.defaultTargetPlatform
};
const projectUri = getDataWorkspaceExtensionApi().openSpecificProjectNewProjectDialog(projectType);
return projectUri;
}
}

View File

@@ -27,6 +27,13 @@ declare module 'sqldbproj' {
* Opens and loads a .sqlproj file
*/
openProject(projectFilePath: string): Promise<ISqlProject>;
/**
* Opens the data workspace new project dialog with only the sql database template
* @param allowedTargetPlatforms specific target platforms to allow. If not specified, all target platforms for sql will be listed
* @returns uri of the created the project or undefined if no project was created
*/
openSqlNewProjectDialog(allowedTargetPlatforms?: SqlTargetPlatform[]): Promise<vscode.Uri | undefined>;
}
export interface ISqlProject {