diff --git a/package.json b/package.json index fb358071..ad0195c7 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,10 @@ "command": "java.project.clean.workspace", "title": "%contributes.commands.java.project.clean.workspace%" }, + { + "command": "java.project.update", + "title": "%contributes.commands.java.project.update%" + }, { "command": "java.view.package.revealInProjectExplorer", "title": "%contributes.commands.java.view.package.revealInProjectExplorer%", @@ -294,6 +298,10 @@ "command": "java.project.clean.workspace", "when": "false" }, + { + "command": "java.project.update", + "when": "false" + }, { "command": "java.view.package.revealInProjectExplorer", "when": "false" @@ -455,6 +463,11 @@ "command": "java.view.package.exportJar", "when": "view == javaProjectExplorer && viewItem =~ /java:workspace(?=.*?\\b\\+uri\\b)/ && java:serverMode!= LightWeight", "group": "inline" + }, + { + "command": "java.project.update", + "when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+uri\\b)(?=.*?\\b\\+(maven|gradle)\\b)/", + "group": "9_sync@10" } ] }, diff --git a/package.nls.json b/package.nls.json index ea464ee4..7c0c023a 100644 --- a/package.nls.json +++ b/package.nls.json @@ -6,6 +6,7 @@ "contributes.commands.java.view.package.refresh": "Refresh", "contributes.commands.java.project.build.workspace": "Build Workspace", "contributes.commands.java.project.clean.workspace": "Clean Workspace", + "contributes.commands.java.project.update": "Update Project", "contributes.commands.java.view.package.revealInProjectExplorer": "Reveal in Java Projects", "contributes.commands.java.view.package.changeToFlatPackageView":"Flat View", "contributes.commands.java.view.package.changeToHierarchicalPackageView":"Hierarchical View", diff --git a/package.nls.zh.json b/package.nls.zh.json index 5860bbbf..4a27090b 100644 --- a/package.nls.zh.json +++ b/package.nls.zh.json @@ -6,6 +6,7 @@ "contributes.commands.java.view.package.refresh": "刷新", "contributes.commands.java.project.build.workspace": "构建工作空间", "contributes.commands.java.project.clean.workspace": "清理工作空间", + "contributes.commands.java.project.update": "更新项目", "contributes.commands.java.view.package.revealInProjectExplorer": "在 Java 项目视图中显示", "contributes.commands.java.view.package.changeToFlatPackageView":"平行显示", "contributes.commands.java.view.package.changeToHierarchicalPackageView":"层级显示", diff --git a/src/commands.ts b/src/commands.ts index 4467fad2..c715ad59 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -54,6 +54,8 @@ export namespace Commands { export const JAVA_PROJECT_CLEAN_WORKSPACE = "java.project.clean.workspace"; + export const JAVA_PROJECT_UPDATE = "java.project.update"; + export const JAVA_PROJECT_EXPLORER_FOCUS = "javaProjectExplorer.focus"; export const JAVA_PROJECT_ACTIVATE = "java.project.activate"; @@ -80,6 +82,8 @@ export namespace Commands { export const JAVA_CLEAN_WORKSPACE = "java.clean.workspace"; + export const JAVA_PROJECT_CONFIGURATION_UPDATE = "java.projectConfiguration.update"; + export const JAVA_RESOLVE_BUILD_FILES = "vscode.java.resolveBuildFiles"; } diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index d38c4f07..a2724928 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -4,7 +4,7 @@ import * as _ from "lodash"; import { commands, Event, EventEmitter, ExtensionContext, extensions, ProviderResult, - TreeDataProvider, TreeItem, Uri, window, workspace, + RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace, } from "vscode"; import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper"; import { Commands } from "../commands"; @@ -55,6 +55,18 @@ export class DependencyDataProvider implements TreeDataProvider { commands.executeCommand(Commands.JAVA_BUILD_WORKSPACE))); context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_CLEAN_WORKSPACE, () => commands.executeCommand(Commands.JAVA_CLEAN_WORKSPACE))); + context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_UPDATE, async (node: INodeData) => { + if (!node.uri) { + window.showErrorMessage("The URI of the project is not available, you can try to update the project by right clicking the project configuration file (pom.xml or *.gradle) from the File Explorer."); + return; + } + const pattern: RelativePattern = new RelativePattern(Uri.parse(node.uri).fsPath, "{pom.xml,*.gradle}"); + const uris: Uri[] = await workspace.findFiles(pattern, null /*exclude*/, 1 /*maxResults*/); + if (uris.length >= 1) { + commands.executeCommand(Commands.JAVA_PROJECT_CONFIGURATION_UPDATE, uris[0]); + } + })); + Settings.registerConfigurationListener((updatedConfig, oldConfig) => { if (updatedConfig.refreshDelay !== oldConfig.refreshDelay) { this.setRefreshDelay(updatedConfig.refreshDelay);