Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
4f053d82
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
4f053d82
编写于
7月 24, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Settings exclude control - replace fancypants List with basic dom manipulation
上级
8d14a78c
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
105 addition
and
188 deletion
+105
-188
src/vs/workbench/parts/preferences/browser/media/settingsWidgets.css
...bench/parts/preferences/browser/media/settingsWidgets.css
+20
-16
src/vs/workbench/parts/preferences/browser/settingsWidgets.ts
...vs/workbench/parts/preferences/browser/settingsWidgets.ts
+85
-172
未找到文件。
src/vs/workbench/parts/preferences/browser/media/settingsWidgets.css
浏览文件 @
4f053d82
...
...
@@ -33,35 +33,39 @@
margin-top
:
1px
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.monaco-list-row
:hover
.monaco-action-bar
,
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.monaco-list-row.focused
.monaco-action-bar
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.setting-exclude-row
{
position
:
relative
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.setting-exclude-row
:hover
.monaco-action-bar
,
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.setting-exclude-row.focused
.monaco-action-bar
{
display
:
block
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row
.monaco-action-bar
.action-label
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude
-row
.monaco-action-bar
.action-label
{
width
:
16px
;
height
:
16px
;
padding
:
2px
;
margin-right
:
2px
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row
.monaco-action-bar
.setting-excludeAction-edit
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude
-row
.monaco-action-bar
.setting-excludeAction-edit
{
margin-right
:
4px
;
}
.vs
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row
.monaco-action-bar
.setting-excludeAction-edit
{
.vs
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude
-row
.monaco-action-bar
.setting-excludeAction-edit
{
background
:
url(edit.svg)
center
center
no-repeat
;
}
.vs-dark
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row
.monaco-action-bar
.setting-excludeAction-edit
{
.vs-dark
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude
-row
.monaco-action-bar
.setting-excludeAction-edit
{
background
:
url(edit_inverse.svg)
center
center
no-repeat
;
}
.vs
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row
.monaco-action-bar
.setting-excludeAction-remove
{
.vs
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude
-row
.monaco-action-bar
.setting-excludeAction-remove
{
background
:
url(action-remove.svg)
center
center
no-repeat
;
}
.vs-dark
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row
.monaco-action-bar
.setting-excludeAction-remove
{
.vs-dark
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude
-row
.monaco-action-bar
.setting-excludeAction-remove
{
background
:
url(action-remove-dark.svg)
center
center
no-repeat
;
}
...
...
@@ -82,30 +86,30 @@
display
:
inline-block
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newExcludeItem
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newExcludeItem
{
display
:
flex
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newExcludeItem
.setting-exclude-patternInput
,
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newExcludeItem
.setting-exclude-siblingInput
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newExcludeItem
.setting-exclude-patternInput
,
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newExcludeItem
.setting-exclude-siblingInput
{
display
:
none
;
flex
:
1
;
max-width
:
200px
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newPattern
.setting-exclude-patternInput
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newPattern
.setting-exclude-patternInput
{
display
:
inline-block
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newPatternWithSibling
.setting-exclude-patternInput
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newPatternWithSibling
.setting-exclude-patternInput
{
margin-right
:
5px
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newPatternWithSibling
.setting-exclude-patternInput
,
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-list
-row.setting-exclude-newPatternWithSibling
.setting-exclude-siblingInput
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newPatternWithSibling
.setting-exclude-patternInput
,
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-new
-row.setting-exclude-newPatternWithSibling
.setting-exclude-siblingInput
{
display
:
inline-block
;
}
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
monaco-lis
t
{
.settings-editor
>
.settings-body
>
.settings-tree-container
.setting-item.setting-item-exclude
.
setting-exclude-widge
t
{
margin-bottom
:
10px
;
}
src/vs/workbench/parts/preferences/browser/settingsWidgets.ts
浏览文件 @
4f053d82
...
...
@@ -8,7 +8,6 @@ import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import
{
ActionBar
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
Button
}
from
'
vs/base/browser/ui/button/button
'
;
import
{
InputBox
}
from
'
vs/base/browser/ui/inputbox/inputBox
'
;
import
{
IRenderer
,
IVirtualDelegate
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
...
...
@@ -16,9 +15,7 @@ import { Disposable, dispose, IDisposable } from 'vs/base/common/lifecycle';
import
'
vs/css!./media/settingsWidgets
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
IContextViewService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
WorkbenchList
}
from
'
vs/platform/list/browser/listService
'
;
import
{
foreground
,
inputBackground
,
inputBorder
,
inputForeground
,
registerColor
,
selectBackground
,
selectBorder
,
selectForeground
,
textLinkForeground
}
from
'
vs/platform/theme/common/colorRegistry
'
;
import
{
foreground
,
inputBackground
,
inputBorder
,
inputForeground
,
listHoverBackground
,
registerColor
,
selectBackground
,
selectBorder
,
selectForeground
,
textLinkForeground
}
from
'
vs/platform/theme/common/colorRegistry
'
;
import
{
attachButtonStyler
,
attachInputBoxStyler
}
from
'
vs/platform/theme/common/styler
'
;
import
{
ICssStyleCollector
,
ITheme
,
IThemeService
,
registerThemingParticipant
}
from
'
vs/platform/theme/common/themeService
'
;
...
...
@@ -77,7 +74,12 @@ registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => {
const
foregroundColor
=
theme
.
getColor
(
foreground
);
if
(
foregroundColor
)
{
collector
.
addRule
(
`.settings-editor > .settings-header > .settings-header-controls .settings-tabs-widget .action-label { color:
${
foregroundColor
}
; };`
);
collector
.
addRule
(
`.settings-editor > .settings-header > .settings-header-controls .settings-tabs-widget .action-label { color:
${
foregroundColor
}
; }`
);
}
const
listHoverBackgroundColor
=
theme
.
getColor
(
listHoverBackground
);
if
(
listHoverBackgroundColor
)
{
collector
.
addRule
(
`.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-exclude .setting-exclude-row:hover { background-color:
${
listHoverBackgroundColor
}
; }`
);
}
});
...
...
@@ -88,8 +90,8 @@ enum AddItemMode {
}
export
class
ExcludeSettingListModel
{
private
_dataItems
:
IExcludeItem
[];
private
_newItem
:
AddItemMod
e
;
private
_dataItems
:
IExcludeItem
[]
=
[]
;
private
_newItem
=
AddItemMode
.
Non
e
;
get
items
():
IExcludeItem
[]
{
const
items
=
[
...
...
@@ -133,7 +135,8 @@ interface IExcludeChangeEvent {
}
export
class
ExcludeSettingWidget
extends
Disposable
{
private
list
:
WorkbenchList
<
IExcludeItem
>
;
private
listElement
:
HTMLElement
;
private
renderedDisposables
:
IDisposable
[]
=
[];
private
model
=
new
ExcludeSettingListModel
();
...
...
@@ -143,23 +146,11 @@ export class ExcludeSettingWidget extends Disposable {
constructor
(
container
:
HTMLElement
,
@
IThemeService
private
themeService
:
IThemeService
,
@
I
InstantiationService
private
instantiationService
:
IInstantiation
Service
@
I
ContextViewService
private
contextViewService
:
IContextView
Service
)
{
super
();
const
dataRenderer
=
new
ExcludeDataItemRenderer
();
this
.
_register
(
dataRenderer
.
onDidRemoveExclude
(
key
=>
this
.
_onDidChangeExclude
.
fire
({
originalPattern
:
key
,
pattern
:
undefined
})));
this
.
_register
(
dataRenderer
.
onEditExclude
(
key
=>
{
// this.model
}));
const
newItemRenderer
=
this
.
instantiationService
.
createInstance
(
NewExcludeRenderer
);
const
delegate
=
new
ExcludeSettingListDelegate
();
this
.
list
=
this
.
instantiationService
.
createInstance
(
WorkbenchList
,
container
,
delegate
,
[
newItemRenderer
,
dataRenderer
],
{
identityProvider
:
element
=>
element
.
id
,
multipleSelectionSupport
:
false
})
as
WorkbenchList
<
IExcludeItem
>
;
this
.
_register
(
this
.
list
);
this
.
listElement
=
DOM
.
append
(
container
,
$
(
'
.setting-exclude-widget
'
));
const
addPatternButton
=
this
.
_register
(
new
Button
(
container
));
addPatternButton
.
label
=
localize
(
'
addPattern
'
,
"
Add Pattern
"
);
...
...
@@ -169,6 +160,8 @@ export class ExcludeSettingWidget extends Disposable {
this
.
model
.
setAddItemMode
(
AddItemMode
.
Pattern
);
this
.
update
();
}));
this
.
update
();
}
setValue
(
excludeValue
:
any
):
void
{
...
...
@@ -177,66 +170,15 @@ export class ExcludeSettingWidget extends Disposable {
}
private
update
():
void
{
this
.
list
.
splice
(
0
,
this
.
list
.
length
,
this
.
model
.
items
);
const
listHeight
=
22
*
this
.
model
.
items
.
length
;
this
.
list
.
layout
(
listHeight
);
this
.
list
.
getHTMLElement
().
style
.
height
=
listHeight
+
'
px
'
;
}
}
DOM
.
clearNode
(
this
.
listElement
);
this
.
renderedDisposables
=
dispose
(
this
.
renderedDisposables
);
interface
IExcludeDataItem
{
id
:
string
;
pattern
:
string
;
sibling
?:
string
;
}
interface
INewExcludeItem
{
id
:
string
;
mode
:
AddItemMode
;
}
this
.
model
.
items
.
map
(
item
=>
this
.
renderItem
(
item
))
.
forEach
(
itemElement
=>
this
.
listElement
.
appendChild
(
itemElement
));
type
IExcludeItem
=
IExcludeDataItem
|
INewExcludeItem
;
function
isExcludeDataItem
(
excludeItem
:
IExcludeItem
):
excludeItem
is
IExcludeDataItem
{
return
!!
(
<
IExcludeDataItem
>
excludeItem
).
pattern
;
}
interface
IExcludeDataItemTemplate
{
container
:
HTMLElement
;
actionBar
:
ActionBar
;
patternElement
:
HTMLElement
;
siblingElement
:
HTMLElement
;
toDispose
:
IDisposable
[];
}
class
ExcludeDataItemRenderer
implements
IRenderer
<
IExcludeDataItem
,
IExcludeDataItemTemplate
>
{
static
readonly
templateId
:
string
=
'
excludeDataItem
'
;
private
readonly
_onDidRemoveExclude
:
Emitter
<
string
>
=
new
Emitter
<
string
>
();
public
readonly
onDidRemoveExclude
:
Event
<
string
>
=
this
.
_onDidRemoveExclude
.
event
;
private
readonly
_onEditExclude
:
Emitter
<
string
>
=
new
Emitter
<
string
>
();
public
readonly
onEditExclude
:
Event
<
string
>
=
this
.
_onEditExclude
.
event
;
get
templateId
():
string
{
return
ExcludeDataItemRenderer
.
templateId
;
}
renderTemplate
(
container
:
HTMLElement
):
IExcludeDataItemTemplate
{
const
toDispose
=
[];
const
actionBar
=
new
ActionBar
(
container
);
toDispose
.
push
(
actionBar
);
return
{
container
,
patternElement
:
DOM
.
append
(
container
,
$
(
'
.setting-exclude-pattern
'
)),
siblingElement
:
DOM
.
append
(
container
,
$
(
'
.setting-exclude-sibling
'
)),
toDispose
,
actionBar
};
const
listHeight
=
22
*
this
.
model
.
items
.
length
;
this
.
listElement
.
style
.
height
=
listHeight
+
'
px
'
;
}
private
createDeleteAction
(
key
:
string
):
IAction
{
...
...
@@ -245,7 +187,7 @@ class ExcludeDataItemRenderer implements IRenderer<IExcludeDataItem, IExcludeDat
enabled
:
true
,
id
:
'
workbench.action.removeExcludeItem
'
,
tooltip
:
localize
(
'
removeExcludeItem
'
,
"
Remove Exclude Item
"
),
run
:
()
=>
this
.
_onDid
RemoveExclude
.
fire
(
key
)
run
:
()
=>
this
.
_onDid
ChangeExclude
.
fire
({
originalPattern
:
key
,
pattern
:
undefined
}
)
};
}
...
...
@@ -255,140 +197,111 @@ class ExcludeDataItemRenderer implements IRenderer<IExcludeDataItem, IExcludeDat
enabled
:
true
,
id
:
'
workbench.action.editExcludeItem
'
,
tooltip
:
localize
(
'
editExcludeItem
'
,
"
Edit Exclude Item
"
),
run
:
()
=>
this
.
_onEditExclude
.
fire
(
key
)
run
:
()
=>
{
}
};
}
renderElement
(
element
:
IExcludeDataItem
,
index
:
number
,
templateData
:
IExcludeDataItemTemplate
):
void
{
templateData
.
patternElement
.
textContent
=
element
.
pattern
;
templateData
.
siblingElement
.
textContent
=
element
.
sibling
&&
(
'
when:
'
+
element
.
sibling
);
templateData
.
actionBar
.
clear
();
templateData
.
actionBar
.
push
([
this
.
createEditAction
(
element
.
pattern
),
this
.
createDeleteAction
(
element
.
pattern
)
],
{
icon
:
true
,
label
:
false
});
templateData
.
container
.
title
=
element
.
sibling
?
localize
(
'
excludeSiblingHintLabel
'
,
"
Exclude files matching `{0}`, only when a file matching `{1}` is present
"
,
element
.
pattern
,
element
.
sibling
)
:
localize
(
'
excludePatternHintLabel
'
,
"
Exclude files matching `{0}`
"
,
element
.
pattern
);
}
disposeElement
(
element
:
IExcludeDataItem
,
index
:
number
,
templateData
:
IExcludeDataItemTemplate
):
void
{
private
renderItem
(
item
:
IExcludeItem
):
HTMLElement
{
return
isExcludeDataItem
(
item
)
?
this
.
renderDataItem
(
item
)
:
this
.
renderNewItem
(
item
);
}
disposeTemplate
(
templateData
:
IExcludeDataItemTemplate
):
void
{
dispose
(
templateData
.
toDispose
);
}
}
interface
INewExcludeItemTemplate
{
container
:
HTMLElement
;
patternInput
:
InputBox
;
siblingInput
:
InputBox
;
toDispose
:
IDisposable
[];
}
interface
INewExcludeItemEvent
{
pattern
:
string
;
sibling
?:
string
;
}
private
renderDataItem
(
item
:
IExcludeDataItem
):
HTMLElement
{
const
rowElement
=
$
(
'
.setting-exclude-row
'
);
const
actionBar
=
new
ActionBar
(
rowElement
);
this
.
renderedDisposables
.
push
(
actionBar
);
class
NewExcludeRenderer
implements
IRenderer
<
INewExcludeItem
,
INewExcludeItemTemplate
>
{
static
readonly
templateId
:
string
=
'
newExcludeItem
'
;
const
patternElement
=
DOM
.
append
(
rowElement
,
$
(
'
.setting-exclude-pattern
'
));
const
siblingElement
=
DOM
.
append
(
rowElement
,
$
(
'
.setting-exclude-sibling
'
));
patternElement
.
textContent
=
item
.
pattern
;
siblingElement
.
textContent
=
item
.
sibling
&&
(
'
when:
'
+
item
.
sibling
);
private
readonly
_onNewExcludeItem
:
Emitter
<
INewExcludeItemEvent
>
=
new
Emitter
<
INewExcludeItemEvent
>
();
public
readonly
onNewExcludeItem
:
Event
<
INewExcludeItemEvent
>
=
this
.
_onNewExcludeItem
.
event
;
actionBar
.
push
([
this
.
createEditAction
(
item
.
pattern
),
this
.
createDeleteAction
(
item
.
pattern
)
],
{
icon
:
true
,
label
:
false
});
constructor
(
@
IContextViewService
private
contextViewService
:
IContextViewService
,
@
IThemeService
private
themeService
:
IThemeService
)
{
}
rowElement
.
title
=
item
.
sibling
?
localize
(
'
excludeSiblingHintLabel
'
,
"
Exclude files matching `{0}`, only when a file matching `{1}` is present
"
,
item
.
pattern
,
item
.
sibling
)
:
localize
(
'
excludePatternHintLabel
'
,
"
Exclude files matching `{0}`
"
,
item
.
pattern
);
get
templateId
():
string
{
return
NewExcludeRenderer
.
templateId
;
return
rowElement
;
}
renderTemplate
(
container
:
HTMLElement
):
INewExcludeItemTemplate
{
const
toDispose
=
[]
;
private
renderNewItem
(
item
:
INewExcludeItem
):
HTMLElement
{
const
rowElement
=
$
(
'
.setting-exclude-new-row
'
)
;
const
onKeydown
=
(
e
:
StandardKeyboardEvent
)
=>
{
if
(
e
.
equals
(
KeyCode
.
Enter
))
{
this
.
_onNewExcludeItem
.
fire
({
this
.
_onDidChangeExclude
.
fire
({
originalPattern
:
undefined
,
pattern
:
patternInput
.
value
,
sibling
:
siblingInput
.
value
//
sibling: siblingInput.value
});
}
};
const
patternInput
=
new
InputBox
(
container
,
this
.
contextViewService
,
{
const
patternInput
=
new
InputBox
(
rowElement
,
this
.
contextViewService
,
{
placeholder
:
localize
(
'
excludePatternInputPlaceholder
'
,
"
Exclude Pattern...
"
)
});
patternInput
.
element
.
classList
.
add
(
'
setting-exclude-patternInput
'
);
t
oDispose
.
push
(
attachInputBoxStyler
(
patternInput
,
this
.
themeService
,
{
t
his
.
renderedDisposables
.
push
(
attachInputBoxStyler
(
patternInput
,
this
.
themeService
,
{
inputBackground
:
settingsTextInputBackground
,
inputForeground
:
settingsTextInputForeground
,
inputBorder
:
settingsTextInputBorder
}));
t
oDispose
.
push
(
patternInput
);
t
oDispose
.
push
(
DOM
.
addStandardDisposableListener
(
patternInput
.
inputElement
,
DOM
.
EventType
.
KEY_DOWN
,
onKeydown
));
t
his
.
renderedDisposables
.
push
(
patternInput
);
t
his
.
renderedDisposables
.
push
(
DOM
.
addStandardDisposableListener
(
patternInput
.
inputElement
,
DOM
.
EventType
.
KEY_DOWN
,
onKeydown
));
const
siblingInput
=
new
InputBox
(
container
,
this
.
contextViewService
,
{
const
siblingInput
=
new
InputBox
(
rowElement
,
this
.
contextViewService
,
{
placeholder
:
localize
(
'
excludeSiblingInputPlaceholder
'
,
"
When Pattern Is Present...
"
)
});
siblingInput
.
element
.
classList
.
add
(
'
setting-exclude-siblingInput
'
);
t
oDispose
.
push
(
siblingInput
);
t
oDispose
.
push
(
attachInputBoxStyler
(
siblingInput
,
this
.
themeService
,
{
t
his
.
renderedDisposables
.
push
(
siblingInput
);
t
his
.
renderedDisposables
.
push
(
attachInputBoxStyler
(
siblingInput
,
this
.
themeService
,
{
inputBackground
:
settingsTextInputBackground
,
inputForeground
:
settingsTextInputForeground
,
inputBorder
:
settingsTextInputBorder
}));
toDispose
.
push
(
DOM
.
addStandardDisposableListener
(
siblingInput
.
inputElement
,
DOM
.
EventType
.
KEY_DOWN
,
onKeydown
));
return
{
container
,
patternInput
,
siblingInput
,
toDispose
};
this
.
renderedDisposables
.
push
(
DOM
.
addStandardDisposableListener
(
siblingInput
.
inputElement
,
DOM
.
EventType
.
KEY_DOWN
,
onKeydown
));
rowElement
.
classList
.
add
(
'
setting-exclude-newExcludeItem
'
);
rowElement
.
classList
.
remove
(
'
setting-exclude-newPattern
'
);
rowElement
.
classList
.
remove
(
'
setting-exclude-newPatternWithSibling
'
);
if
(
item
.
mode
===
AddItemMode
.
Pattern
)
{
rowElement
.
classList
.
add
(
'
setting-exclude-newPattern
'
);
patternInput
.
focus
();
patternInput
.
select
();
}
else
if
(
item
.
mode
===
AddItemMode
.
PatternWithSibling
)
{
rowElement
.
classList
.
add
(
'
setting-exclude-newPatternWithSibling
'
);
}
renderElement
(
element
:
INewExcludeItem
,
index
:
number
,
templateData
:
INewExcludeItemTemplate
):
void
{
templateData
.
container
.
classList
.
add
(
'
setting-exclude-newExcludeItem
'
);
templateData
.
container
.
classList
.
remove
(
'
setting-exclude-newPattern
'
);
templateData
.
container
.
classList
.
remove
(
'
setting-exclude-newPatternWithSibling
'
);
if
(
element
.
mode
===
AddItemMode
.
Pattern
)
{
templateData
.
container
.
classList
.
add
(
'
setting-exclude-newPattern
'
);
templateData
.
patternInput
.
focus
();
templateData
.
patternInput
.
select
();
}
else
if
(
element
.
mode
===
AddItemMode
.
PatternWithSibling
)
{
templateData
.
container
.
classList
.
add
(
'
setting-exclude-newPatternWithSibling
'
);
}
return
rowElement
;
}
disposeElement
(
element
:
INewExcludeItem
,
index
:
number
,
templateData
:
INewExcludeItemTemplate
):
void
{
dispose
()
{
super
.
dispose
();
this
.
renderedDisposables
=
dispose
(
this
.
renderedDisposables
);
}
}
disposeTemplate
(
templateData
:
INewExcludeItemTemplate
):
void
{
dispose
(
templateData
.
toDispose
);
}
interface
IExcludeDataItem
{
id
:
string
;
pattern
:
string
;
sibling
?:
string
;
}
class
ExcludeSettingListDelegate
implements
IVirtualDelegate
<
IExcludeItem
>
{
getHeight
(
element
:
IExcludeItem
):
number
{
return
22
;
}
interface
INewExcludeItem
{
id
:
string
;
mode
:
AddItemMode
;
}
getTemplateId
(
element
:
IExcludeItem
):
string
{
if
(
isExcludeDataItem
(
element
))
{
return
ExcludeDataItemRenderer
.
templateId
;
}
else
{
return
NewExcludeRenderer
.
templateId
;
}
}
type
IExcludeItem
=
IExcludeDataItem
|
INewExcludeItem
;
function
isExcludeDataItem
(
excludeItem
:
IExcludeItem
):
excludeItem
is
IExcludeDataItem
{
return
!!
(
<
IExcludeDataItem
>
excludeItem
).
pattern
;
}
// class EditExcludeItemAction extends Action {
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录