Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
d3b30f8b
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,发现更多精彩内容 >>
提交
d3b30f8b
编写于
2月 13, 2019
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#67966 Group setting message and refresh together
上级
ff31e405
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
8 deletion
+27
-8
src/vs/workbench/api/node/extHostTreeViews.ts
src/vs/workbench/api/node/extHostTreeViews.ts
+27
-8
未找到文件。
src/vs/workbench/api/node/extHostTreeViews.ts
浏览文件 @
d3b30f8b
...
@@ -18,7 +18,6 @@ import { isUndefinedOrNull, isString } from 'vs/base/common/types';
...
@@ -18,7 +18,6 @@ import { isUndefinedOrNull, isString } from 'vs/base/common/types';
import
{
equals
,
coalesce
}
from
'
vs/base/common/arrays
'
;
import
{
equals
,
coalesce
}
from
'
vs/base/common/arrays
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
IExtensionDescription
,
checkProposedApiEnabled
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IExtensionDescription
,
checkProposedApiEnabled
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
*
as
typeConvert
from
'
vs/workbench/api/node/extHostTypeConverters
'
;
type
TreeItemHandle
=
string
;
type
TreeItemHandle
=
string
;
...
@@ -142,6 +141,8 @@ interface TreeNode {
...
@@ -142,6 +141,8 @@ interface TreeNode {
children
:
TreeNode
[];
children
:
TreeNode
[];
}
}
type
TreeData
<
T
>
=
{
message
:
boolean
,
element
:
T
|
null
|
undefined
|
false
};
class
ExtHostTreeView
<
T
>
extends
Disposable
{
class
ExtHostTreeView
<
T
>
extends
Disposable
{
private
static
LABEL_HANDLE_PREFIX
=
'
0
'
;
private
static
LABEL_HANDLE_PREFIX
=
'
0
'
;
...
@@ -171,6 +172,8 @@ class ExtHostTreeView<T> extends Disposable {
...
@@ -171,6 +172,8 @@ class ExtHostTreeView<T> extends Disposable {
private
_onDidChangeVisibility
:
Emitter
<
vscode
.
TreeViewVisibilityChangeEvent
>
=
this
.
_register
(
new
Emitter
<
vscode
.
TreeViewVisibilityChangeEvent
>
());
private
_onDidChangeVisibility
:
Emitter
<
vscode
.
TreeViewVisibilityChangeEvent
>
=
this
.
_register
(
new
Emitter
<
vscode
.
TreeViewVisibilityChangeEvent
>
());
readonly
onDidChangeVisibility
:
Event
<
vscode
.
TreeViewVisibilityChangeEvent
>
=
this
.
_onDidChangeVisibility
.
event
;
readonly
onDidChangeVisibility
:
Event
<
vscode
.
TreeViewVisibilityChangeEvent
>
=
this
.
_onDidChangeVisibility
.
event
;
private
_onDidChangeData
:
Emitter
<
TreeData
<
T
>>
=
this
.
_register
(
new
Emitter
<
TreeData
<
T
>>
());
private
refreshPromise
:
Promise
<
void
>
=
Promise
.
resolve
(
null
);
private
refreshPromise
:
Promise
<
void
>
=
Promise
.
resolve
(
null
);
constructor
(
private
viewId
:
string
,
options
:
vscode
.
TreeViewOptions
<
T
>
,
private
proxy
:
MainThreadTreeViewsShape
,
private
commands
:
CommandsConverter
,
private
logService
:
ILogService
,
private
extension
:
IExtensionDescription
)
{
constructor
(
private
viewId
:
string
,
options
:
vscode
.
TreeViewOptions
<
T
>
,
private
proxy
:
MainThreadTreeViewsShape
,
private
commands
:
CommandsConverter
,
private
logService
:
ILogService
,
private
extension
:
IExtensionDescription
)
{
...
@@ -178,20 +181,36 @@ class ExtHostTreeView<T> extends Disposable {
...
@@ -178,20 +181,36 @@ class ExtHostTreeView<T> extends Disposable {
this
.
dataProvider
=
options
.
treeDataProvider
;
this
.
dataProvider
=
options
.
treeDataProvider
;
this
.
proxy
.
$registerTreeViewDataProvider
(
viewId
,
{
showCollapseAll
:
!!
options
.
showCollapseAll
});
this
.
proxy
.
$registerTreeViewDataProvider
(
viewId
,
{
showCollapseAll
:
!!
options
.
showCollapseAll
});
if
(
this
.
dataProvider
.
onDidChangeTreeData
)
{
if
(
this
.
dataProvider
.
onDidChangeTreeData
)
{
let
refreshingPromise
,
promiseCallback
;
this
.
_register
(
this
.
dataProvider
.
onDidChangeTreeData
(
element
=>
this
.
_onDidChangeData
.
fire
({
message
:
false
,
element
})));
this
.
_register
(
Event
.
debounce
<
T
,
T
[]
>
(
this
.
dataProvider
.
onDidChangeTreeData
,
(
last
,
current
)
=>
{
}
let
refreshingPromise
,
promiseCallback
;
this
.
_register
(
Event
.
debounce
<
TreeData
<
T
>
,
{
message
:
boolean
,
elements
:
T
[]
}
>
(
this
.
_onDidChangeData
.
event
,
(
result
,
current
)
=>
{
if
(
!
result
)
{
result
=
{
message
:
false
,
elements
:
[]
};
}
if
(
current
.
element
!==
false
)
{
if
(
!
refreshingPromise
)
{
if
(
!
refreshingPromise
)
{
// New refresh has started
// New refresh has started
refreshingPromise
=
new
Promise
(
c
=>
promiseCallback
=
c
);
refreshingPromise
=
new
Promise
(
c
=>
promiseCallback
=
c
);
this
.
refreshPromise
=
this
.
refreshPromise
.
then
(()
=>
refreshingPromise
);
this
.
refreshPromise
=
this
.
refreshPromise
.
then
(()
=>
refreshingPromise
);
}
}
return
last
?
[...
last
,
current
]
:
[
current
];
result
.
elements
.
push
(
current
.
element
);
},
200
)(
elements
=>
{
}
if
(
current
.
message
)
{
result
.
message
=
true
;
}
return
result
;
},
200
)(({
message
,
elements
})
=>
{
if
(
elements
.
length
)
{
const
_promiseCallback
=
promiseCallback
;
const
_promiseCallback
=
promiseCallback
;
refreshingPromise
=
null
;
refreshingPromise
=
null
;
this
.
refresh
(
elements
).
then
(()
=>
_promiseCallback
());
this
.
refresh
(
elements
).
then
(()
=>
_promiseCallback
());
}));
}
}
if
(
message
)
{
this
.
proxy
.
$setMessage
(
this
.
viewId
,
this
.
_message
);
}
}));
}
}
getChildren
(
parentHandle
?:
TreeItemHandle
):
Promise
<
ITreeItem
[]
>
{
getChildren
(
parentHandle
?:
TreeItemHandle
):
Promise
<
ITreeItem
[]
>
{
...
@@ -232,7 +251,7 @@ class ExtHostTreeView<T> extends Disposable {
...
@@ -232,7 +251,7 @@ class ExtHostTreeView<T> extends Disposable {
set
message
(
message
:
string
|
MarkdownString
)
{
set
message
(
message
:
string
|
MarkdownString
)
{
this
.
_message
=
message
;
this
.
_message
=
message
;
this
.
proxy
.
$setMessage
(
this
.
viewId
,
typeConvert
.
MarkdownString
.
fromStrict
(
this
.
_message
)
);
this
.
_onDidChangeData
.
fire
({
message
:
true
,
element
:
false
}
);
}
}
setExpanded
(
treeItemHandle
:
TreeItemHandle
,
expanded
:
boolean
):
void
{
setExpanded
(
treeItemHandle
:
TreeItemHandle
,
expanded
:
boolean
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录