diff --git a/package.json b/package.json index c9e411a0..322b4359 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,10 @@ "command": "java.project.update", "title": "%contributes.commands.java.project.update%" }, + { + "command": "java.project.rebuild", + "title": "%contributes.commands.java.project.rebuild%" + }, { "command": "java.view.package.revealInProjectExplorer", "title": "%contributes.commands.java.view.package.revealInProjectExplorer%", @@ -358,6 +362,10 @@ "command": "java.project.update", "when": "false" }, + { + "command": "java.project.rebuild", + "when": "false" + }, { "command": "java.view.package.revealInProjectExplorer", "when": "false" @@ -480,6 +488,16 @@ "when": "view == javaProjectExplorer && !explorerResourceMoveableToTrash && viewItem =~ /java:(file|type|folder)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@20" }, + { + "command": "java.project.build.workspace", + "when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+java\\b)(?=.*?\\b\\+uri\\b)/", + "group":"8_execution@5" + }, + { + "command": "java.project.rebuild", + "when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+java\\b)(?=.*?\\b\\+uri\\b)/", + "group": "8_execution@6" + }, { "command": "java.view.package.newJavaClass", "when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+source\\b)(?=.*?\\b\\+uri\\b)/", diff --git a/package.nls.json b/package.nls.json index ba59ab8f..4cb668cb 100644 --- a/package.nls.json +++ b/package.nls.json @@ -5,9 +5,10 @@ "contributes.commands.java.project.addLibraryFolders": "Add Library Folders to Project Classpath...", "contributes.commands.java.project.removeLibrary": "Remove from Project Classpath", "contributes.commands.java.view.package.refresh": "Refresh", - "contributes.commands.java.project.build.workspace": "Rebuild Workspace", + "contributes.commands.java.project.build.workspace": "Rebuild All", "contributes.commands.java.project.clean.workspace": "Clean Workspace", "contributes.commands.java.project.update": "Update Project", + "contributes.commands.java.project.rebuild": "Rebuild Project", "contributes.commands.java.view.package.revealInProjectExplorer": "Reveal in Java Project Explorer", "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 7d9cedb9..5ed400d6 100644 --- a/package.nls.zh.json +++ b/package.nls.zh.json @@ -5,9 +5,10 @@ "contributes.commands.java.project.addLibraryFolders": "添加文件夹至项目 Classpath...", "contributes.commands.java.project.removeLibrary": "从项目 Classpath 中移除", "contributes.commands.java.view.package.refresh": "刷新", - "contributes.commands.java.project.build.workspace": "重新构建工作空间", + "contributes.commands.java.project.build.workspace": "重新构建所有项目", "contributes.commands.java.project.clean.workspace": "清理工作空间", "contributes.commands.java.project.update": "更新项目", + "contributes.commands.java.project.rebuild": "重新构建项目", "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 4f35d29a..bf090287 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -64,6 +64,8 @@ export namespace Commands { export const JAVA_PROJECT_UPDATE = "java.project.update"; + export const JAVA_PROJECT_REBUILD = "java.project.rebuild"; + export const JAVA_PROJECT_EXPLORER_FOCUS = "javaProjectExplorer.focus"; export const JAVA_PROJECT_LIST = "java.project.list"; diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index ec7158f1..be72d18e 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -6,7 +6,7 @@ import { commands, Event, EventEmitter, ExtensionContext, ProviderResult, RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace, } from "vscode"; -import { instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper"; +import { instrumentOperationAsVsCodeCommand, sendError } from "vscode-extension-telemetry-wrapper"; import { contextManager } from "../../extension.bundle"; import { Commands } from "../commands"; import { Context } from "../constants"; @@ -69,6 +69,14 @@ export class DependencyDataProvider implements TreeDataProvider { commands.executeCommand(Commands.JAVA_PROJECT_CONFIGURATION_UPDATE, uris[0]); } })); + context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REBUILD, async (node: INodeData) => { + if (!node.uri) { + sendError(new Error("Uri not available when building project")); + window.showErrorMessage("The URI of the project is not available, you can try to trigger the command 'Java: Rebuild Projects' from Command Palette."); + return; + } + commands.executeCommand(Commands.BUILD_PROJECT, Uri.parse(node.uri), true); + })); Settings.registerConfigurationListener((updatedConfig, oldConfig) => { if (updatedConfig.refreshDelay !== oldConfig.refreshDelay) {