Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
e3b9da45
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
Vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e3b9da45
编写于
3月 22, 2018
作者:
C
Christof Marti
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Select All checkbox
上级
33dce47d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
9 deletion
+41
-9
src/vs/workbench/browser/parts/quickinput/quickInput.css
src/vs/workbench/browser/parts/quickinput/quickInput.css
+9
-6
src/vs/workbench/browser/parts/quickinput/quickInput.ts
src/vs/workbench/browser/parts/quickinput/quickInput.ts
+12
-0
src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts
...kbench/browser/parts/quickinput/quickInputCheckboxList.ts
+20
-3
未找到文件。
src/vs/workbench/browser/parts/quickinput/quickInput.css
浏览文件 @
e3b9da45
...
...
@@ -17,12 +17,14 @@
padding
:
6px
;
}
.quick-input-box
{
flex-grow
:
1
;
.quick-input-select-all
{
align-self
:
center
;
margin
:
0
;
}
.quick-input-box
.monaco-inputbox
>
.wrapper
>
.input
{
padding-left
:
15px
;
.quick-input-box
{
flex-grow
:
1
;
margin-left
:
5px
;
}
.quick-input-action
{
...
...
@@ -36,7 +38,6 @@
}
.quick-input-checkbox-list
{
margin-left
:
3px
;
line-height
:
22px
;
}
...
...
@@ -49,6 +50,7 @@
overflow
:
hidden
;
display
:
flex
;
height
:
100%
;
padding
:
0
6px
;
}
.quick-input-checkbox-list
.quick-input-checkbox-list-label
{
...
...
@@ -60,6 +62,7 @@
.quick-input-checkbox-list
.quick-input-checkbox-list-checkbox
{
align-self
:
center
;
margin
:
0
;
/* TODO */
/* margin-top: 5px; */
}
...
...
@@ -71,7 +74,7 @@
flex-direction
:
column
;
height
:
100%
;
flex
:
1
;
margin-left
:
1px
;
margin-left
:
1
0
px
;
}
.quick-input-checkbox-list
.quick-input-checkbox-list-rows
>
.quick-input-checkbox-list-row
{
...
...
src/vs/workbench/browser/parts/quickinput/quickInput.ts
浏览文件 @
e3b9da45
...
...
@@ -37,6 +37,7 @@ export class QuickInputService extends Component implements IQuickInputService {
private
layoutDimensions
:
Dimension
;
private
container
:
HTMLElement
;
private
selectAll
:
HTMLInputElement
;
private
inputBox
:
QuickInputBox
;
private
checkboxList
:
QuickInputCheckboxList
;
...
...
@@ -63,6 +64,13 @@ export class QuickInputService extends Component implements IQuickInputService {
const
headerContainer
=
dom
.
append
(
this
.
container
,
$
(
'
.quick-input-header
'
));
this
.
selectAll
=
<
HTMLInputElement
>
dom
.
append
(
headerContainer
,
$
(
'
input.quick-input-select-all
'
));
this
.
selectAll
.
type
=
'
checkbox
'
;
this
.
toUnbind
.
push
(
dom
.
addStandardDisposableListener
(
this
.
selectAll
,
dom
.
EventType
.
CHANGE
,
e
=>
{
const
checked
=
this
.
selectAll
.
checked
;
this
.
checkboxList
.
setAllSelected
(
checked
);
}));
this
.
inputBox
=
new
QuickInputBox
(
headerContainer
);
this
.
toUnbind
.
push
(
this
.
inputBox
);
this
.
inputBox
.
style
(
this
.
themeService
.
getTheme
());
...
...
@@ -97,6 +105,9 @@ export class QuickInputService extends Component implements IQuickInputService {
this
.
checkboxList
=
this
.
instantiationService
.
createInstance
(
QuickInputCheckboxList
,
this
.
container
);
this
.
toUnbind
.
push
(
this
.
checkboxList
);
this
.
toUnbind
.
push
(
this
.
checkboxList
.
onSelectionChanged
(()
=>
{
this
.
selectAll
.
checked
=
this
.
checkboxList
.
getAllSelected
();
}));
this
.
toUnbind
.
push
(
dom
.
addDisposableListener
(
this
.
container
,
'
focusout
'
,
(
e
:
FocusEvent
)
=>
{
for
(
let
element
=
<
Element
>
e
.
relatedTarget
;
element
;
element
=
element
.
parentElement
)
{
...
...
@@ -150,6 +161,7 @@ export class QuickInputService extends Component implements IQuickInputService {
this
.
inputBox
.
setPlaceholder
(
options
.
placeHolder
?
localize
(
'
quickInput.ctrlSpaceToSelectWithPlaceholder
'
,
"
{1} ({0} to toggle)
"
,
'
Ctrl+Space
'
,
options
.
placeHolder
)
:
localize
(
'
quickInput.ctrlSpaceToSelect
'
,
"
{0} to toggle
"
,
'
Ctrl+Space
'
));
// TODO: Progress indication.
this
.
checkboxList
.
setElements
(
await
picks
);
this
.
selectAll
.
checked
=
this
.
checkboxList
.
getAllSelected
();
this
.
container
.
style
.
display
=
null
;
this
.
updateLayout
();
...
...
src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts
浏览文件 @
e3b9da45
...
...
@@ -15,7 +15,7 @@ import { IPickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen';
import
{
IMatch
}
from
'
vs/base/common/filters
'
;
import
{
matchesFuzzyOcticonAware
,
parseOcticons
}
from
'
vs/base/common/octicon
'
;
import
{
compareAnything
}
from
'
vs/base/common/comparers
'
;
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
assign
}
from
'
vs/base/common/objects
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
StandardKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
...
...
@@ -103,7 +103,7 @@ class SelectedElementRenderer implements IRenderer<SelectableElement, ISelectedE
}
renderElement
(
element
:
SelectableElement
,
index
:
number
,
data
:
ISelectedElementTemplateData
):
void
{
dispose
(
data
.
toDisposeElement
);
d
ata
.
toDisposeElement
=
d
ispose
(
data
.
toDisposeElement
);
data
.
element
=
element
;
data
.
checkbox
.
checked
=
element
.
selected
;
data
.
toDisposeElement
.
push
(
element
.
onSelected
(
selected
=>
data
.
checkbox
.
checked
=
selected
));
...
...
@@ -122,7 +122,8 @@ class SelectedElementRenderer implements IRenderer<SelectableElement, ISelectedE
}
disposeTemplate
(
data
:
ISelectedElementTemplateData
):
void
{
dispose
(
data
.
toDisposeTemplate
);
data
.
toDisposeElement
=
dispose
(
data
.
toDisposeElement
);
data
.
toDisposeTemplate
=
dispose
(
data
.
toDisposeTemplate
);
}
}
...
...
@@ -142,6 +143,9 @@ export class QuickInputCheckboxList {
private
container
:
HTMLElement
;
private
list
:
WorkbenchList
<
SelectableElement
>
;
private
elements
:
SelectableElement
[]
=
[];
private
_onSelectionChanged
=
new
Emitter
<
IPickOpenEntry
>
();
onSelectionChanged
:
Event
<
IPickOpenEntry
>
=
this
.
_onSelectionChanged
.
event
;
private
elementDisposables
:
IDisposable
[]
=
[];
private
disposables
:
IDisposable
[]
=
[];
constructor
(
...
...
@@ -163,12 +167,24 @@ export class QuickInputCheckboxList {
}));
}
getAllSelected
()
{
return
this
.
getSelectedElements
().
length
===
this
.
elements
.
length
;
}
setAllSelected
(
select
:
boolean
)
{
this
.
elements
.
forEach
(
element
=>
element
.
selected
=
select
);
}
setElements
(
elements
:
IPickOpenEntry
[]):
void
{
this
.
elementDisposables
=
dispose
(
this
.
elementDisposables
);
this
.
elements
=
elements
.
map
((
item
,
index
)
=>
new
SelectableElement
({
index
,
item
,
selected
:
!!
item
.
selected
}));
this
.
elementDisposables
.
push
(...
this
.
elements
.
map
(
element
=>
element
.
onSelected
(()
=>
{
this
.
_onSelectionChanged
.
fire
(
element
.
item
);
})));
this
.
list
.
splice
(
0
,
this
.
list
.
length
,
this
.
elements
);
this
.
list
.
setSelection
([]);
this
.
list
.
focusFirst
();
...
...
@@ -244,6 +260,7 @@ export class QuickInputCheckboxList {
}
dispose
()
{
this
.
elementDisposables
=
dispose
(
this
.
elementDisposables
);
this
.
disposables
=
dispose
(
this
.
disposables
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录