Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
cd7b12b6
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,发现更多精彩内容 >>
提交
cd7b12b6
编写于
8月 26, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
extract extension Query
上级
1f291a92
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
116 addition
and
25 deletion
+116
-25
src/vs/workbench/parts/extensions/electron-browser/extensionQuery.ts
...bench/parts/extensions/electron-browser/extensionQuery.ts
+50
-0
src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts
...ch/parts/extensions/electron-browser/extensionsActions.ts
+45
-0
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
...ch/parts/extensions/electron-browser/extensionsViewlet.ts
+21
-25
未找到文件。
src/vs/workbench/parts/extensions/electron-browser/extensionQuery.ts
0 → 100644
浏览文件 @
cd7b12b6
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
'
vs/css!./media/extensionActions
'
;
export
class
Query
{
constructor
(
public
value
:
string
,
public
sortBy
:
string
,
public
sortOrder
:
string
)
{}
static
parse
(
value
:
string
):
Query
{
let
sortBy
:
string
=
undefined
;
let
sortOrder
:
string
=
undefined
;
value
=
value
.
replace
(
/@sort:
(\w
+
)(
-asc|-desc
)?\b
/g
,
(
match
,
by
:
string
,
order
:
string
)
=>
{
if
(
order
)
{
sortOrder
=
order
.
substr
(
1
);
}
sortBy
=
by
;
return
''
;
});
return
new
Query
(
value
.
trim
(),
sortBy
,
sortOrder
);
}
toString
():
string
{
let
result
=
this
.
value
;
if
(
this
.
sortBy
)
{
result
=
`
${
result
}${
result
?
'
'
:
''
}
@sort:
${
this
.
sortBy
}
`
;
if
(
this
.
sortOrder
)
{
result
=
`
${
result
}
-
${
this
.
sortOrder
}
`
;
}
}
return
result
;
}
isValid
():
boolean
{
return
!!
this
.
sortBy
||
!
this
.
sortOrder
;
}
equals
(
other
:
Query
):
boolean
{
return
this
.
value
===
other
.
value
&&
this
.
sortBy
===
other
.
sortBy
&&
this
.
sortOrder
===
other
.
sortOrder
;
}
}
\ No newline at end of file
src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts
浏览文件 @
cd7b12b6
...
@@ -17,6 +17,7 @@ import { IMessageService, LaterAction } from 'vs/platform/message/common/message
...
@@ -17,6 +17,7 @@ import { IMessageService, LaterAction } from 'vs/platform/message/common/message
import
{
ToggleViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ToggleViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/common/viewletService
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/common/viewletService
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
Query
}
from
'
./extensionQuery
'
;
export
class
InstallAction
extends
Action
{
export
class
InstallAction
extends
Action
{
...
@@ -414,3 +415,47 @@ export class ShowRecommendedExtensionsAction extends Action {
...
@@ -414,3 +415,47 @@ export class ShowRecommendedExtensionsAction extends Action {
return
true
;
return
true
;
}
}
}
}
export
class
ChangeSortAction
extends
Action
{
private
query
:
Query
;
private
disposables
:
IDisposable
[]
=
[];
constructor
(
id
:
string
,
label
:
string
,
onSearchChange
:
Event
<
string
>
,
private
sortBy
:
string
,
private
sortOrder
:
string
,
@
IViewletService
private
viewletService
:
IViewletService
)
{
super
(
id
,
label
,
null
,
true
);
if
(
this
.
sortBy
===
undefined
&&
this
.
sortOrder
===
undefined
)
{
throw
new
Error
(
'
bad arguments
'
);
}
this
.
query
=
Query
.
parse
(
''
);
this
.
enabled
=
false
;
onSearchChange
(
this
.
onSearchChange
,
this
,
this
.
disposables
);
}
private
onSearchChange
(
value
:
string
):
void
{
const
query
=
Query
.
parse
(
value
);
this
.
query
=
new
Query
(
query
.
value
,
this
.
sortBy
||
query
.
sortBy
,
this
.
sortOrder
||
query
.
sortOrder
);
this
.
enabled
=
this
.
query
.
isValid
()
&&
!
this
.
query
.
equals
(
query
);
}
run
():
TPromise
<
void
>
{
return
this
.
viewletService
.
openViewlet
(
VIEWLET_ID
,
true
)
.
then
(
viewlet
=>
viewlet
as
IExtensionsViewlet
)
.
then
(
viewlet
=>
{
viewlet
.
search
(
this
.
query
.
toString
());
viewlet
.
focus
();
});
}
protected
isEnabled
():
boolean
{
return
true
;
}
}
\ No newline at end of file
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
浏览文件 @
cd7b12b6
...
@@ -16,6 +16,7 @@ import { onUnexpectedError } from 'vs/base/common/errors';
...
@@ -16,6 +16,7 @@ import { onUnexpectedError } from 'vs/base/common/errors';
import
EventOf
,
{
mapEvent
,
filterEvent
}
from
'
vs/base/common/event
'
;
import
EventOf
,
{
mapEvent
,
filterEvent
}
from
'
vs/base/common/event
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
domEvent
}
from
'
vs/base/browser/event
'
;
import
{
domEvent
}
from
'
vs/base/browser/event
'
;
import
{
Separator
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
StandardKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
StandardKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
...
@@ -26,9 +27,10 @@ import { PagedList } from 'vs/base/browser/ui/list/listPaging';
...
@@ -26,9 +27,10 @@ import { PagedList } from 'vs/base/browser/ui/list/listPaging';
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
Delegate
,
Renderer
}
from
'
./extensionsList
'
;
import
{
Delegate
,
Renderer
}
from
'
./extensionsList
'
;
import
{
IExtensionsWorkbenchService
,
IExtension
,
IExtensionsViewlet
,
VIEWLET_ID
}
from
'
./extensions
'
;
import
{
IExtensionsWorkbenchService
,
IExtension
,
IExtensionsViewlet
,
VIEWLET_ID
}
from
'
./extensions
'
;
import
{
ShowRecommendedExtensionsAction
,
ShowPopularExtensionsAction
,
ShowInstalledExtensionsAction
,
ShowOutdatedExtensionsAction
,
ClearExtensionsInputAction
}
from
'
./extensionsActions
'
;
import
{
ShowRecommendedExtensionsAction
,
ShowPopularExtensionsAction
,
ShowInstalledExtensionsAction
,
ShowOutdatedExtensionsAction
,
ClearExtensionsInputAction
,
ChangeSortAction
}
from
'
./extensionsActions
'
;
import
{
IExtensionManagementService
,
IExtensionGalleryService
,
IExtensionTipsService
,
SortBy
,
SortOrder
,
IQueryOptions
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
IExtensionManagementService
,
IExtensionGalleryService
,
IExtensionTipsService
,
SortBy
,
SortOrder
,
IQueryOptions
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
ExtensionsInput
}
from
'
./extensionsInput
'
;
import
{
ExtensionsInput
}
from
'
./extensionsInput
'
;
import
{
Query
}
from
'
./extensionQuery
'
;
import
{
IProgressService
}
from
'
vs/platform/progress/common/progress
'
;
import
{
IProgressService
}
from
'
vs/platform/progress/common/progress
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IURLService
}
from
'
vs/platform/url/common/url
'
;
import
{
IURLService
}
from
'
vs/platform/url/common/url
'
;
...
@@ -154,7 +156,12 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet {
...
@@ -154,7 +156,12 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet {
this
.
instantiationService
.
createInstance
(
ShowInstalledExtensionsAction
,
ShowInstalledExtensionsAction
.
ID
,
ShowInstalledExtensionsAction
.
LABEL
),
this
.
instantiationService
.
createInstance
(
ShowInstalledExtensionsAction
,
ShowInstalledExtensionsAction
.
ID
,
ShowInstalledExtensionsAction
.
LABEL
),
this
.
instantiationService
.
createInstance
(
ShowOutdatedExtensionsAction
,
ShowOutdatedExtensionsAction
.
ID
,
ShowOutdatedExtensionsAction
.
LABEL
),
this
.
instantiationService
.
createInstance
(
ShowOutdatedExtensionsAction
,
ShowOutdatedExtensionsAction
.
ID
,
ShowOutdatedExtensionsAction
.
LABEL
),
this
.
instantiationService
.
createInstance
(
ShowRecommendedExtensionsAction
,
ShowRecommendedExtensionsAction
.
ID
,
ShowRecommendedExtensionsAction
.
LABEL
),
this
.
instantiationService
.
createInstance
(
ShowRecommendedExtensionsAction
,
ShowRecommendedExtensionsAction
.
ID
,
ShowRecommendedExtensionsAction
.
LABEL
),
this
.
instantiationService
.
createInstance
(
ShowPopularExtensionsAction
,
ShowPopularExtensionsAction
.
ID
,
ShowPopularExtensionsAction
.
LABEL
)
this
.
instantiationService
.
createInstance
(
ShowPopularExtensionsAction
,
ShowPopularExtensionsAction
.
ID
,
ShowPopularExtensionsAction
.
LABEL
),
new
Separator
(),
this
.
instantiationService
.
createInstance
(
ChangeSortAction
,
'
extensions.sort.install.asc
'
,
localize
(
'
sort by installs
'
,
"
Sort By: Install Count
"
),
this
.
onSearchChange
,
'
installs
'
,
undefined
),
new
Separator
(),
this
.
instantiationService
.
createInstance
(
ChangeSortAction
,
'
extensions.sort.asc
'
,
localize
(
'
ascending
'
,
"
Sort Order: ↑
"
),
this
.
onSearchChange
,
undefined
,
'
asc
'
),
this
.
instantiationService
.
createInstance
(
ChangeSortAction
,
'
extensions.sort.desc
'
,
localize
(
'
descending
'
,
"
Sort Order: ↓
"
),
this
.
onSearchChange
,
undefined
,
'
desc
'
),
];
];
}
}
...
@@ -196,10 +203,11 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet {
...
@@ -196,10 +203,11 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet {
return
local
.
then
(
result
=>
new
PagedModel
(
result
));
return
local
.
then
(
result
=>
new
PagedModel
(
result
));
}
}
const
query
=
Query
.
parse
(
value
);
let
options
:
IQueryOptions
=
{};
let
options
:
IQueryOptions
=
{};
if
(
/@recommended/i
.
test
(
value
))
{
if
(
/@recommended/i
.
test
(
query
.
value
))
{
value
=
value
.
replace
(
/@recommended/g
,
''
).
trim
();
const
value
=
query
.
value
.
replace
(
/@recommended/g
,
''
).
trim
();
return
this
.
extensionsWorkbenchService
.
queryLocal
().
then
(
local
=>
{
return
this
.
extensionsWorkbenchService
.
queryLocal
().
then
(
local
=>
{
const
names
=
this
.
tipsService
.
getRecommendations
()
const
names
=
this
.
tipsService
.
getRecommendations
()
...
@@ -215,29 +223,17 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet {
...
@@ -215,29 +223,17 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet {
});
});
}
}
value
=
value
.
replace
(
/@sort:
(\w
+
)(
-asc|-desc
)?\b
/g
,
(
match
,
by
,
order
)
=>
{
switch
(
query
.
sortBy
)
{
let
sortOrder
=
SortOrder
.
Default
;
case
'
installs
'
:
options
=
assign
(
options
,
{
sortBy
:
SortBy
.
InstallCount
});
break
;
switch
(
order
)
{
case
'
-asc
'
:
sortOrder
=
SortOrder
.
Ascending
;
break
;
case
'
-desc
'
:
sortOrder
=
SortOrder
.
Descending
;
break
;
}
}
let
sortBy
=
SortBy
.
NoneOrRelevance
;
switch
(
query
.
sortOrder
)
{
case
'
asc
'
:
options
=
assign
(
options
,
{
sortOrder
:
SortOrder
.
Ascending
});
break
;
switch
(
by
)
{
case
'
desc
'
:
options
=
assign
(
options
,
{
sortOrder
:
SortOrder
.
Descending
});
break
;
case
'
installs
'
:
sortBy
=
SortBy
.
InstallCount
;
break
;
default
:
return
match
;
}
}
options
=
assign
(
options
,
{
sortBy
,
sortOrder
});
if
(
query
.
value
)
{
return
''
;
options
=
assign
(
options
,
{
text
:
query
.
value
});
});
value
=
value
.
trim
();
if
(
value
)
{
options
=
assign
(
options
,
{
text
:
value
});
}
}
return
this
.
extensionsWorkbenchService
.
queryGallery
(
options
)
return
this
.
extensionsWorkbenchService
.
queryGallery
(
options
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录