Skip to content

Commit 3eaac3a

Browse files
jdneorgrunber
authored andcommitted
Adopt new createStatusBarItem API
Signed-off-by: Sheng Chen <[email protected]>
1 parent b3cb840 commit 3eaac3a

File tree

4 files changed

+91
-27
lines changed

4 files changed

+91
-27
lines changed

package-lock.json

Lines changed: 59 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,7 @@
11001100
"@types/lodash.findindex": "^4.6.6",
11011101
"@types/mocha": "^5.2.5",
11021102
"@types/node": "^8.10.51",
1103+
"@types/semver": "^7.3.8",
11031104
"@types/vscode": "^1.53.0",
11041105
"@types/winreg": "^1.2.30",
11051106
"@types/winston": "^2.4.4",
@@ -1125,6 +1126,7 @@
11251126
"fs-extra": "^8.1.0",
11261127
"glob": "^7.1.3",
11271128
"vscode-languageclient": "7.1.0-next.5",
1129+
"semver": "^7.3.5",
11281130
"winreg-utf8": "^0.1.1",
11291131
"winston": "^3.2.1",
11301132
"winston-daily-rotate-file": "^3.10.0"

src/runtimeStatusBarProvider.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
'use strict';
22

3-
import { StatusBarItem, window, StatusBarAlignment, TextEditor, Uri, commands, Event, workspace } from "vscode";
3+
import { StatusBarItem, window, StatusBarAlignment, TextEditor, Uri, commands, workspace, version } from "vscode";
44
import { Commands } from "./commands";
55
import { Disposable } from "vscode-languageclient";
66
import * as path from "path";
77
import { apiManager } from "./apiManager";
8+
import * as semver from "semver";
89

910
class RuntimeStatusBarProvider implements Disposable {
1011
private statusBarItem: StatusBarItem;
1112
private javaProjects: Map<string, IProjectInfo>;
1213
private fileProjectMapping: Map<string, string>;
1314
private storagePath: string | undefined;
1415
private disposables: Disposable[];
16+
// Adopt new API for status bar item, meanwhile keep the compatibility with Theia.
17+
// See: https://github.com/redhat-developer/vscode-java/issues/1982
18+
private isAdvancedStatusBarItem: boolean;
1519

1620
constructor() {
1721
this.javaProjects = new Map<string, IProjectInfo>();
1822
this.fileProjectMapping = new Map<string, string>();
1923
this.disposables = [];
24+
this.isAdvancedStatusBarItem = semver.gte(version, "1.57.0");
2025
}
2126

2227
public async initialize(storagePath?: string): Promise<void> {
@@ -25,7 +30,13 @@ class RuntimeStatusBarProvider implements Disposable {
2530
this.storagePath = Uri.file(path.join(storagePath, "..", "..")).fsPath;
2631
}
2732

28-
this.statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, 0);
33+
if (this.isAdvancedStatusBarItem) {
34+
this.statusBarItem = (window.createStatusBarItem as any)("java.runtimeStatus", StatusBarAlignment.Right, 0);
35+
(this.statusBarItem as any).name = "Java Runtime Configuration";
36+
} else {
37+
this.statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, 0);
38+
}
39+
2940
let projectUriStrings: string[];
3041
try {
3142
projectUriStrings = await commands.executeCommand<string[]>(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.GET_ALL_JAVA_PROJECTS);

src/serverStatusBarProvider.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
'use strict';
22

3-
import { StatusBarItem, window, StatusBarAlignment } from "vscode";
3+
import { StatusBarItem, window, StatusBarAlignment, version } from "vscode";
44
import { Commands } from "./commands";
55
import { Disposable } from "vscode-languageclient";
66
import { ServerMode } from "./settings";
7+
import * as semver from "semver";
78

89
class ServerStatusBarProvider implements Disposable {
910
private statusBarItem: StatusBarItem;
11+
// Adopt new API for status bar item, meanwhile keep the compatibility with Theia.
12+
// See: https://github.com/redhat-developer/vscode-java/issues/1982
13+
private isAdvancedStatusBarItem: boolean;
1014

1115
constructor() {
12-
this.statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE);
16+
this.isAdvancedStatusBarItem = semver.gte(version, "1.57.0");
17+
if (this.isAdvancedStatusBarItem) {
18+
this.statusBarItem = (window.createStatusBarItem as any)("java.serverStatus", StatusBarAlignment.Right, Number.MIN_VALUE);
19+
} else {
20+
this.statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE);
21+
}
1322
}
1423

1524
public showLightWeightStatus(): void {
25+
if (this.isAdvancedStatusBarItem) {
26+
(this.statusBarItem as any).name = "Java Server Mode";
27+
}
1628
this.statusBarItem.text = StatusIcon.LightWeight;
1729
this.statusBarItem.command = {
1830
title: "Switch to Standard mode",
@@ -24,6 +36,9 @@ class ServerStatusBarProvider implements Disposable {
2436
}
2537

2638
public showStandardStatus(): void {
39+
if (this.isAdvancedStatusBarItem) {
40+
(this.statusBarItem as any).name = "Java Server Status";
41+
}
2742
this.statusBarItem.text = StatusIcon.Busy;
2843
this.statusBarItem.command = Commands.SHOW_SERVER_TASK_STATUS;
2944
this.statusBarItem.tooltip = "";

0 commit comments

Comments
 (0)