diff --git a/package.json b/package.json index c5ec157b..a030162b 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,14 @@ "category": "Java", "icon": "$(refresh)" }, + { + "command": "java.project.build.workspace", + "title": "%contributes.commands.java.project.build.workspace%" + }, + { + "command": "java.project.clean.workspace", + "title": "%contributes.commands.java.project.clean.workspace%" + }, { "command": "java.view.package.refresh", "title": "%contributes.commands.java.view.package.refresh%", @@ -228,43 +236,61 @@ { "command": "java.view.package.newPackage", "when": "never" + }, + { + "command": "java.project.build.workspace", + "when": "never" + }, + { + "command": "java.project.clean.workspace", + "when": "never" } ], "view/title": [ + { + "command": "java.project.create", + "when": "view == javaProjectExplorer", + "group": "navigation@10" + }, { "command": "java.view.package.exportJar", - "when": "view == javaProjectExplorer && java:serverMode!= LightWeight && workspaceFolderCount != 0", - "group": "navigation@50" + "when": "view == javaProjectExplorer && java:serverMode != LightWeight && workspaceFolderCount != 0", + "group": "navigation@20" }, { "command": "java.view.package.refresh", "when": "view == javaProjectExplorer && java:serverMode!= LightWeight", - "group": "navigation@40" + "group": "navigation@30" }, { "command": "java.view.package.changeToHierarchicalPackageView", "when": "view == javaProjectExplorer && config.java.dependency.packagePresentation == flat && java:serverMode!= LightWeight", - "group": "navigation@30" + "group": "overflow_10@10" }, { "command": "java.view.package.changeToFlatPackageView", "when": "view == javaProjectExplorer && config.java.dependency.packagePresentation != flat && java:serverMode!= LightWeight", - "group": "navigation@30" + "group": "overflow_10@10" }, { "command": "java.view.package.linkWithFolderExplorer", "when": "view == javaProjectExplorer && config.java.dependency.syncWithFolderExplorer != true && java:serverMode!= LightWeight", - "group": "navigation@20" + "group": "overflow_10@20" }, { "command": "java.view.package.unlinkWithFolderExplorer", "when": "view == javaProjectExplorer && config.java.dependency.syncWithFolderExplorer == true && java:serverMode!= LightWeight", - "group": "navigation@20" + "group": "overflow_10@20" }, { - "command": "java.project.create", - "when": "view == javaProjectExplorer", - "group": "navigation@10" + "command": "java.project.build.workspace", + "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "group": "overflow_20@10" + }, + { + "command": "java.project.clean.workspace", + "when": "view == javaProjectExplorer && workspaceFolderCount != 0", + "group": "overflow_20@20" } ], "view/item/context": [ diff --git a/package.nls.json b/package.nls.json index 489cff29..e96fcbb8 100644 --- a/package.nls.json +++ b/package.nls.json @@ -5,11 +5,12 @@ "contributes.commands.java.project.maven.addDependency": "Add a new dependency to the Maven project", "contributes.commands.java.project.removeLibrary": "Remove jar file from project classpath", "contributes.commands.java.view.package.refresh": "Refresh", - "contributes.commands.java.view.package.changeRepresentation": "Change package representation", - "contributes.commands.java.view.package.changeToFlatPackageView":"Change to flat package representation", - "contributes.commands.java.view.package.changeToHierarchicalPackageView":"Change to hierarchical package representation", - "contributes.commands.java.view.package.linkWithFolderExplorer":"Synchronize Java Projects explorer selection with folder explorer", - "contributes.commands.java.view.package.unlinkWithFolderExplorer":"Desynchronize Java Projects explorer selection with folder explorer", + "contributes.commands.java.project.build.workspace": "Build Workspace", + "contributes.commands.java.project.clean.workspace": "Clean Workspace", + "contributes.commands.java.view.package.changeToFlatPackageView":"Flat View", + "contributes.commands.java.view.package.changeToHierarchicalPackageView":"Hierarchical View", + "contributes.commands.java.view.package.linkWithFolderExplorer":"Synchronize with Editor", + "contributes.commands.java.view.package.unlinkWithFolderExplorer":"Desynchronize with Editor", "contributes.commands.java.view.package.revealFileInOS": "Reveal in Explorer", "contributes.commands.java.view.package.exportJar": "Export Jar...", "contributes.commands.java.view.package.copyFilePath": "Copy Path", diff --git a/package.nls.zh.json b/package.nls.zh.json index d2918eab..da4135d9 100644 --- a/package.nls.zh.json +++ b/package.nls.zh.json @@ -5,11 +5,12 @@ "contributes.commands.java.project.maven.addDependency": "为该 Maven 项目增加依赖库", "contributes.commands.java.project.removeLibrary": "将该 Jar 文件从 Java 项目类路径中移除", "contributes.commands.java.view.package.refresh": "刷新", - "contributes.commands.java.view.package.changeRepresentation": "更改包展示形式", - "contributes.commands.java.view.package.changeToFlatPackageView":"将 Java 包显示方式切换为平行显示", - "contributes.commands.java.view.package.changeToHierarchicalPackageView":"将 Java 包显示方式切换为分层显示", - "contributes.commands.java.view.package.linkWithFolderExplorer":"开启 Java 项目管理器与当前浏览文件的关联", - "contributes.commands.java.view.package.unlinkWithFolderExplorer":"关闭 Java 项目管理器与当前浏览文件的关联", + "contributes.commands.java.project.build.workspace": "构建工作空间", + "contributes.commands.java.project.clean.workspace": "清理工作空间", + "contributes.commands.java.view.package.changeToFlatPackageView":"平行显示", + "contributes.commands.java.view.package.changeToHierarchicalPackageView":"层级显示", + "contributes.commands.java.view.package.linkWithFolderExplorer":"启用编辑器关联", + "contributes.commands.java.view.package.unlinkWithFolderExplorer":"关闭编辑器关联", "contributes.commands.java.view.package.revealFileInOS": "打开所在的文件夹", "contributes.commands.java.view.package.exportJar": "导出到 Jar 文件...", "contributes.commands.java.view.package.copyFilePath": "复制路径", diff --git a/src/commands.ts b/src/commands.ts index fb319990..dc61e95f 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -44,6 +44,10 @@ export namespace Commands { export const JAVA_PROJECT_REFRESH_LIBRARIES = "java.project.refreshLibraries"; + export const JAVA_PROJECT_BUILD_WORKSPACE = "java.project.build.workspace"; + + export const JAVA_PROJECT_CLEAN_WORKSPACE = "java.project.clean.workspace"; + export const JAVA_MAVEN_PROJECT_ADD_DEPENDENCY = "java.project.maven.addDependency"; export const JAVA_MAVEN_CREATE_PROJECT = "maven.archetype.generate"; @@ -54,9 +58,6 @@ export namespace Commands { export const JAVA_GETPACKAGEDATA = "java.getPackageData"; - /** - * command from VS Code Java to switch the language server mode - */ export const JAVA_RESOLVEPATH = "java.resolvePath"; export const JAVA_PROJECT_GETMAINMETHOD = "java.project.getMainMethod"; @@ -67,6 +68,8 @@ export namespace Commands { export const JAVA_BUILD_WORKSPACE = "java.workspace.compile"; + export const JAVA_CLEAN_WORKSPACE = "java.clean.workspace"; + export const JAVA_RESOLVE_BUILD_FILES = "vscode.java.resolveBuildFiles"; } diff --git a/src/constants.ts b/src/constants.ts index a5aae406..1425aaee 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -5,3 +5,7 @@ export namespace Context { export const MAVEN_ENABLED: string = "mavenEnabled"; export const EXTENSION_ACTIVATED: string = "extensionActivated"; } + +export namespace Explorer { + export const DEFAULT_PACKAGE_NAME: string = "default-package"; +} diff --git a/src/explorerCommands/new.ts b/src/explorerCommands/new.ts index c9a43623..566fa9a6 100644 --- a/src/explorerCommands/new.ts +++ b/src/explorerCommands/new.ts @@ -4,6 +4,7 @@ import * as fse from "fs-extra"; import * as path from "path"; import { Uri, window, workspace, WorkspaceEdit } from "vscode"; +import { Explorer } from "../constants"; import { NodeKind } from "../java/nodeData"; import { isJavaIdentifier, isKeyword } from "../utility"; import { DataNode } from "../views/dataNode"; @@ -49,7 +50,7 @@ function getNewFilePath(basePath: string, className: string): string { export async function newPackage(node: DataNode): Promise { let defaultValue: string; let packageRootPath: string; - if (node.nodeData.kind === NodeKind.PackageRoot || node.name === "default-package") { + if (node.nodeData.kind === NodeKind.PackageRoot || node.name === Explorer.DEFAULT_PACKAGE_NAME) { defaultValue = ""; packageRootPath = Uri.parse(node.uri).fsPath; } else if (node.nodeData.kind === NodeKind.Package) { diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index b664e085..ea231d54 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -44,6 +44,10 @@ export class DependencyDataProvider implements TreeDataProvider { commands.executeCommand("copyRelativeFilePath", Uri.parse(node.uri)))); context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_OPEN_FILE, (uri) => this.openFile(uri))); context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_OUTLINE, (uri, range) => this.goToOutline(uri, range))); + context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_BUILD_WORKSPACE, () => + commands.executeCommand(Commands.JAVA_BUILD_WORKSPACE))); + context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_CLEAN_WORKSPACE, () => + commands.executeCommand(Commands.JAVA_CLEAN_WORKSPACE))); Settings.registerConfigurationListener((updatedConfig, oldConfig) => { if (updatedConfig.refreshDelay !== oldConfig.refreshDelay) { this.setRefreshDelay(updatedConfig.refreshDelay); diff --git a/src/views/nodeCache/explorerNodeCache.ts b/src/views/nodeCache/explorerNodeCache.ts index b7fbc91d..77b002f1 100644 --- a/src/views/nodeCache/explorerNodeCache.ts +++ b/src/views/nodeCache/explorerNodeCache.ts @@ -3,6 +3,7 @@ import * as path from "path"; import { Uri } from "vscode"; +import { Explorer } from "../../constants"; import { DataNode } from "../dataNode"; import { ExplorerNode } from "../explorerNode"; import { Trie, TrieNode } from "./Trie"; @@ -29,7 +30,7 @@ class ExplorerNodeCache { public saveNode(node: ExplorerNode): void { // default package has the same uri as the root package, // we skip default package and store the root package here. - if (node instanceof DataNode && node.uri && node.name !== "default-package") { + if (node instanceof DataNode && node.uri && node.name !== Explorer.DEFAULT_PACKAGE_NAME) { this.mutableNodeCache.insert(node); } }