提交 1f102d1c 编写于 作者: J Johannes Rieken

add IProgressService2#withViewletProgress

上级 1afab52e
......@@ -9,3 +9,9 @@
background-position: left;
padding-left: 14px;
}
.monaco-workbench .progress-badge > .badge-content {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMiAyIDE0IDE0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDIgMiAxNCAxNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTkgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTdjMy44NTkgMCA3IDMuMTQxIDcgN3MtMy4xNDEgNy03IDd6bTAtMTIuNmMtMy4wODggMC01LjYgMi41MTMtNS42IDUuNnMyLjUxMiA1LjYgNS42IDUuNiA1LjYtMi41MTIgNS42LTUuNi0yLjUxMi01LjYtNS42LTUuNnptMy44NiA3LjFsLTMuMTYtMS44OTZ2LTMuODA0aC0xLjR2NC41OTZsMy44NCAyLjMwNS43Mi0xLjIwMXoiLz48L3N2Zz4=");
background-position: center center;
background-repeat: no-repeat;
}
......@@ -12,8 +12,32 @@ import { IProgressService2, IProgress, Progress } from 'vs/platform/progress/com
import { OcticonLabel } from 'vs/base/browser/ui/octiconLabel/octiconLabel';
import { StatusbarAlignment, IStatusbarRegistry, StatusbarItemDescriptor, Extensions, IStatusbarItem } from 'vs/workbench/browser/parts/statusbar/statusbar';
import { TPromise } from 'vs/base/common/winjs.base';
import { IActivityBarService, ProgressBadge } from 'vs/workbench/services/activity/common/activityBarService';
import * as dom from 'vs/base/browser/dom';
class ActivityBarProgress implements IProgress<number> {
private _handle: IDisposable;
constructor(
private _activityBar: IActivityBarService,
private _viewletId: string) {
}
dispose(): void {
if (this._handle) {
this._handle.dispose();
this._handle = undefined;
}
}
report(n: number): void {
if (!this._handle) {
this._handle = this._activityBar.showActivity(this._viewletId, new ProgressBadge(() => '...'), 'progress-badge');
}
}
}
class WindowProgressItem implements IStatusbarItem {
......@@ -54,6 +78,12 @@ export class ProgressService2 implements IProgressService2 {
private _stack: Progress<string>[] = [];
constructor(
@IActivityBarService private _activityBar: IActivityBarService
) {
//
}
withWindowProgress(task: (progress: IProgress<string>) => TPromise<any>): void {
const progress = new Progress<string>(() => this._updateProgress());
......@@ -68,6 +98,11 @@ export class ProgressService2 implements IProgressService2 {
});
}
withViewletProgress(viewletId: string, task: (progress: IProgress<number>) => TPromise<any>): void {
const progress = new ActivityBarProgress(this._activityBar, viewletId);
always(task(progress), () => progress.dispose());
}
private _updateProgress() {
if (this._stack.length === 0) {
WindowProgressItem.Instance.hide();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册