Skip to content

Commit 65a6431

Browse files
authored
Make the server status as a normal status bar item (#3419)
Signed-off-by: Sheng Chen <[email protected]>
1 parent fa70956 commit 65a6431

File tree

3 files changed

+28
-157
lines changed

3 files changed

+28
-157
lines changed

src/extension.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,6 @@ export async function activate(context: ExtensionContext): Promise<ExtensionAPI>
129129

130130
cleanJavaWorkspaceStorage();
131131

132-
serverStatusBarProvider.initialize();
133-
134132
return requirements.resolveRequirements(context).catch(error => {
135133
// show error
136134
window.showErrorMessage(error.message, error.label).then((selection) => {

src/languageStatusItemFactory.ts

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import * as path from "path";
44
import * as vscode from "vscode";
55
import { Commands } from "./commands";
6-
import { StatusIcon } from "./serverStatusBarProvider";
76

87
const languageServerDocumentSelector = [
98
{ scheme: 'file', language: 'java' },
@@ -47,77 +46,6 @@ export namespace StatusCommands {
4746
};
4847
}
4948

50-
export namespace ServerStatusItemFactory {
51-
export function create(): any {
52-
if (supportsLanguageStatus()) {
53-
const item = vscode.languages.createLanguageStatusItem("JavaServerStatusItem", languageServerDocumentSelector);
54-
item.name = "Java Language Server Status";
55-
return item;
56-
}
57-
return undefined;
58-
}
59-
60-
export function showLightWeightStatus(item: any): void {
61-
item.severity = vscode.LanguageStatusSeverity?.Warning;
62-
item.text = StatusIcon.lightWeight;
63-
item.detail = "Lightweight Mode";
64-
item.command = StatusCommands.switchToStandardCommand;
65-
}
66-
67-
export function showNotImportedStatus(item: any): void {
68-
item.severity = vscode.LanguageStatusSeverity?.Warning;
69-
item.text = "No projects are imported";
70-
item.command = StatusCommands.startStandardServerCommand;
71-
}
72-
73-
export function showStandardStatus(item: any): void {
74-
item.severity = vscode.LanguageStatusSeverity?.Information;
75-
item.command = StatusCommands.showServerStatusCommand;
76-
}
77-
78-
export function setBusy(item: any): void {
79-
if (item.busy === true) {
80-
return;
81-
}
82-
item.text = "Building";
83-
item.busy = true;
84-
}
85-
86-
export function setError(item: any): void {
87-
item.busy = false;
88-
item.severity = vscode.LanguageStatusSeverity?.Error;
89-
item.command = {
90-
title: "Open logs",
91-
command: Commands.OPEN_LOGS
92-
};
93-
item.text = StatusIcon.error;
94-
item.detail = "Errors occurred in initializing language server";
95-
}
96-
97-
export function setWarning(item: any): void {
98-
item.busy = false;
99-
item.severity = vscode.LanguageStatusSeverity?.Error;
100-
item.command = {
101-
title: "Show PROBLEMS Panel",
102-
command: "workbench.panel.markers.view.focus",
103-
tooltip: "Errors occurred in project configurations, click to show the PROBLEMS panel"
104-
};
105-
item.text = StatusIcon.warning;
106-
item.detail = "Project Configuration Error";
107-
}
108-
109-
export function setReady(item: any): void {
110-
if (item.text === StatusIcon.ready) {
111-
return;
112-
}
113-
item.busy = false;
114-
item.severity = vscode.LanguageStatusSeverity?.Information;
115-
item.command = StatusCommands.showServerStatusCommand;
116-
item.text = StatusIcon.ready;
117-
item.detail = "";
118-
}
119-
}
120-
12149
export namespace RuntimeStatusItemFactory {
12250
export function create(text: string, vmInstallPath: string): any {
12351
if (supportsLanguageStatus()) {

src/serverStatusBarProvider.ts

Lines changed: 28 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,68 @@
11
'use strict';
22

3-
import { StatusBarItem, window, StatusBarAlignment, version } from "vscode";
3+
import { StatusBarItem, window, StatusBarAlignment } from "vscode";
44
import { Commands } from "./commands";
55
import { Disposable } from "vscode-languageclient";
6-
import * as semver from "semver";
7-
import { ServerStatusItemFactory, StatusCommands, supportsLanguageStatus } from "./languageStatusItemFactory";
6+
import { StatusCommands } from "./languageStatusItemFactory";
87

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

1611
constructor() {
17-
this.isAdvancedStatusBarItem = semver.gte(version, "1.57.0");
18-
}
19-
20-
public initialize(): void {
21-
if (supportsLanguageStatus()) {
22-
this.languageStatusItem = ServerStatusItemFactory.create();
23-
} else {
24-
if (this.isAdvancedStatusBarItem) {
25-
this.statusBarItem = (window.createStatusBarItem as any)("java.serverStatus", StatusBarAlignment.Right, Number.MIN_VALUE);
26-
} else {
27-
this.statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE);
28-
}
29-
}
12+
this.statusBarItem = window.createStatusBarItem("java.serverStatus", StatusBarAlignment.Right, Number.MIN_VALUE);
3013
}
3114

3215
public showLightWeightStatus(): void {
33-
if (supportsLanguageStatus()) {
34-
ServerStatusItemFactory.showLightWeightStatus(this.languageStatusItem);
35-
} else {
36-
if (this.isAdvancedStatusBarItem) {
37-
(this.statusBarItem as any).name = "Java Server Mode";
38-
}
39-
this.statusBarItem.text = StatusIcon.lightWeight;
40-
this.statusBarItem.command = StatusCommands.switchToStandardCommand;
41-
this.statusBarItem.tooltip = "Java language server is running in LightWeight mode, click to switch to Standard mode";
42-
this.statusBarItem.show();
43-
}
16+
this.statusBarItem.name = "Java Server Mode";
17+
this.statusBarItem.text = StatusIcon.lightWeight;
18+
this.statusBarItem.command = StatusCommands.switchToStandardCommand;
19+
this.statusBarItem.tooltip = "Java language server is running in LightWeight mode, click to switch to Standard mode";
20+
this.statusBarItem.show();
4421
}
4522

4623
public showNotImportedStatus(): void {
47-
if (supportsLanguageStatus()) {
48-
ServerStatusItemFactory.showNotImportedStatus(this.languageStatusItem);
49-
} else {
50-
if (this.isAdvancedStatusBarItem) {
51-
(this.statusBarItem as any).name = "No projects are imported";
52-
}
53-
this.statusBarItem.text = StatusIcon.notImported;
54-
this.statusBarItem.command = StatusCommands.startStandardServerCommand;
55-
this.statusBarItem.tooltip = "No projects are imported, click to load projects";
56-
this.statusBarItem.show();
57-
}
24+
this.statusBarItem.name = "No projects are imported";
25+
this.statusBarItem.text = StatusIcon.notImported;
26+
this.statusBarItem.command = StatusCommands.startStandardServerCommand;
27+
this.statusBarItem.tooltip = "No projects are imported, click to load projects";
28+
this.statusBarItem.show();
5829
}
5930

6031
public showStandardStatus(): void {
61-
if (supportsLanguageStatus()) {
62-
ServerStatusItemFactory.showStandardStatus(this.languageStatusItem);
63-
ServerStatusItemFactory.setBusy(this.languageStatusItem);
64-
} else {
65-
if (this.isAdvancedStatusBarItem) {
66-
(this.statusBarItem as any).name = "Java Server Status";
67-
}
68-
this.statusBarItem.text = StatusIcon.busy;
69-
this.statusBarItem.command = Commands.SHOW_SERVER_TASK_STATUS;
70-
this.statusBarItem.tooltip = "";
71-
this.statusBarItem.show();
72-
}
32+
this.statusBarItem.name = "Java Server Status";
33+
this.statusBarItem.text = StatusIcon.busy;
34+
this.statusBarItem.command = Commands.SHOW_SERVER_TASK_STATUS;
35+
this.statusBarItem.tooltip = "";
36+
this.statusBarItem.show();
7337
}
7438

7539
public setBusy(): void {
76-
if (supportsLanguageStatus()) {
77-
ServerStatusItemFactory.setBusy(this.languageStatusItem);
78-
} else {
79-
this.statusBarItem.text = StatusIcon.busy;
80-
}
40+
this.statusBarItem.text = StatusIcon.busy;
8141
}
8242

8343
public setError(): void {
84-
if (supportsLanguageStatus()) {
85-
ServerStatusItemFactory.setError(this.languageStatusItem);
86-
} else {
87-
this.statusBarItem.text = StatusIcon.error;
88-
this.statusBarItem.command = Commands.OPEN_LOGS;
89-
}
44+
this.statusBarItem.text = StatusIcon.error;
45+
this.statusBarItem.command = Commands.OPEN_LOGS;
9046
}
9147

9248
public setWarning(): void {
93-
if (supportsLanguageStatus()) {
94-
ServerStatusItemFactory.setWarning(this.languageStatusItem);
95-
} else {
96-
this.statusBarItem.text = StatusIcon.warning;
97-
this.statusBarItem.command = "workbench.panel.markers.view.focus";
98-
this.statusBarItem.tooltip = "Errors occurred in project configurations, click to show the PROBLEMS panel";
99-
}
49+
this.statusBarItem.text = StatusIcon.warning;
50+
this.statusBarItem.command = "workbench.panel.markers.view.focus";
51+
this.statusBarItem.tooltip = "Errors occurred in project configurations, click to show the PROBLEMS panel";
10052
}
10153

10254
public setReady(): void {
103-
if (supportsLanguageStatus()) {
104-
ServerStatusItemFactory.setReady(this.languageStatusItem);
105-
} else {
106-
this.statusBarItem.text = StatusIcon.ready;
107-
this.statusBarItem.command = Commands.SHOW_SERVER_TASK_STATUS;
108-
this.statusBarItem.tooltip = "ServiceReady";
109-
}
55+
this.statusBarItem.text = StatusIcon.ready;
56+
this.statusBarItem.command = Commands.SHOW_SERVER_TASK_STATUS;
57+
this.statusBarItem.tooltip = "ServiceReady";
11058
}
11159

11260
public updateTooltip(tooltip: string): void {
113-
if (!supportsLanguageStatus()) {
114-
this.statusBarItem.tooltip = tooltip;
115-
}
61+
this.statusBarItem.tooltip = tooltip;
11662
}
11763

11864
public dispose(): void {
11965
this.statusBarItem?.dispose();
120-
this.languageStatusItem?.dispose();
12166
}
12267
}
12368

0 commit comments

Comments
 (0)