Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
59fdb4a4
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,发现更多精彩内容 >>
提交
59fdb4a4
编写于
6月 17, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
simpler way to prepare context menu
上级
f58a45aa
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
32 addition
and
27 deletion
+32
-27
src/vs/editor/contrib/contextmenu/browser/contextmenu.ts
src/vs/editor/contrib/contextmenu/browser/contextmenu.ts
+32
-27
未找到文件。
src/vs/editor/contrib/contextmenu/browser/contextmenu.ts
浏览文件 @
59fdb4a4
...
...
@@ -8,7 +8,6 @@ import * as nls from 'vs/nls';
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
KeyCode
,
KeyMod
,
Keybinding
}
from
'
vs/base/common/keyCodes
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
SortedList
}
from
'
vs/base/common/sortedList
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
*
as
dom
from
'
vs/base/browser/dom
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
...
...
@@ -124,47 +123,53 @@ class ContextMenuController implements IEditorContribution {
}
private
_getMenuActions
():
IAction
[]
{
var
editorModel
=
this
.
_editor
.
getModel
();
const
editorModel
=
this
.
_editor
.
getModel
();
if
(
!
editorModel
)
{
return
[];
}
var
allActions
=
<
EditorAction
[]
>
this
.
_editor
.
getActions
();
var
contributedActions
=
allActions
.
filter
((
action
)
=>
(
typeof
action
.
shouldShowInContextMenu
===
'
function
'
)
&&
action
.
shouldShowInContextMenu
()
&&
action
.
isSupported
());
const
contributedActions
=
<
EditorAction
[]
>
this
.
_editor
.
getActions
().
filter
(
action
=>
{
if
(
action
instanceof
EditorAction
)
{
return
action
.
shouldShowInContextMenu
()
&&
action
.
isSupported
();
}
});
return
this
.
_prepareActions
(
contributedActions
);
return
ContextMenuController
.
_prepareActions
(
contributedActions
);
}
private
_prepareActions
(
actions
:
EditorAction
[]):
IAction
[]
{
var
list
=
new
SortedList
<
string
,
SortedList
<
string
,
EditorAction
>>
();
private
static
_prepareActions
(
actions
:
EditorAction
[]):
IAction
[]
{
actions
.
forEach
((
action
)
=>
{
var
groups
=
action
.
getGroupId
().
split
(
'
/
'
);
var
actionsForGroup
=
list
.
getValue
(
groups
[
0
]);
if
(
!
actionsForGroup
)
{
actionsForGroup
=
new
SortedList
<
string
,
EditorAction
>
();
list
.
add
(
groups
[
0
],
actionsForGroup
);
}
const
data
=
actions
.
map
(
action
=>
{
const
groupId
=
action
.
getGroupId
();
const
idx
=
groupId
.
indexOf
(
'
/
'
);
const
group
=
idx
>
0
?
groupId
.
substr
(
0
,
idx
)
:
groupId
;
actionsForGroup
.
add
(
groups
[
1
]
||
groups
[
0
],
action
)
;
return
{
action
,
group
}
;
});
var
sortedAndGroupedActions
:
IAction
[]
=
[];
var
groupIterator
=
list
.
getIterator
();
while
(
groupIterator
.
moveNext
())
{
var
group
=
groupIterator
.
current
.
value
;
var
actionsIterator
=
group
.
getIterator
();
while
(
actionsIterator
.
moveNext
())
{
var
action
=
actionsIterator
.
current
.
value
;
sortedAndGroupedActions
.
push
(
action
);
data
.
sort
((
a
,
b
)
=>
{
if
(
a
.
group
<
b
.
group
)
{
return
-
1
;
}
else
if
(
a
.
group
>
b
.
group
)
{
return
1
;
}
else
{
return
0
;
}
});
if
(
groupIterator
.
hasNext
())
{
sortedAndGroupedActions
.
push
(
new
Separator
());
}
const
result
:
IAction
[]
=
[];
let
lastGroup
:
string
;
data
.
forEach
((
value
,
idx
)
=>
{
if
(
lastGroup
&&
lastGroup
!==
value
.
group
)
{
result
.
push
(
new
Separator
());
}
result
.
push
(
value
.
action
);
lastGroup
=
value
.
group
;
});
return
sortedAndGroupedActions
;
return
result
;
}
private
_doShowContextMenu
(
actions
:
IAction
[],
forcedPosition
:
IPosition
=
null
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录