diff --git a/package.json b/package.json index ddc6a202..412a3c59 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,11 @@ "command": "java.project.clean.workspace", "title": "%contributes.commands.java.project.clean.workspace%" }, + { + "command": "java.view.package.revealInProjectExplorer", + "title": "%contributes.commands.java.view.package.revealInProjectExplorer%", + "category": "Java" + }, { "command": "java.view.package.refresh", "title": "%contributes.commands.java.view.package.refresh%", @@ -234,6 +239,17 @@ { "command": "java.project.clean.workspace", "when": "never" + }, + { + "command": "java.view.package.revealInProjectExplorer", + "when": "never" + } + ], + "explorer/context": [ + { + "command": "java.view.package.revealInProjectExplorer", + "when": "resourceExtname == .java && extensionActivated && java:serverMode == Standard", + "group": "java:project_10" } ], "view/title": [ diff --git a/package.nls.json b/package.nls.json index b74906e4..175238ee 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.view.package.revealInProjectExplorer": "Reveal in Java Projects", "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", diff --git a/package.nls.zh.json b/package.nls.zh.json index 2cf36f5a..3b5ec71e 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.view.package.revealInProjectExplorer": "在 Java 项目视图中显示", "contributes.commands.java.view.package.changeToFlatPackageView":"平行显示", "contributes.commands.java.view.package.changeToHierarchicalPackageView":"层级显示", "contributes.commands.java.view.package.linkWithFolderExplorer":"启用编辑器关联", diff --git a/src/commands.ts b/src/commands.ts index 4dfa687f..981837ce 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -36,6 +36,8 @@ export namespace Commands { export const VIEW_PACKAGE_NEW_JAVA_PACKAGE = "java.view.package.newPackage"; + export const VIEW_PACKAGE_REVEAL_IN_PROJECT_EXPLORER = "java.view.package.revealInProjectExplorer"; + export const JAVA_PROJECT_CREATE = "java.project.create"; export const JAVA_PROJECT_ADD_LIBRARIES = "java.project.addLibraries"; @@ -48,6 +50,8 @@ export namespace Commands { export const JAVA_PROJECT_CLEAN_WORKSPACE = "java.project.clean.workspace"; + export const JAVA_PROJECT_EXPLORER_FOCUS = "javaProjectExplorer.focus"; + export const JAVA_MAVEN_CREATE_PROJECT = "maven.archetype.generate"; export const JAVA_PROJECT_LIST = "java.project.list"; diff --git a/src/views/dependencyExplorer.ts b/src/views/dependencyExplorer.ts index e3ff7203..cb27fd16 100644 --- a/src/views/dependencyExplorer.ts +++ b/src/views/dependencyExplorer.ts @@ -1,7 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -import { Disposable, ExtensionContext, TextEditor, TreeView, TreeViewVisibilityChangeEvent, Uri, window } from "vscode"; +import { commands, Disposable, ExtensionContext, TextEditor, TreeView, TreeViewVisibilityChangeEvent, Uri, window } from "vscode"; +import { instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper"; +import { Commands } from "../commands"; import { isStandardServerReady } from "../extension"; import { Jdtls } from "../java/jdtls"; import { INodeData } from "../java/nodeData"; @@ -44,6 +46,14 @@ export class DependencyExplorer implements Disposable { } }), ); + + context.subscriptions.push( + instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_REVEAL_IN_PROJECT_EXPLORER, async (uri: Uri) => { + await commands.executeCommand(Commands.JAVA_PROJECT_EXPLORER_FOCUS); + await commands.executeCommand(Commands.VIEW_PACKAGE_OPEN_FILE, uri); + this.reveal(uri); + }), + ); } public dispose(): void {