Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c66517cf
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,发现更多精彩内容 >>
提交
c66517cf
编写于
1月 16, 2018
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #40018
上级
dc13183c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
22 deletion
+37
-22
src/vs/workbench/api/node/extHostTreeViews.ts
src/vs/workbench/api/node/extHostTreeViews.ts
+5
-5
src/vs/workbench/test/electron-browser/api/extHostTreeViews.test.ts
...kbench/test/electron-browser/api/extHostTreeViews.test.ts
+32
-17
未找到文件。
src/vs/workbench/api/node/extHostTreeViews.ts
浏览文件 @
c66517cf
...
...
@@ -107,8 +107,8 @@ class ExtHostTreeView<T> extends Disposable {
asWinJsPromise
(()
=>
this
.
dataProvider
.
getTreeItem
(
element
))
.
then
(
extTreeItem
=>
{
if
(
extTreeItem
)
{
if
(
typeof
element
===
'
string
'
&&
this
.
elements
.
has
(
this
.
createHandle
(
element
,
extTreeItem
)))
{
throw
new
Error
(
localize
(
'
treeView.duplicateElement
'
,
'
Element
{0} is already registered
'
,
element
));
if
(
extTreeItem
.
id
&&
this
.
elements
.
has
(
this
.
createHandle
(
element
,
extTreeItem
)))
{
throw
new
Error
(
localize
(
'
treeView.duplicateElement
'
,
'
Element
with id {0} is already registered
'
,
extTreeItem
.
id
));
}
return
{
element
,
extTreeItem
};
}
...
...
@@ -199,9 +199,9 @@ class ExtHostTreeView<T> extends Disposable {
};
}
private
createHandle
(
element
:
T
,
{
label
,
resourceUri
}:
vscode
.
TreeItem
,
parentHandle
?:
TreeItemHandle
):
TreeItemHandle
{
if
(
typeof
element
===
'
string
'
)
{
return
`
${
ExtHostTreeView
.
ID_HANDLE_PREFIX
}
/
${
element
}
`
;
private
createHandle
(
element
:
T
,
{
id
,
label
,
resourceUri
}:
vscode
.
TreeItem
,
parentHandle
?:
TreeItemHandle
):
TreeItemHandle
{
if
(
id
)
{
return
`
${
ExtHostTreeView
.
ID_HANDLE_PREFIX
}
/
${
id
}
`
;
}
const
prefix
=
parentHandle
?
parentHandle
:
ExtHostTreeView
.
LABEL_HANDLE_PREFIX
;
...
...
src/vs/workbench/test/electron-browser/api/extHostTreeViews.test.ts
浏览文件 @
c66517cf
...
...
@@ -38,7 +38,7 @@ suite('ExtHostTreeView', function () {
let
testObject
:
ExtHostTreeViews
;
let
target
:
RecordingShape
;
let
onDidChangeTreeNode
:
Emitter
<
{
key
:
string
}
>
;
let
onDidChangeTree
Key
:
Emitter
<
string
>
;
let
onDidChangeTree
NodeWithId
:
Emitter
<
{
key
:
string
}
>
;
let
tree
,
labels
,
nodes
;
setup
(()
=>
{
...
...
@@ -68,9 +68,9 @@ suite('ExtHostTreeView', function () {
target
=
new
RecordingShape
();
testObject
=
new
ExtHostTreeViews
(
target
,
new
ExtHostCommands
(
rpcProtocol
,
new
ExtHostHeapService
(),
new
NullLogService
()));
onDidChangeTreeNode
=
new
Emitter
<
{
key
:
string
}
>
();
onDidChangeTree
Key
=
new
Emitter
<
string
>
();
onDidChangeTree
NodeWithId
=
new
Emitter
<
{
key
:
string
}
>
();
testObject
.
registerTreeDataProvider
(
'
testNodeTreeProvider
'
,
aNodeTreeDataProvider
());
testObject
.
registerTreeDataProvider
(
'
test
StringTreeProvider
'
,
aString
TreeDataProvider
());
testObject
.
registerTreeDataProvider
(
'
test
NodeWithIdTreeProvider
'
,
aNodeWithId
TreeDataProvider
());
testObject
.
$getElements
(
'
testNodeTreeProvider
'
).
then
(
elements
=>
{
for
(
const
element
of
elements
)
{
...
...
@@ -107,34 +107,47 @@ suite('ExtHostTreeView', function () {
});
});
test
(
'
construct
string
tree
'
,
()
=>
{
return
testObject
.
$getElements
(
'
test
String
TreeProvider
'
)
test
(
'
construct
id
tree
'
,
()
=>
{
return
testObject
.
$getElements
(
'
test
NodeWithId
TreeProvider
'
)
.
then
(
elements
=>
{
const
actuals
=
elements
.
map
(
e
=>
e
.
handle
);
assert
.
deepEqual
(
actuals
,
[
'
1/a
'
,
'
1/b
'
]);
return
TPromise
.
join
([
testObject
.
$getChildren
(
'
test
String
TreeProvider
'
,
'
1/a
'
)
testObject
.
$getChildren
(
'
test
NodeWithId
TreeProvider
'
,
'
1/a
'
)
.
then
(
children
=>
{
const
actuals
=
children
.
map
(
e
=>
e
.
handle
);
assert
.
deepEqual
(
actuals
,
[
'
1/aa
'
,
'
1/ab
'
]);
return
TPromise
.
join
([
testObject
.
$getChildren
(
'
test
String
TreeProvider
'
,
'
1/aa
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
)),
testObject
.
$getChildren
(
'
test
String
TreeProvider
'
,
'
1/ab
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
))
testObject
.
$getChildren
(
'
test
NodeWithId
TreeProvider
'
,
'
1/aa
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
)),
testObject
.
$getChildren
(
'
test
NodeWithId
TreeProvider
'
,
'
1/ab
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
))
]);
}),
testObject
.
$getChildren
(
'
test
String
TreeProvider
'
,
'
1/b
'
)
testObject
.
$getChildren
(
'
test
NodeWithId
TreeProvider
'
,
'
1/b
'
)
.
then
(
children
=>
{
const
actuals
=
children
.
map
(
e
=>
e
.
handle
);
assert
.
deepEqual
(
actuals
,
[
'
1/ba
'
,
'
1/bb
'
]);
return
TPromise
.
join
([
testObject
.
$getChildren
(
'
test
String
TreeProvider
'
,
'
1/ba
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
)),
testObject
.
$getChildren
(
'
test
String
TreeProvider
'
,
'
1/bb
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
))
testObject
.
$getChildren
(
'
test
NodeWithId
TreeProvider
'
,
'
1/ba
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
)),
testObject
.
$getChildren
(
'
test
NodeWithId
TreeProvider
'
,
'
1/bb
'
).
then
(
children
=>
assert
.
equal
(
children
.
length
,
0
))
]);
})
]);
});
});
test
(
'
error is thrown if id is not unique
'
,
()
=>
{
tree
[
'
a
'
]
=
{
'
a
'
:
{}
};
return
testObject
.
$getElements
(
'
testNodeWithIdTreeProvider
'
)
.
then
(
elements
=>
{
const
actuals
=
elements
.
map
(
e
=>
e
.
handle
);
assert
.
deepEqual
(
actuals
,
[
'
1/a
'
,
'
1/b
'
]);
return
testObject
.
$getChildren
(
'
testNodeWithIdTreeProvider
'
,
'
1/a
'
)
.
then
(
children
=>
assert
.
fail
(
'
Should fail with duplicate id
'
),
()
=>
null
);
});
});
test
(
'
refresh root
'
,
function
(
done
)
{
target
.
onRefresh
.
event
(
actuals
=>
{
assert
.
equal
(
undefined
,
actuals
);
...
...
@@ -359,15 +372,17 @@ suite('ExtHostTreeView', function () {
};
}
function
a
StringTreeDataProvider
():
TreeDataProvider
<
string
>
{
function
a
NodeWithIdTreeDataProvider
():
TreeDataProvider
<
{
key
:
string
}
>
{
return
{
getChildren
:
(
element
:
string
):
string
[]
=>
{
return
getChildren
(
element
);
getChildren
:
(
element
:
{
key
:
string
}):
{
key
:
string
}
[]
=>
{
return
getChildren
(
element
?
element
.
key
:
undefined
).
map
(
key
=>
getNode
(
key
)
);
},
getTreeItem
:
(
element
:
string
):
TreeItem
=>
{
return
getTreeItem
(
element
);
getTreeItem
:
(
element
:
{
key
:
string
}):
TreeItem
=>
{
const
treeItem
=
getTreeItem
(
element
.
key
);
treeItem
.
id
=
element
.
key
;
return
treeItem
;
},
onDidChangeTreeData
:
onDidChangeTree
Key
.
event
onDidChangeTreeData
:
onDidChangeTree
NodeWithId
.
event
};
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录