Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
bf4f7de5
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,发现更多精彩内容 >>
提交
bf4f7de5
编写于
6月 22, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Settings editor - move checkbox next to description
上级
dcf85b66
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
97 addition
and
8 deletion
+97
-8
src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css
...bench/parts/preferences/browser/media/settingsEditor2.css
+8
-0
src/vs/workbench/parts/preferences/browser/settingsTree.ts
src/vs/workbench/parts/preferences/browser/settingsTree.ts
+89
-8
未找到文件。
src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css
浏览文件 @
bf4f7de5
...
...
@@ -203,6 +203,14 @@
white-space
:
pre-wrap
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item-bool
.setting-item-value-description
{
display
:
flex
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item-bool
>
.reset-button-container
>
.setting-reset-button
{
width
:
initial
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item
.setting-item-value
{
margin-top
:
7px
;
display
:
flex
;
...
...
src/vs/workbench/parts/preferences/browser/settingsTree.ts
浏览文件 @
bf4f7de5
...
...
@@ -368,7 +368,23 @@ interface ISettingItemTemplate extends IDisposableTemplate {
categoryElement
:
HTMLElement
;
labelElement
:
HTMLElement
;
descriptionElement
:
HTMLElement
;
valueElement
:
HTMLElement
;
controlElement
:
HTMLElement
;
resetButtonElement
:
HTMLElement
;
isConfiguredElement
:
HTMLElement
;
otherOverridesElement
:
HTMLElement
;
}
interface
ISettingBoolItemTemplate
extends
IDisposableTemplate
{
parent
:
HTMLElement
;
context
?:
SettingsTreeSettingElement
;
containerElement
:
HTMLElement
;
categoryElement
:
HTMLElement
;
labelElement
:
HTMLElement
;
descriptionAndValueElement
:
HTMLElement
;
descriptionElement
:
HTMLElement
;
controlElement
:
HTMLElement
;
resetButtonElement
:
HTMLElement
;
isConfiguredElement
:
HTMLElement
;
otherOverridesElement
:
HTMLElement
;
}
...
...
@@ -379,6 +395,7 @@ interface IGroupTitleTemplate extends IDisposableTemplate {
}
const
SETTINGS_ELEMENT_TEMPLATE_ID
=
'
settings.entry.template
'
;
const
SETTINGS_BOOL_TEMPLATE_ID
=
'
settings.bool.template
'
;
const
SETTINGS_GROUP_ELEMENT_TEMPLATE_ID
=
'
settings.group.template
'
;
export
interface
ISettingChangeEvent
{
...
...
@@ -435,11 +452,16 @@ export class SettingsRenderer implements IRenderer {
}
getTemplateId
(
tree
:
ITree
,
element
:
SettingsTreeElement
):
string
{
if
(
element
instanceof
SettingsTreeGroupElement
)
{
return
SETTINGS_GROUP_ELEMENT_TEMPLATE_ID
;
}
if
(
element
instanceof
SettingsTreeSettingElement
)
{
if
(
element
.
valueType
===
'
boolean
'
)
{
return
SETTINGS_BOOL_TEMPLATE_ID
;
}
return
SETTINGS_ELEMENT_TEMPLATE_ID
;
}
...
...
@@ -455,6 +477,10 @@ export class SettingsRenderer implements IRenderer {
return
this
.
renderSettingTemplate
(
tree
,
container
);
}
if
(
templateId
===
SETTINGS_BOOL_TEMPLATE_ID
)
{
return
this
.
renderSettingBoolTemplate
(
tree
,
container
);
}
return
null
;
}
...
...
@@ -481,6 +507,8 @@ export class SettingsRenderer implements IRenderer {
const
descriptionElement
=
DOM
.
append
(
container
,
$
(
'
.setting-item-description
'
));
const
valueElement
=
DOM
.
append
(
container
,
$
(
'
.setting-item-value
'
));
const
controlElement
=
DOM
.
append
(
valueElement
,
$
(
'
div
'
));
const
resetButtonElement
=
DOM
.
append
(
valueElement
,
$
(
'
.reset-button-container
'
));
const
toDispose
=
[];
const
template
:
ISettingItemTemplate
=
{
...
...
@@ -491,7 +519,8 @@ export class SettingsRenderer implements IRenderer {
categoryElement
,
labelElement
,
descriptionElement
,
valueElement
,
controlElement
,
resetButtonElement
,
isConfiguredElement
,
otherOverridesElement
};
...
...
@@ -509,11 +538,60 @@ export class SettingsRenderer implements IRenderer {
return
template
;
}
private
renderSettingBoolTemplate
(
tree
:
ITree
,
container
:
HTMLElement
):
ISettingBoolItemTemplate
{
DOM
.
addClass
(
container
,
'
setting-item
'
);
DOM
.
addClass
(
container
,
'
setting-item-bool
'
);
const
titleElement
=
DOM
.
append
(
container
,
$
(
'
.setting-item-title
'
));
const
categoryElement
=
DOM
.
append
(
titleElement
,
$
(
'
span.setting-item-category
'
));
const
labelElement
=
DOM
.
append
(
titleElement
,
$
(
'
span.setting-item-label
'
));
const
isConfiguredElement
=
DOM
.
append
(
titleElement
,
$
(
'
span.setting-item-is-configured-label
'
));
const
otherOverridesElement
=
DOM
.
append
(
titleElement
,
$
(
'
span.setting-item-overrides
'
));
const
descriptionAndValueElement
=
DOM
.
append
(
container
,
$
(
'
.setting-item-value-description
'
));
const
controlElement
=
DOM
.
append
(
descriptionAndValueElement
,
$
(
'
.setting-item-bool-control
'
));
const
descriptionElement
=
DOM
.
append
(
descriptionAndValueElement
,
$
(
'
.setting-item-description
'
));
const
resetButtonElement
=
DOM
.
append
(
container
,
$
(
'
.reset-button-container
'
));
const
toDispose
=
[];
const
template
:
ISettingBoolItemTemplate
=
{
parent
:
container
,
toDispose
,
containerElement
:
container
,
categoryElement
,
labelElement
,
descriptionAndValueElement
,
descriptionElement
,
controlElement
,
resetButtonElement
,
isConfiguredElement
,
otherOverridesElement
};
// Prevent clicks from being handled by list
toDispose
.
push
(
DOM
.
addDisposableListener
(
controlElement
,
'
mousedown
'
,
(
e
:
IMouseEvent
)
=>
e
.
stopPropagation
()));
toDispose
.
push
(
DOM
.
addStandardDisposableListener
(
controlElement
,
'
keydown
'
,
(
e
:
StandardKeyboardEvent
)
=>
{
if
(
e
.
keyCode
===
KeyCode
.
Escape
)
{
tree
.
domFocus
();
e
.
browserEvent
.
stopPropagation
();
}
}));
return
template
;
}
renderElement
(
tree
:
ITree
,
element
:
SettingsTreeElement
,
templateId
:
string
,
template
:
any
):
void
{
if
(
templateId
===
SETTINGS_ELEMENT_TEMPLATE_ID
)
{
return
this
.
renderSettingElement
(
tree
,
<
SettingsTreeSettingElement
>
element
,
template
);
}
if
(
templateId
===
SETTINGS_BOOL_TEMPLATE_ID
)
{
return
this
.
renderSettingElement
(
tree
,
<
SettingsTreeSettingElement
>
element
,
template
);
}
if
(
templateId
===
SETTINGS_GROUP_ELEMENT_TEMPLATE_ID
)
{
return
this
.
renderGroupElement
(
<
SettingsTreeGroupElement
>
element
,
template
);
}
...
...
@@ -532,7 +610,7 @@ export class SettingsRenderer implements IRenderer {
return
selectedElement
&&
selectedElement
.
id
===
element
.
id
;
}
private
renderSettingElement
(
tree
:
ITree
,
element
:
SettingsTreeSettingElement
,
template
:
ISettingItemTemplate
):
void
{
private
renderSettingElement
(
tree
:
ITree
,
element
:
SettingsTreeSettingElement
,
template
:
ISettingItemTemplate
|
ISettingBoolItemTemplate
):
void
{
const
isSelected
=
!!
this
.
elementIsSelected
(
tree
,
element
);
const
setting
=
element
.
setting
;
...
...
@@ -550,7 +628,9 @@ export class SettingsRenderer implements IRenderer {
template
.
descriptionElement
.
textContent
=
element
.
description
;
this
.
renderValue
(
element
,
isSelected
,
template
);
const
resetButton
=
new
Button
(
template
.
valueElement
);
template
.
resetButtonElement
.
innerHTML
=
''
;
const
resetButton
=
new
Button
(
template
.
resetButtonElement
);
const
resetText
=
localize
(
'
resetButtonTitle
'
,
"
reset
"
);
resetButton
.
label
=
resetText
;
resetButton
.
element
.
title
=
resetText
;
...
...
@@ -581,15 +661,16 @@ export class SettingsRenderer implements IRenderer {
private
renderValue
(
element
:
SettingsTreeSettingElement
,
isSelected
:
boolean
,
template
:
ISettingItemTemplate
):
void
{
const
onChange
=
value
=>
this
.
_onDidChangeSetting
.
fire
({
key
:
element
.
setting
.
key
,
value
});
template
.
valueElement
.
innerHTML
=
''
;
const
valueControlElement
=
template
.
controlElement
;
valueControlElement
.
innerHTML
=
''
;
const
valueControlElement
=
DOM
.
append
(
template
.
valueElement
,
$
(
'
.setting-item-control
'
)
);
valueControlElement
.
setAttribute
(
'
class
'
,
'
setting-item-control
'
);
if
(
element
.
enum
&&
(
element
.
valueType
===
'
string
'
||
!
element
.
valueType
))
{
valueControlElement
.
classList
.
add
(
'
setting-type-enum
'
);
this
.
renderEnum
(
element
,
isSelected
,
template
,
valueControlElement
,
onChange
);
}
else
if
(
element
.
valueType
===
'
boolean
'
)
{
valueControlElement
.
classList
.
add
(
'
setting-type-boolean
'
);
this
.
renderBool
(
element
,
isSelected
,
template
,
valueControlElement
,
onChange
);
this
.
renderBool
(
element
,
isSelected
,
<
ISettingBoolItemTemplate
>
template
,
valueControlElement
,
onChange
);
}
else
if
(
element
.
valueType
===
'
string
'
)
{
valueControlElement
.
classList
.
add
(
'
setting-type-string
'
);
this
.
renderText
(
element
,
isSelected
,
template
,
valueControlElement
,
onChange
);
...
...
@@ -602,7 +683,7 @@ export class SettingsRenderer implements IRenderer {
}
}
private
renderBool
(
dataElement
:
SettingsTreeSettingElement
,
isSelected
:
boolean
,
template
:
ISettingItemTemplate
,
element
:
HTMLElement
,
onChange
:
(
value
:
boolean
)
=>
void
):
void
{
private
renderBool
(
dataElement
:
SettingsTreeSettingElement
,
isSelected
:
boolean
,
template
:
ISetting
Bool
ItemTemplate
,
element
:
HTMLElement
,
onChange
:
(
value
:
boolean
)
=>
void
):
void
{
const
checkboxElement
=
<
HTMLInputElement
>
DOM
.
append
(
element
,
$
(
'
input.setting-value-checkbox.setting-value-input
'
));
checkboxElement
.
type
=
'
checkbox
'
;
checkboxElement
.
checked
=
dataElement
.
value
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录