Skip to content

Commit f780af8

Browse files
authored
fix: Show welcome view when no Java projects in workspace (#461)
1 parent 54911c3 commit f780af8

File tree

5 files changed

+17
-9
lines changed

5 files changed

+17
-9
lines changed

package.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -369,12 +369,12 @@
369369
},
370370
{
371371
"command": "java.view.package.exportJar",
372-
"when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0",
372+
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
373373
"group": "navigation@20"
374374
},
375375
{
376376
"command": "java.view.package.refresh",
377-
"when": "view == javaProjectExplorer && java:serverMode == Standard",
377+
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
378378
"group": "navigation@30"
379379
},
380380
{
@@ -399,12 +399,12 @@
399399
},
400400
{
401401
"command": "java.project.build.workspace",
402-
"when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0",
402+
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
403403
"group": "overflow_20@10"
404404
},
405405
{
406406
"command": "java.project.clean.workspace",
407-
"when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0",
407+
"when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects",
408408
"group": "overflow_20@20"
409409
}
410410
],
@@ -519,6 +519,11 @@
519519
"contents": "%viewsWelcome.workbench.createNewJavaProject%",
520520
"when": "workspaceFolderCount == 0"
521521
},
522+
{
523+
"view": "javaProjectExplorer",
524+
"contents": "%viewsWelcome.workbench.noJavaProject%",
525+
"when": "java:noJavaProjects"
526+
},
522527
{
523528
"view": "javaProjectExplorer",
524529
"contents": "%viewsWelcome.workbench.inLightWeightMode%",

package.nls.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"taskDefinitions.java.project.exportJar.testCompileOutput": "The folders containing output class files in the test scope.",
3838
"taskDefinitions.java.project.exportJar.dependencies": "The artifact dependencies in the runtime scope.",
3939
"taskDefinitions.java.project.exportJar.testDependencies": "The artifact dependencies in the test scope.",
40-
"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)",
40+
"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)",
41+
"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)",
4142
"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)"
4243
}

package.nls.zh.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@
3838
"taskDefinitions.java.project.exportJar.dependencies": "在 runtime scope 内的依赖。",
3939
"taskDefinitions.java.project.exportJar.testDependencies": "在 test scope 内的依赖。",
4040
"viewsWelcome.workbench.createNewJavaProject": "您也可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)",
41+
"viewsWelcome.workbench.noJavaProject": "当前工作空间未发现 Java 项目,您可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)",
4142
"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)"
4243
}

src/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
export namespace Context {
55
export const EXTENSION_ACTIVATED: string = "java:projectManagerActivated";
66
export const SUPPORTED_BUILD_FILES: string = "java:supportedBuildFiles";
7+
export const NO_JAVA_PEOJECT: string = "java:noJavaProjects";
78
}
89

910
export namespace Explorer {

src/views/dependencyDataProvider.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import {
77
RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace,
88
} from "vscode";
99
import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper";
10+
import { contextManager } from "../../extension.bundle";
1011
import { Commands } from "../commands";
12+
import { Context } from "../constants";
1113
import { newJavaClass, newPackage } from "../explorerCommands/new";
1214
import { executeExportJarTask } from "../exportJarSteps/ExportJarTaskProvider";
1315
import { Jdtls } from "../java/jdtls";
@@ -168,18 +170,16 @@ export class DependencyDataProvider implements TreeDataProvider<ExplorerNode> {
168170
kind: NodeKind.Workspace,
169171
}, undefined)));
170172
this._rootItems = rootItems;
171-
return rootItems;
172173
} else {
173174
const result: INodeData[] = await Jdtls.getProjects(folders[0].uri.toString());
174175
result.forEach((project) => {
175176
rootItems.push(new ProjectNode(project, undefined));
176177
});
177178
this._rootItems = rootItems;
178-
return rootItems;
179179
}
180-
} else {
181-
throw new Error("No workspace folder found, please open a folder into the workspace first.");
182180
}
181+
contextManager.setContextValue(Context.NO_JAVA_PEOJECT, _.isEmpty(rootItems));
182+
return rootItems;
183183
} finally {
184184
this._lock.release();
185185
}

0 commit comments

Comments
 (0)