diff --git a/package.json b/package.json index 8753484f..0c059b56 100644 --- a/package.json +++ b/package.json @@ -369,12 +369,12 @@ }, { "command": "java.view.package.exportJar", - "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "navigation@20" }, { "command": "java.view.package.refresh", - "when": "view == javaProjectExplorer && java:serverMode == Standard", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "navigation@30" }, { @@ -399,12 +399,12 @@ }, { "command": "java.project.build.workspace", - "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "overflow_20@10" }, { "command": "java.project.clean.workspace", - "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "overflow_20@20" } ], @@ -519,6 +519,11 @@ "contents": "%viewsWelcome.workbench.createNewJavaProject%", "when": "workspaceFolderCount == 0" }, + { + "view": "javaProjectExplorer", + "contents": "%viewsWelcome.workbench.noJavaProject%", + "when": "java:noJavaProjects" + }, { "view": "javaProjectExplorer", "contents": "%viewsWelcome.workbench.inLightWeightMode%", diff --git a/package.nls.json b/package.nls.json index 55a540c9..44fe7bfe 100644 --- a/package.nls.json +++ b/package.nls.json @@ -37,6 +37,7 @@ "taskDefinitions.java.project.exportJar.testCompileOutput": "The folders containing output class files in the test scope.", "taskDefinitions.java.project.exportJar.dependencies": "The artifact dependencies in the runtime scope.", "taskDefinitions.java.project.exportJar.testDependencies": "The artifact dependencies in the test scope.", - "viewsWelcome.workbench.createNewJavaProject": "You can also [open a Java project](command:_java.project.open), or create a new Java project by clicking the below button.\n[Create Java Project](command:java.project.create)", + "viewsWelcome.workbench.createNewJavaProject": "You can also [open a Java project](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)", + "viewsWelcome.workbench.noJavaProject": "No Java projects found in the current workspace. You can [open a Java project](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)", "viewsWelcome.workbench.inLightWeightMode": "No projects are listed because the Java Language Server is currently running in [LightWeight Mode](https://aka.ms/vscode-java-lightweight). To show projects, click on the button to switch to Standard Mode.\n[Switch to Standard Mode](command:java.server.mode.switch?%5B%22Standard%22,true%5D)" } diff --git a/package.nls.zh.json b/package.nls.zh.json index ef65f631..3314e85b 100644 --- a/package.nls.zh.json +++ b/package.nls.zh.json @@ -38,5 +38,6 @@ "taskDefinitions.java.project.exportJar.dependencies": "在 runtime scope 内的依赖。", "taskDefinitions.java.project.exportJar.testDependencies": "在 test scope 内的依赖。", "viewsWelcome.workbench.createNewJavaProject": "您也可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)", + "viewsWelcome.workbench.noJavaProject": "当前工作空间未发现 Java 项目,您可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)", "viewsWelcome.workbench.inLightWeightMode": "由于 Java 语言服务正运行在 [LightWeight 模式](https://aka.ms/vscode-java-lightweight)下,因此项目将不会展示在该视图中。如果您需要展示项目信息,可以点击下方按钮将 Java 语言服务切换至 Standard 模式。\n[切换至 Standard 模式](command:java.server.mode.switch?%5B%22Standard%22,true%5D)" } diff --git a/src/constants.ts b/src/constants.ts index 0cd11895..2670b591 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -4,6 +4,7 @@ export namespace Context { export const EXTENSION_ACTIVATED: string = "java:projectManagerActivated"; export const SUPPORTED_BUILD_FILES: string = "java:supportedBuildFiles"; + export const NO_JAVA_PEOJECT: string = "java:noJavaProjects"; } export namespace Explorer { diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index 2e482fa3..e28f39c2 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -7,7 +7,9 @@ import { RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace, } from "vscode"; import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper"; +import { contextManager } from "../../extension.bundle"; import { Commands } from "../commands"; +import { Context } from "../constants"; import { newJavaClass, newPackage } from "../explorerCommands/new"; import { executeExportJarTask } from "../exportJarSteps/ExportJarTaskProvider"; import { Jdtls } from "../java/jdtls"; @@ -168,18 +170,16 @@ export class DependencyDataProvider implements TreeDataProvider { kind: NodeKind.Workspace, }, undefined))); this._rootItems = rootItems; - return rootItems; } else { const result: INodeData[] = await Jdtls.getProjects(folders[0].uri.toString()); result.forEach((project) => { rootItems.push(new ProjectNode(project, undefined)); }); this._rootItems = rootItems; - return rootItems; } - } else { - throw new Error("No workspace folder found, please open a folder into the workspace first."); } + contextManager.setContextValue(Context.NO_JAVA_PEOJECT, _.isEmpty(rootItems)); + return rootItems; } finally { this._lock.release(); }