Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
263575c6
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,发现更多精彩内容 >>
提交
263575c6
编写于
11月 01, 2017
作者:
R
Rachel Macfarlane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#34685 Collapse search results one level at a time
上级
a6fc53ef
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
42 addition
and
39 deletion
+42
-39
src/vs/base/parts/tree/browser/tree.ts
src/vs/base/parts/tree/browser/tree.ts
+2
-2
src/vs/base/parts/tree/browser/treeDefaults.ts
src/vs/base/parts/tree/browser/treeDefaults.ts
+1
-1
src/vs/base/parts/tree/browser/treeImpl.ts
src/vs/base/parts/tree/browser/treeImpl.ts
+2
-2
src/vs/base/parts/tree/browser/treeModel.ts
src/vs/base/parts/tree/browser/treeModel.ts
+30
-8
src/vs/base/parts/tree/test/browser/treeModel.test.ts
src/vs/base/parts/tree/test/browser/treeModel.test.ts
+5
-24
src/vs/workbench/browser/viewlet.ts
src/vs/workbench/browser/viewlet.ts
+2
-2
未找到文件。
src/vs/base/parts/tree/browser/tree.ts
浏览文件 @
263575c6
...
...
@@ -96,10 +96,10 @@ export interface ITree extends Events.IEventEmitter {
/**
* Collapses several elements.
*
Provide no arguments and it will recursively collapse all elements in the tree
*
Collapses all elements at the greatest tree depth that has expanded elements.
* The returned promise returns a boolean for whether the elements were collapsed or not.
*/
collapse
All
(
elements
?:
any
[],
recursive
?:
boolean
):
WinJS
.
Promise
;
collapse
DeepestExpandedLevel
(
):
WinJS
.
Promise
;
/**
* Toggles an element's expansion state.
...
...
src/vs/base/parts/tree/browser/treeDefaults.ts
浏览文件 @
263575c6
...
...
@@ -427,7 +427,7 @@ export class CollapseAllAction extends Action {
return
TPromise
.
as
(
null
);
// Global action disabled if user is in edit mode from another action
}
this
.
viewer
.
collapse
Al
l
();
this
.
viewer
.
collapse
DeepestExpandedLeve
l
();
this
.
viewer
.
clearSelection
();
this
.
viewer
.
clearFocus
();
this
.
viewer
.
DOMFocus
();
...
...
src/vs/base/parts/tree/browser/treeImpl.ts
浏览文件 @
263575c6
...
...
@@ -182,8 +182,8 @@ export class Tree extends Events.EventEmitter implements _.ITree {
return
this
.
model
.
collapse
(
element
,
recursive
);
}
public
collapse
All
(
elements
:
any
[]
=
null
,
recursive
:
boolean
=
false
):
WinJS
.
Promise
{
return
this
.
model
.
collapse
All
(
elements
,
recursive
);
public
collapse
DeepestExpandedLevel
(
):
WinJS
.
Promise
{
return
this
.
model
.
collapse
DeepestExpandedLevel
(
);
}
public
toggleExpansion
(
element
:
any
,
recursive
:
boolean
=
false
):
WinJS
.
Promise
{
...
...
src/vs/base/parts/tree/browser/treeModel.ts
浏览文件 @
263575c6
...
...
@@ -486,6 +486,17 @@ export class Item extends Events.EventEmitter {
return
result
;
}
public
getChildren
():
Item
[]
{
var
child
=
this
.
firstChild
;
var
results
=
[];
while
(
child
)
{
results
.
push
(
child
);
child
=
child
.
next
;
}
return
results
;
}
private
isAncestorOf
(
item
:
Item
):
boolean
{
while
(
item
)
{
if
(
item
.
id
===
this
.
id
)
{
...
...
@@ -882,18 +893,29 @@ export class TreeModel extends Events.EventEmitter {
return
item
.
collapse
(
recursive
);
}
public
collapse
All
(
elements
:
any
[]
=
null
,
recursive
:
boolean
=
false
):
WinJS
.
Promise
{
if
(
!
elements
)
{
elements
=
[
this
.
input
];
recursive
=
true
;
}
var
promises
=
[];
for
(
var
i
=
0
,
len
=
elements
.
length
;
i
<
len
;
i
++
)
{
promises
.
push
(
this
.
collapse
(
elements
[
i
],
recursive
)
);
public
collapse
DeepestExpandedLevel
(
):
WinJS
.
Promise
{
var
levelToCollapse
=
this
.
findDeepestExpandedLevel
(
this
.
input
,
0
);
var
items
=
[
this
.
input
]
;
for
(
var
i
=
0
;
i
<
levelToCollapse
;
i
++
)
{
items
=
items
.
map
(
node
=>
node
.
getChildren
())
.
reduce
((
prev
,
current
)
=>
prev
.
concat
(
current
),
[]
);
}
var
promises
=
items
.
map
(
child
=>
this
.
collapse
(
child
,
false
));
return
WinJS
.
Promise
.
join
(
promises
);
}
private
findDeepestExpandedLevel
(
item
:
Item
,
currentLevel
:
number
):
number
{
var
expandedChildren
=
item
.
getChildren
().
filter
(
child
=>
child
.
isExpanded
());
if
(
!
expandedChildren
.
length
)
{
return
currentLevel
;
}
return
Math
.
max
(...
expandedChildren
.
map
(
child
=>
this
.
findDeepestExpandedLevel
(
child
,
currentLevel
+
1
)));
}
public
toggleExpansion
(
element
:
any
,
recursive
:
boolean
=
false
):
WinJS
.
Promise
{
return
this
.
isExpanded
(
element
)
?
this
.
collapse
(
element
,
recursive
)
:
this
.
expand
(
element
);
}
...
...
src/vs/base/parts/tree/test/browser/treeModel.test.ts
浏览文件 @
263575c6
...
...
@@ -614,7 +614,7 @@ suite('TreeModel - Expansion', () => {
});
});
test
(
'
collapse
Al
l
'
,
(
done
)
=>
{
test
(
'
collapse
DeepestExpandedLeve
l
'
,
(
done
)
=>
{
model
.
setInput
(
SAMPLE
.
DEEP2
).
done
(()
=>
{
model
.
expand
(
SAMPLE
.
DEEP2
.
children
[
0
]).
done
(()
=>
{
model
.
expand
(
SAMPLE
.
DEEP2
.
children
[
0
].
children
[
0
]).
done
(()
=>
{
...
...
@@ -622,13 +622,10 @@ suite('TreeModel - Expansion', () => {
assert
(
model
.
isExpanded
(
SAMPLE
.
DEEP2
.
children
[
0
]));
assert
(
model
.
isExpanded
(
SAMPLE
.
DEEP2
.
children
[
0
].
children
[
0
]));
model
.
collapseAll
().
done
(()
=>
{
assert
(
!
model
.
isExpanded
(
SAMPLE
.
DEEP2
.
children
[
0
]));
model
.
expand
(
SAMPLE
.
DEEP2
.
children
[
0
]).
done
(()
=>
{
assert
(
!
model
.
isExpanded
(
SAMPLE
.
DEEP2
.
children
[
0
].
children
[
0
]));
done
();
});
model
.
collapseDeepestExpandedLevel
().
done
(()
=>
{
assert
(
model
.
isExpanded
(
SAMPLE
.
DEEP2
.
children
[
0
]));
assert
(
!
model
.
isExpanded
(
SAMPLE
.
DEEP2
.
children
[
0
].
children
[
0
]));
done
();
});
});
});
...
...
@@ -684,22 +681,6 @@ suite('TreeModel - Expansion', () => {
});
});
test
(
'
top level collapsed
'
,
(
done
)
=>
{
model
.
setInput
(
SAMPLE
.
AB
).
done
(()
=>
{
model
.
collapseAll
([{
id
:
'
a
'
},
{
id
:
'
b
'
},
{
id
:
'
c
'
}]);
var
nav
=
model
.
getNavigator
();
assert
.
equal
(
nav
.
next
().
id
,
'
a
'
);
assert
.
equal
(
nav
.
next
().
id
,
'
b
'
);
assert
.
equal
(
nav
.
next
().
id
,
'
c
'
);
assert
.
equal
(
nav
.
previous
().
id
,
'
b
'
);
assert
.
equal
(
nav
.
previous
().
id
,
'
a
'
);
assert
.
equal
(
nav
.
previous
()
&&
false
,
null
);
done
();
});
});
test
(
'
shouldAutoexpand
'
,
(
done
)
=>
{
// setup
const
model
=
new
TreeModel
({
...
...
src/vs/workbench/browser/viewlet.ts
浏览文件 @
263575c6
...
...
@@ -259,12 +259,12 @@ export class ToggleViewletAction extends Action {
export
class
CollapseAction
extends
Action
{
constructor
(
viewer
:
ITree
,
enabled
:
boolean
,
clazz
:
string
)
{
super
(
'
workbench.action.collapse
'
,
nls
.
localize
(
'
collapse
'
,
"
Collapse
All
"
),
clazz
,
enabled
,
(
context
:
any
)
=>
{
super
(
'
workbench.action.collapse
'
,
nls
.
localize
(
'
collapse
'
,
"
Collapse
"
),
clazz
,
enabled
,
(
context
:
any
)
=>
{
if
(
viewer
.
getHighlight
())
{
return
TPromise
.
as
(
null
);
// Global action disabled if user is in edit mode from another action
}
viewer
.
collapse
Al
l
();
viewer
.
collapse
DeepestExpandedLeve
l
();
viewer
.
clearSelection
();
viewer
.
clearFocus
();
viewer
.
DOMFocus
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录