Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
e44c50ba
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e44c50ba
编写于
3月 02, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
progress - reuse status entry if it exists
上级
6801e4c6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
13 deletion
+25
-13
src/vs/workbench/services/progress/browser/progressService.ts
...vs/workbench/services/progress/browser/progressService.ts
+25
-13
未找到文件。
src/vs/workbench/services/progress/browser/progressService.ts
浏览文件 @
e44c50ba
...
...
@@ -6,10 +6,10 @@
import
'
vs/css!./media/progressService
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
IDisposable
,
dispose
,
DisposableStore
,
MutableDisposable
,
Disposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
,
DisposableStore
,
Disposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IProgressService
,
IProgressOptions
,
IProgressStep
,
ProgressLocation
,
IProgress
,
Progress
,
IProgressCompositeOptions
,
IProgressNotificationOptions
,
IProgressRunner
,
IProgressIndicator
,
IProgressWindowOptions
}
from
'
vs/platform/progress/common/progress
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
StatusbarAlignment
,
IStatusbarService
}
from
'
vs/workbench/services/statusbar/common/statusbar
'
;
import
{
StatusbarAlignment
,
IStatusbarService
,
IStatusbarEntryAccessor
,
IStatusbarEntry
}
from
'
vs/workbench/services/statusbar/common/statusbar
'
;
import
{
timeout
}
from
'
vs/base/common/async
'
;
import
{
ProgressBadge
,
IActivityService
}
from
'
vs/workbench/services/activity/common/activity
'
;
import
{
INotificationService
,
Severity
,
INotificationHandle
}
from
'
vs/platform/notification/common/notification
'
;
...
...
@@ -30,9 +30,6 @@ export class ProgressService extends Disposable implements IProgressService {
_serviceBrand
:
undefined
;
private
readonly
stack
:
[
IProgressOptions
,
Progress
<
IProgressStep
>
][]
=
[];
private
readonly
globalStatusEntry
=
this
.
_register
(
new
MutableDisposable
());
constructor
(
@
IActivityService
private
readonly
activityService
:
IActivityService
,
@
IViewletService
private
readonly
viewletService
:
IViewletService
,
...
...
@@ -78,6 +75,9 @@ export class ProgressService extends Disposable implements IProgressService {
}
}
private
readonly
windowProgressStack
:
[
IProgressOptions
,
Progress
<
IProgressStep
>
][]
=
[];
private
windowProgressStatusEntry
:
IStatusbarEntryAccessor
|
undefined
=
undefined
;
private
withWindowProgress
<
R
=
unknown
>
(
options
:
IProgressWindowOptions
,
callback
:
(
progress
:
IProgress
<
{
message
?:
string
}
>
)
=>
Promise
<
R
>
):
Promise
<
R
>
{
const
task
:
[
IProgressWindowOptions
,
Progress
<
IProgressStep
>
]
=
[
options
,
new
Progress
<
IProgressStep
>
(()
=>
this
.
updateWindowProgress
())];
...
...
@@ -85,7 +85,7 @@ export class ProgressService extends Disposable implements IProgressService {
let
delayHandle
:
any
=
setTimeout
(()
=>
{
delayHandle
=
undefined
;
this
.
s
tack
.
unshift
(
task
);
this
.
windowProgressS
tack
.
unshift
(
task
);
this
.
updateWindowProgress
();
// show progress for at least 150ms
...
...
@@ -93,8 +93,8 @@ export class ProgressService extends Disposable implements IProgressService {
timeout
(
150
),
promise
]).
finally
(()
=>
{
const
idx
=
this
.
s
tack
.
indexOf
(
task
);
this
.
s
tack
.
splice
(
idx
,
1
);
const
idx
=
this
.
windowProgressS
tack
.
indexOf
(
task
);
this
.
windowProgressS
tack
.
splice
(
idx
,
1
);
this
.
updateWindowProgress
();
});
},
150
);
...
...
@@ -104,10 +104,10 @@ export class ProgressService extends Disposable implements IProgressService {
}
private
updateWindowProgress
(
idx
:
number
=
0
)
{
this
.
globalStatusEntry
.
clear
();
if
(
idx
<
this
.
stack
.
length
)
{
const
[
options
,
progress
]
=
this
.
stack
[
idx
];
// We still have progress to show
if
(
idx
<
this
.
windowProgressStack
.
length
)
{
const
[
options
,
progress
]
=
this
.
windowProgressStack
[
idx
];
let
progressTitle
=
options
.
title
;
let
progressMessage
=
progress
.
value
&&
progress
.
value
.
message
;
...
...
@@ -136,11 +136,23 @@ export class ProgressService extends Disposable implements IProgressService {
return
;
}
this
.
globalStatusEntry
.
value
=
this
.
statusbarService
.
addEntry
(
{
const
statusEntryProperties
:
IStatusbarEntry
=
{
text
:
`$(sync~spin)
${
text
}
`
,
tooltip
:
title
,
command
:
progressCommand
},
'
status.progress
'
,
localize
(
'
status.progress
'
,
"
Progress Message
"
),
StatusbarAlignment
.
LEFT
);
};
if
(
this
.
windowProgressStatusEntry
)
{
this
.
windowProgressStatusEntry
.
update
(
statusEntryProperties
);
}
else
{
this
.
windowProgressStatusEntry
=
this
.
statusbarService
.
addEntry
(
statusEntryProperties
,
'
status.progress
'
,
localize
(
'
status.progress
'
,
"
Progress Message
"
),
StatusbarAlignment
.
LEFT
);
}
}
// Progress is done so we remove the status entry
else
{
this
.
windowProgressStatusEntry
?.
dispose
();
this
.
windowProgressStatusEntry
=
undefined
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录