mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-08 17:24:01 -05:00
71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
'use strict';
|
|
|
|
// This code is originally from https://github.com/DonJayamanne/bowerVSCode
|
|
// License: https://github.com/DonJayamanne/bowerVSCode/blob/master/LICENSE
|
|
|
|
import { window, StatusBarItem, StatusBarAlignment } from 'vscode';
|
|
|
|
export default class ProgressIndicator {
|
|
|
|
private _statusBarItem: StatusBarItem;
|
|
|
|
constructor() {
|
|
this._statusBarItem = window.createStatusBarItem(StatusBarAlignment.Left);
|
|
}
|
|
|
|
private _tasks: string[] = [];
|
|
public beginTask(task: string): void {
|
|
this._tasks.push(task);
|
|
this.displayProgressIndicator();
|
|
}
|
|
|
|
public endTask(task: string): void {
|
|
if (this._tasks.length > 0) {
|
|
this._tasks.pop();
|
|
}
|
|
|
|
this.setMessage();
|
|
}
|
|
|
|
private setMessage(): void {
|
|
if (this._tasks.length === 0) {
|
|
this._statusBarItem.text = '';
|
|
this.hideProgressIndicator();
|
|
return;
|
|
}
|
|
|
|
this._statusBarItem.text = this._tasks[this._tasks.length - 1];
|
|
this._statusBarItem.show();
|
|
}
|
|
|
|
private _interval: any;
|
|
private displayProgressIndicator(): void {
|
|
this.setMessage();
|
|
this.hideProgressIndicator();
|
|
this._interval = setInterval(() => this.onDisplayProgressIndicator(), 100);
|
|
}
|
|
private hideProgressIndicator(): void {
|
|
if (this._interval) {
|
|
clearInterval(this._interval);
|
|
this._interval = undefined;
|
|
}
|
|
this.ProgressCounter = 0;
|
|
}
|
|
|
|
private ProgressText = ['|', '/', '-', '\\', '|', '/', '-', '\\'];
|
|
private ProgressCounter = 0;
|
|
private onDisplayProgressIndicator(): void {
|
|
if (this._tasks.length === 0) {
|
|
return;
|
|
}
|
|
|
|
let txt = this.ProgressText[this.ProgressCounter];
|
|
this._statusBarItem.text = this._tasks[this._tasks.length - 1] + ' ' + txt;
|
|
this.ProgressCounter++;
|
|
|
|
if (this.ProgressCounter >= this.ProgressText.length - 1) {
|
|
this.ProgressCounter = 0;
|
|
}
|
|
}
|
|
}
|