Skip to content

Commit c272be7

Browse files
authored
fix: Do not display Java Project explorer in non-Java workspace (#398)
1 parent b5866bf commit c272be7

16 files changed

+185
-153
lines changed

extension.bundle.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ export { WorkspaceNode } from "./src/views/workspaceNode";
2020
export { contextManager } from "./src/contextManager";
2121
export { DependencyExplorer } from "./src/views/dependencyExplorer";
2222
export { Commands } from "./src/commands";
23-
export { LanguageServerMode } from "./src/extension";
23+
export { LanguageServerMode } from "./src/languageServerApi/LanguageServerMode";

gulpfile.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ gulp.task('build_server', () => {
1616

1717
return gulp.src([
1818
server_dir + '/com.microsoft.jdtls.ext.core/target/com.microsoft.jdtls.ext.core*.jar',
19-
server_dir + '/com.microsoft.jdtls.ext.activator/target/com.microsoft.jdtls.ext.activator*.jar',
2019
])
2120
.pipe(gulp.dest('./server'))
2221
});

package.json

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,15 @@
2121
"homepage": "https://github.com/Microsoft/vscode-java-dependency/blob/master/README.md",
2222
"icon": "logo.png",
2323
"activationEvents": [
24-
"onLanguage:java",
25-
"workspaceContains:pom.xml",
26-
"workspaceContains:.classpath",
27-
"workspaceContains:build.gradle",
28-
"onCommand:java.project.create"
24+
"onCommand:java.project.create",
25+
"onCommand:_java.project.open",
26+
"onView:javaProjectExplorer"
2927
],
3028
"license": "MIT",
3129
"main": "./main.js",
3230
"contributes": {
3331
"javaExtensions": [
34-
"./server/com.microsoft.jdtls.ext.core-0.15.0.jar",
35-
"./server/com.microsoft.jdtls.ext.activator-0.15.0.jar"
32+
"./server/com.microsoft.jdtls.ext.core-0.15.0.jar"
3633
],
3734
"commands": [
3835
{
@@ -216,64 +213,64 @@
216213
"key": "ctrl+alt+r",
217214
"win": "shift+alt+r",
218215
"mac": "cmd+alt+r",
219-
"when": "java:projectManagerActivated && focusedView == javaProjectExplorer"
216+
"when": "java:serverMode == Standard && focusedView == javaProjectExplorer"
220217
},
221218
{
222219
"command": "java.view.package.copyFilePath",
223220
"key": "ctrl+alt+c",
224221
"win": "shift+alt+c",
225222
"mac": "cmd+alt+c",
226-
"when": "java:projectManagerActivated && focusedView == javaProjectExplorer"
223+
"when": "java:serverMode == Standard && focusedView == javaProjectExplorer"
227224
},
228225
{
229226
"command": "java.view.package.copyRelativeFilePath",
230227
"key": "ctrl+shift+alt+c",
231228
"win": "ctrl+k ctrl+shift+c",
232229
"mac": "cmd+shift+alt+c",
233-
"when": "java:projectManagerActivated && focusedView == javaProjectExplorer"
230+
"when": "java:serverMode == Standard && focusedView == javaProjectExplorer"
234231
},
235232
{
236233
"command": "java.view.package.renameFile",
237234
"key": "F2",
238235
"mac": "enter",
239-
"when": "java:projectManagerActivated && focusedView == javaProjectExplorer"
236+
"when": "java:serverMode == Standard && focusedView == javaProjectExplorer"
240237
},
241238
{
242239
"command": "java.view.package.moveFileToTrash",
243240
"key": "delete",
244241
"mac": "cmd+backspace",
245-
"when": "java:projectManagerActivated && focusedView == javaProjectExplorer"
242+
"when": "java:serverMode == Standard && focusedView == javaProjectExplorer"
246243
}
247244
],
248245
"menus": {
249246
"commandPalette": [
250247
{
251248
"command": "java.view.package.refresh",
252-
"when": "java:projectManagerActivated && java:serverMode == Standard"
249+
"when": "java:serverMode == Standard"
253250
},
254251
{
255252
"command": "java.view.package.changeToHierarchicalPackageView",
256-
"when": "java:projectManagerActivated && java:serverMode == Standard"
253+
"when": "java:serverMode == Standard"
257254
},
258255
{
259256
"command": "java.view.package.changeToFlatPackageView",
260-
"when": "java:projectManagerActivated && java:serverMode == Standard"
257+
"when": "java:serverMode == Standard"
261258
},
262259
{
263260
"command": "java.view.package.linkWithFolderExplorer",
264-
"when": "java:projectManagerActivated && java:serverMode == Standard"
261+
"when": "java:serverMode == Standard"
265262
},
266263
{
267264
"command": "java.view.package.unlinkWithFolderExplorer",
268-
"when": "java:projectManagerActivated && java:serverMode == Standard"
265+
"when": "java:serverMode == Standard"
269266
},
270267
{
271268
"command": "java.view.package.revealFileInOS",
272269
"when": "false"
273270
},
274271
{
275272
"command": "java.view.package.exportJar",
276-
"when": "java:projectManagerActivated && java:serverMode == Standard"
273+
"when": "java:serverMode == Standard"
277274
},
278275
{
279276
"command": "java.view.package.copyFilePath",
@@ -331,71 +328,71 @@
331328
"explorer/context": [
332329
{
333330
"command": "java.view.package.revealInProjectExplorer",
334-
"when": "resourceFilename in java:supportedBuildFiles && java:projectManagerActivated && java:serverMode == Standard",
331+
"when": "resourceFilename in java:supportedBuildFiles && java:serverMode == Standard",
335332
"group": "navigation@100"
336333
},
337334
{
338335
"command": "java.view.package.revealInProjectExplorer",
339-
"when": "resourceExtname == .java && java:projectManagerActivated && java:serverMode == Standard",
336+
"when": "resourceExtname == .java && java:serverMode == Standard",
340337
"group": "navigation@100"
341338
}
342339
],
343340
"editor/title/context": [
344341
{
345342
"command": "java.view.package.revealInProjectExplorer",
346-
"when": "resourceFilename in java:supportedBuildFiles && java:projectManagerActivated && java:serverMode == Standard",
343+
"when": "resourceFilename in java:supportedBuildFiles && java:serverMode == Standard",
347344
"group": "2_files@100"
348345
},
349346
{
350347
"command": "java.view.package.revealInProjectExplorer",
351-
"when": "resourceExtname == .java && java:projectManagerActivated && java:serverMode == Standard",
348+
"when": "resourceExtname == .java && java:serverMode == Standard",
352349
"group": "2_files@100"
353350
}
354351
],
355352
"view/title": [
356353
{
357354
"command": "java.project.create",
358-
"when": "view == javaProjectExplorer && java:projectManagerActivated && java:serverMode == Standard",
355+
"when": "view == javaProjectExplorer && java:serverMode == Standard",
359356
"group": "navigation@10"
360357
},
361358
{
362359
"command": "java.view.package.exportJar",
363-
"when": "view == javaProjectExplorer && java:projectManagerActivated && java:serverMode == Standard && workspaceFolderCount != 0",
360+
"when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0",
364361
"group": "navigation@20"
365362
},
366363
{
367364
"command": "java.view.package.refresh",
368-
"when": "view == javaProjectExplorer && java:projectManagerActivated && java:serverMode == Standard",
365+
"when": "view == javaProjectExplorer && java:serverMode == Standard",
369366
"group": "navigation@30"
370367
},
371368
{
372369
"command": "java.view.package.changeToHierarchicalPackageView",
373-
"when": "view == javaProjectExplorer && java:projectManagerActivated && config.java.dependency.packagePresentation == flat && java:serverMode == Standard",
370+
"when": "view == javaProjectExplorer && java:serverMode == Standard && config.java.dependency.packagePresentation == flat",
374371
"group": "overflow_10@10"
375372
},
376373
{
377374
"command": "java.view.package.changeToFlatPackageView",
378-
"when": "view == javaProjectExplorer && java:projectManagerActivated && config.java.dependency.packagePresentation != flat && java:serverMode == Standard",
375+
"when": "view == javaProjectExplorer && java:serverMode == Standard && config.java.dependency.packagePresentation != flat",
379376
"group": "overflow_10@10"
380377
},
381378
{
382379
"command": "java.view.package.linkWithFolderExplorer",
383-
"when": "view == javaProjectExplorer && java:projectManagerActivated && config.java.dependency.syncWithFolderExplorer != true && java:serverMode == Standard",
380+
"when": "view == javaProjectExplorer && java:serverMode == Standard && config.java.dependency.syncWithFolderExplorer != true",
384381
"group": "overflow_10@20"
385382
},
386383
{
387384
"command": "java.view.package.unlinkWithFolderExplorer",
388-
"when": "view == javaProjectExplorer && java:projectManagerActivated && config.java.dependency.syncWithFolderExplorer == true && java:serverMode == Standard",
385+
"when": "view == javaProjectExplorer && java:serverMode == Standard && config.java.dependency.syncWithFolderExplorer == true",
389386
"group": "overflow_10@20"
390387
},
391388
{
392389
"command": "java.project.build.workspace",
393-
"when": "view == javaProjectExplorer && java:projectManagerActivated && java:serverMode == Standard && workspaceFolderCount != 0",
390+
"when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0",
394391
"group": "overflow_20@10"
395392
},
396393
{
397394
"command": "java.project.clean.workspace",
398-
"when": "view == javaProjectExplorer && java:projectManagerActivated && java:serverMode == Standard && workspaceFolderCount != 0",
395+
"when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0",
399396
"group": "overflow_20@20"
400397
}
401398
],
@@ -496,20 +493,21 @@
496493
"explorer": [
497494
{
498495
"id": "javaProjectExplorer",
499-
"name": "Java Projects"
496+
"name": "Java Projects",
497+
"when": "java:serverMode"
500498
}
501499
]
502500
},
503501
"viewsWelcome": [
504502
{
505-
"view": "javaProjectExplorer",
506-
"contents": "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)",
507-
"when": "java:serverMode == LightWeight"
503+
"view": "explorer",
504+
"contents": "%viewsWelcome.workbench.createNewJavaProject%",
505+
"when": "workspaceFolderCount == 0"
508506
},
509507
{
510508
"view": "javaProjectExplorer",
511-
"contents": "You can create a new Java project by clicking the below button.\n[Create new Java project](command:java.project.create)",
512-
"when": "!java:projectManagerActivated || java:serverMode != Standard"
509+
"contents": "%viewsWelcome.workbench.inLightWeightMode%",
510+
"when": "java:serverMode == LightWeight"
513511
}
514512
],
515513
"taskDefinitions": [

package.nls.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,7 @@
3535
"taskDefinitions.java.project.exportJar.compileOutput": "The folders containing output class files in the runtime scope.",
3636
"taskDefinitions.java.project.exportJar.testCompileOutput": "The folders containing output class files in the test scope.",
3737
"taskDefinitions.java.project.exportJar.dependencies": "The artifact dependencies in the runtime scope.",
38-
"taskDefinitions.java.project.exportJar.testDependencies": "The artifact dependencies in the test scope."
38+
"taskDefinitions.java.project.exportJar.testDependencies": "The artifact dependencies in the test scope.",
39+
"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.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)"
3941
}

package.nls.zh.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,7 @@
3535
"taskDefinitions.java.project.exportJar.compileOutput": "在 runtime scope 内包含输出的 class 文件的文件夹。",
3636
"taskDefinitions.java.project.exportJar.testCompileOutput": "在 test scope 内包含输出的 class 文件的文件夹。",
3737
"taskDefinitions.java.project.exportJar.dependencies": "在 runtime scope 内的依赖。",
38-
"taskDefinitions.java.project.exportJar.testDependencies": "在 test scope 内的依赖。"
38+
"taskDefinitions.java.project.exportJar.testDependencies": "在 test scope 内的依赖。",
39+
"viewsWelcome.workbench.createNewJavaProject": "您也可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)",
40+
"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)"
3941
}

src/commands.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ export namespace Commands {
4242

4343
export const VIEW_PACKAGE_REVEAL_IN_PROJECT_EXPLORER = "java.view.package.revealInProjectExplorer";
4444

45+
export const JAVA_PROJECT_OPEN = "_java.project.open";
46+
4547
export const JAVA_PROJECT_CREATE = "java.project.create";
4648

4749
export const JAVA_PROJECT_ADD_LIBRARIES = "java.project.addLibraries";
@@ -58,10 +60,6 @@ export namespace Commands {
5860

5961
export const JAVA_PROJECT_EXPLORER_FOCUS = "javaProjectExplorer.focus";
6062

61-
export const JAVA_PROJECT_ACTIVATE = "java.project.activate";
62-
63-
export const JAVA_MAVEN_CREATE_PROJECT = "maven.archetype.generate";
64-
6563
export const JAVA_PROJECT_LIST = "java.project.list";
6664

6765
export const JAVA_PROJECT_REFRESH_LIB_SERVER = "java.project.refreshLib";
@@ -74,17 +72,24 @@ export namespace Commands {
7472

7573
export const JAVA_PROJECT_GENERATEJAR = "java.project.generateJar";
7674

77-
export const VSCODE_OPEN_FOLDER = "vscode.openFolder";
78-
79-
export const VSCODE_OPEN = "vscode.open";
80-
8175
export const JAVA_BUILD_WORKSPACE = "java.workspace.compile";
8276

8377
export const JAVA_CLEAN_WORKSPACE = "java.clean.workspace";
8478

8579
export const JAVA_PROJECT_CONFIGURATION_UPDATE = "java.projectConfiguration.update";
8680

8781
export const JAVA_RESOLVE_BUILD_FILES = "vscode.java.resolveBuildFiles";
82+
83+
/**
84+
* Commands from Visual Studio Code
85+
*/
86+
export const VSCODE_OPEN_FOLDER = "vscode.openFolder";
87+
88+
export const VSCODE_OPEN = "vscode.open";
89+
90+
export const WORKBENCH_ACTION_FILES_OPENFOLDER = "workbench.action.files.openFolder";
91+
92+
export const WORKBENCH_ACTION_FILES_OPENFILEFOLDER = "workbench.action.files.openFileFolder";
8893
}
8994

9095
export function executeJavaLanguageServerCommand(...rest) {

src/controllers/projectController.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,22 @@ export class ProjectController implements Disposable {
1616
public constructor(public readonly context: ExtensionContext) {
1717
this.disposable = Disposable.from(
1818
instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_CREATE, () => this.createJavaProject()),
19+
instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_OPEN, () => this.openJavaProject()),
1920
);
2021
}
2122

2223
public dispose() {
2324
this.disposable.dispose();
2425
}
2526

27+
public async openJavaProject() {
28+
const availableCommands: string[] = await commands.getCommands();
29+
if (availableCommands.includes(Commands.WORKBENCH_ACTION_FILES_OPENFOLDER)) {
30+
return commands.executeCommand(Commands.WORKBENCH_ACTION_FILES_OPENFOLDER);
31+
}
32+
return commands.executeCommand(Commands.WORKBENCH_ACTION_FILES_OPENFILEFOLDER);
33+
}
34+
2635
public async createJavaProject() {
2736
const items: IProjectTypeQuickPick[] = projectTypes.map((type: IProjectType) => {
2837
return {

src/exportJarSteps/ExportJarTaskProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import {
1111
TaskProvider, TaskRevealKind, tasks, TerminalDimensions, Uri, workspace, WorkspaceFolder,
1212
} from "vscode";
1313
import { buildWorkspace } from "../build";
14-
import { isStandardServerReady } from "../extension";
1514
import { Jdtls } from "../java/jdtls";
1615
import { INodeData } from "../java/nodeData";
16+
import { languageServerApiManager } from "../languageServerApi/languageServerApiManager";
1717
import { Settings } from "../settings";
1818
import { IUriData, Trie, TrieNode } from "../views/nodeCache/Trie";
1919
import { IClasspathResult } from "./GenerateJarExecutor";
@@ -31,7 +31,7 @@ interface IExportJarTaskDefinition extends TaskDefinition {
3131
let isExportingJar: boolean = false;
3232

3333
export async function executeExportJarTask(node?: INodeData): Promise<void> {
34-
if (!isStandardServerReady() || isExportingJar || await buildWorkspace() === false) {
34+
if (!await languageServerApiManager.isStandardServerReady() || isExportingJar || await buildWorkspace() === false) {
3535
return;
3636
}
3737
isExportingJar = true;

0 commit comments

Comments
 (0)