From 520a94e04b96f8f0483df30e59823873d803b10f Mon Sep 17 00:00:00 2001 From: Yan Zhang Date: Tue, 21 Jul 2020 13:59:28 +0800 Subject: [PATCH] Skip selection of project when there is only one (#516) Signed-off-by: Yan Zhang --- src/handlers/addDependencyHandler.ts | 12 ++---------- src/handlers/runFavoriteCommandsHandler.ts | 19 +++++-------------- src/utils/Utils.ts | 11 ++--------- src/utils/uiUtils.ts | 20 ++++++++++++++++++++ 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/handlers/addDependencyHandler.ts b/src/handlers/addDependencyHandler.ts index a48831f..c71b63b 100644 --- a/src/handlers/addDependencyHandler.ts +++ b/src/handlers/addDependencyHandler.ts @@ -3,11 +3,11 @@ import * as fse from "fs-extra"; import * as vscode from "vscode"; -import { mavenExplorerProvider } from "../explorer/mavenExplorerProvider"; import { MavenProject } from "../explorer/model/MavenProject"; import { UserError } from "../utils/errorUtils"; import { ElementNode, getNodesByTag, XmlTagName } from "../utils/lexerUtils"; import { getArtifacts, IArtifactMetadata } from "../utils/requestUtils"; +import { selectProjectIfNecessary } from "../utils/uiUtils"; export async function addDependencyHandler(options?: { pomPath?: string }): Promise { let pomPath: string; @@ -15,15 +15,7 @@ export async function addDependencyHandler(options?: { pomPath?: string }): Prom pomPath = options.pomPath; } else { // select a project(pomfile) - const selectedProject: MavenProject | undefined = await vscode.window.showQuickPick( - mavenExplorerProvider.mavenProjectNodes.map(item => ({ - value: item, - label: `$(primitive-dot) ${item.name}`, - description: undefined, - detail: item.pomPath - })), - { placeHolder: "Select a Maven project ...", ignoreFocusOut: true } - ).then(item => item ? item.value : undefined); + const selectedProject: MavenProject | undefined = await selectProjectIfNecessary(); if (!selectedProject) { return; } diff --git a/src/handlers/runFavoriteCommandsHandler.ts b/src/handlers/runFavoriteCommandsHandler.ts index ece21cf..13e50e0 100644 --- a/src/handlers/runFavoriteCommandsHandler.ts +++ b/src/handlers/runFavoriteCommandsHandler.ts @@ -3,30 +3,21 @@ import * as _ from "lodash"; import * as vscode from "vscode"; -import { mavenExplorerProvider } from "../explorer/mavenExplorerProvider"; import { MavenProject } from "../explorer/model/MavenProject"; import { Settings } from "../Settings"; import { executeInTerminal } from "../utils/mavenUtils"; +import { selectProjectIfNecessary } from "../utils/uiUtils"; import { debugCommand } from "./debugHandler"; type FavoriteCommand = { command: string, alias: string, debug?: boolean }; export async function runFavoriteCommandsHandler(project: MavenProject | undefined): Promise { let selectedProject: MavenProject | undefined = project; if (!selectedProject) { - selectedProject = await vscode.window.showQuickPick( - mavenExplorerProvider.mavenProjectNodes.map(item => ({ - value: item, - label: `$(primitive-dot) ${item.name}`, - description: undefined, - detail: item.pomPath - })), - { placeHolder: "Select a Maven project ...", ignoreFocusOut: true } - ).then(item => item ? item.value : undefined); - if (!selectedProject) { - return; - } + selectedProject = await selectProjectIfNecessary(); + } + if (!selectedProject) { + return; } - const favorites: FavoriteCommand[] | undefined = Settings.Terminal.favorites(vscode.Uri.file(selectedProject.pomPath)); if (!favorites || _.isEmpty(favorites)) { const BUTTON_OPEN_SETTINGS: string = "Open Settings"; diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 3ab664a..d80ad16 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -17,6 +17,7 @@ import { getExtensionVersion, getPathToTempFolder, getPathToWorkspaceStorage } f import { MavenNotFoundError } from "./errorUtils"; import { getLRUCommands, ICommandHistoryEntry } from "./historyUtils"; import { executeInTerminal, getMaven, pluginDescription, rawEffectivePom } from "./mavenUtils"; +import { selectProjectIfNecessary } from "./uiUtils"; export namespace Utils { @@ -233,15 +234,7 @@ export namespace Utils { export async function executeMavenCommand(): Promise { // select a project(pomfile) - const selectedProject: MavenProject | undefined = await window.showQuickPick( - mavenExplorerProvider.mavenProjectNodes.map(item => ({ - value: item, - label: `$(primitive-dot) ${item.name}`, - description: undefined, - detail: item.pomPath - })), - { placeHolder: "Select a Maven project ...", ignoreFocusOut: true } - ).then(item => item ? item.value : undefined); + const selectedProject: MavenProject | undefined = await selectProjectIfNecessary(); if (!selectedProject) { return; } diff --git a/src/utils/uiUtils.ts b/src/utils/uiUtils.ts index 0968c9e..7a82f8d 100644 --- a/src/utils/uiUtils.ts +++ b/src/utils/uiUtils.ts @@ -4,6 +4,8 @@ import * as fs from "fs-extra"; import * as vscode from "vscode"; import { OpenDialogOptions, Uri, window } from "vscode"; +import { mavenExplorerProvider } from "../explorer/mavenExplorerProvider"; +import { MavenProject } from "../explorer/model/MavenProject"; import { mavenOutputChannel } from "../mavenOutputChannel"; const TROUBLESHOOTING_LINK: string = "https://github.com/Microsoft/vscode-maven/blob/master/Troubleshooting.md"; @@ -56,3 +58,21 @@ export async function showTroubleshootingDialog(errorMessage: string): Promise { + if (!mavenExplorerProvider.mavenProjectNodes || mavenExplorerProvider.mavenProjectNodes.length === 0) { + return undefined; + } + if (mavenExplorerProvider.mavenProjectNodes.length === 1) { + return mavenExplorerProvider.mavenProjectNodes[0]; + } + return await window.showQuickPick( + mavenExplorerProvider.mavenProjectNodes.map(item => ({ + value: item, + label: `$(primitive-dot) ${item.name}`, + description: undefined, + detail: item.pomPath + })), + { placeHolder: "Select a Maven project ...", ignoreFocusOut: true } + ).then(item => item ? item.value : undefined); +}