Skip to content
This repository was archived by the owner on Jul 31, 2022. It is now read-only.

Commit ef4455b

Browse files
ortaacao
authored andcommitted
Use the theme API to set the right colours for the status bar item
1 parent 63491f1 commit ef4455b

File tree

1 file changed

+53
-48
lines changed

1 file changed

+53
-48
lines changed

src/status/index.ts

Lines changed: 53 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,105 @@
1-
import { StatusBarAlignment, StatusBarItem, TextEditor, window } from "vscode";
2-
import { LanguageClient, State } from "vscode-languageclient";
1+
import {
2+
StatusBarAlignment,
3+
StatusBarItem,
4+
TextEditor,
5+
window,
6+
ThemeColor,
7+
} from "vscode"
8+
import { LanguageClient, State } from "vscode-languageclient"
39

410
enum Status {
511
INIT = 1,
612
RUNNING = 2,
7-
ERROR = 3
13+
ERROR = 3,
814
}
915

10-
const statusBarText = "GraphQL";
16+
const statusBarText = "GraphQL"
1117
const statusBarUIElements = {
1218
[Status.INIT]: {
1319
icon: "sync",
14-
color: "white",
15-
tooltip: "GraphQL language server is initializing"
20+
tooltip: "GraphQL language server is initializing",
1621
},
1722
[Status.RUNNING]: {
1823
icon: "plug",
19-
color: "white",
20-
tooltip: "GraphQL language server is running"
24+
tooltip: "GraphQL language server is running",
2125
},
2226
[Status.ERROR]: {
2327
icon: "stop",
24-
color: "red",
25-
tooltip: "GraphQL language server has stopped"
26-
}
27-
};
28-
const statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, 0);
29-
let extensionStatus: Status = Status.RUNNING;
30-
let serverRunning: boolean = true; // TODO: See comment with client.onNotification("init".....
28+
color: new ThemeColor("list.warningForeground"),
29+
tooltip: "GraphQL language server has stopped",
30+
},
31+
}
32+
const statusBarItem = window.createStatusBarItem(StatusBarAlignment.Right, 0)
33+
let extensionStatus: Status = Status.RUNNING
34+
let serverRunning: boolean = true // TODO: See comment with client.onNotification("init".....
3135
const statusBarActivationLanguageIds = [
3236
"graphql",
3337
"javascript",
3438
"javascriptreact",
3539
"typescript",
36-
"typescriptreact"
37-
];
40+
"typescriptreact",
41+
]
3842

3943
function initStatusBar(
4044
statusBarItem: StatusBarItem,
4145
client: LanguageClient,
42-
editor: TextEditor | undefined
46+
editor: TextEditor | undefined,
4347
) {
44-
extensionStatus = Status.INIT;
48+
extensionStatus = Status.INIT
4549
// TODO: Make graphql-language-service-server throw relevant
4650
// notifications. Currently, it does not throw "init" or "exit"
4751
// and status bar is hard coded to all greens.
4852
client.onNotification("init", params => {
49-
extensionStatus = Status.RUNNING;
50-
serverRunning = true;
51-
updateStatusBar(statusBarItem, editor);
52-
});
53+
extensionStatus = Status.RUNNING
54+
serverRunning = true
55+
updateStatusBar(statusBarItem, editor)
56+
})
5357
client.onNotification("exit", params => {
54-
extensionStatus = Status.ERROR;
55-
serverRunning = false;
56-
updateStatusBar(statusBarItem, editor);
57-
});
58+
extensionStatus = Status.ERROR
59+
serverRunning = false
60+
updateStatusBar(statusBarItem, editor)
61+
})
5862

5963
client.onDidChangeState(event => {
6064
if (event.newState === State.Running) {
61-
extensionStatus = Status.RUNNING;
62-
serverRunning = true;
65+
extensionStatus = Status.RUNNING
66+
serverRunning = true
6367
} else {
64-
extensionStatus = Status.ERROR;
65-
client.info("The graphql server has stopped running");
66-
serverRunning = false;
68+
extensionStatus = Status.ERROR
69+
client.info("The graphql server has stopped running")
70+
serverRunning = false
6771
}
68-
updateStatusBar(statusBarItem, editor);
69-
});
70-
updateStatusBar(statusBarItem, editor);
72+
updateStatusBar(statusBarItem, editor)
73+
})
74+
updateStatusBar(statusBarItem, editor)
7175

7276
window.onDidChangeActiveTextEditor((editor: TextEditor | undefined) => {
7377
// update the status if the server is running
74-
updateStatusBar(statusBarItem, editor);
75-
});
78+
updateStatusBar(statusBarItem, editor)
79+
})
7680
}
7781

7882
function updateStatusBar(
7983
statusBarItem: StatusBarItem,
80-
editor: TextEditor | undefined
84+
editor: TextEditor | undefined,
8185
) {
82-
extensionStatus = serverRunning ? Status.RUNNING : Status.ERROR;
83-
const statusUI = statusBarUIElements[extensionStatus];
84-
statusBarItem.text = `$(${statusUI.icon}) ${statusBarText}`;
85-
statusBarItem.tooltip = statusUI.tooltip;
86-
statusBarItem.command = "vscode-graphql.isDebugging";
87-
statusBarItem.color = statusUI.color;
86+
extensionStatus = serverRunning ? Status.RUNNING : Status.ERROR
87+
88+
const statusUI = statusBarUIElements[extensionStatus]
89+
statusBarItem.text = `$(${statusUI.icon}) ${statusBarText}`
90+
statusBarItem.tooltip = statusUI.tooltip
91+
statusBarItem.command = "vscode-graphql.isDebugging"
92+
if ("color" in statusUI) statusBarItem.color = statusUI.color
8893

8994
if (
9095
editor &&
9196
statusBarActivationLanguageIds.indexOf(editor.document.languageId) > -1
9297
) {
93-
statusBarItem.show();
98+
statusBarItem.show()
9499
} else {
95-
statusBarItem.hide();
100+
statusBarItem.hide()
96101
}
97102
}
98103

99-
export default statusBarItem;
100-
export { statusBarItem, initStatusBar, updateStatusBar };
104+
export default statusBarItem
105+
export { statusBarItem, initStatusBar, updateStatusBar }

0 commit comments

Comments
 (0)