Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
9c94be39
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,发现更多精彩内容 >>
提交
9c94be39
编写于
6月 19, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
wip: adopt IExtension
上级
877cd914
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
56 addition
and
85 deletion
+56
-85
src/vs/workbench/parts/extensions/common/extensionsInput.ts
src/vs/workbench/parts/extensions/common/extensionsInput.ts
+9
-12
src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts
...ench/parts/extensions/electron-browser/extensionEditor.ts
+6
-7
src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts
...bench/parts/extensions/electron-browser/extensionsList.ts
+9
-44
src/vs/workbench/parts/extensions/electron-browser/extensionsModel.ts
...ench/parts/extensions/electron-browser/extensionsModel.ts
+24
-17
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
...ch/parts/extensions/electron-browser/extensionsViewlet.ts
+8
-5
未找到文件。
src/vs/workbench/parts/extensions/common/extensionsInput.ts
浏览文件 @
9c94be39
...
...
@@ -7,14 +7,16 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
EditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
ILocalExtension
,
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
// TODO@joao: layer breaker
import
{
IExtension
}
from
'
../electron-browser/extensionsModel
'
;
export
class
ExtensionsInput
extends
EditorInput
{
static
get
ID
()
{
return
'
workbench.extensions.input2
'
;
}
get
extension
():
I
LocalExtension
|
IGallery
Extension
{
return
this
.
_extension
;
}
get
extension
():
IExtension
{
return
this
.
_extension
;
}
constructor
(
private
_extension
:
I
LocalExtension
|
IGallery
Extension
)
{
constructor
(
private
_extension
:
IExtension
)
{
super
();
}
...
...
@@ -23,14 +25,7 @@ export class ExtensionsInput extends EditorInput {
}
getName
():
string
{
const
local
=
this
.
extension
as
ILocalExtension
;
const
gallery
=
this
.
extension
as
IGalleryExtension
;
if
(
local
.
path
)
{
return
local
.
manifest
.
displayName
||
local
.
manifest
.
name
;
}
else
{
return
gallery
.
displayName
||
gallery
.
name
;
}
return
this
.
extension
.
displayName
;
}
matches
(
other
:
any
):
boolean
{
...
...
@@ -39,7 +34,9 @@ export class ExtensionsInput extends EditorInput {
}
const
otherExtensionInput
=
other
as
ExtensionsInput
;
return
this
.
extension
.
id
===
otherExtensionInput
.
extension
.
id
;
// TODO@joao is this correct?
return
this
.
extension
===
otherExtensionInput
.
extension
;
}
resolve
(
refresh
?:
boolean
):
TPromise
<
any
>
{
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts
浏览文件 @
9c94be39
...
...
@@ -15,7 +15,8 @@ import { append, emmet as $, addClass, removeClass } from 'vs/base/browser/dom';
import
{
BaseEditor
}
from
'
vs/workbench/browser/parts/editor/baseEditor
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
ILocalExtension
,
IGalleryExtension
,
IExtensionGalleryService
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
// import { IExtension } from './extensionsModel';
import
{
IExtensionGalleryService
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
ExtensionsInput
}
from
'
../common/extensionsInput
'
;
import
{
text
as
downloadText
,
IRequestOptions
}
from
'
vs/base/node/request
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
...
...
@@ -62,15 +63,13 @@ export class ExtensionEditor extends BaseEditor {
this
.
body
.
innerHTML
=
''
;
let
promise
=
TPromise
.
as
<
void
>
(
null
);
const
extension
=
input
.
extension
;
const
local
=
extension
as
ILocalExtension
;
const
gallery
=
extension
as
IGalleryExtension
;
if
(
local
.
path
)
{
// const extension = input.extension;
if
(
1
===
1
/*local.path*/
)
{
// TODO@joao
}
else
{
const
[
version
]
=
gallery
.
versions
;
const
version
=
null
/*gallery.versions[0]*/
;
const
headers
=
version
.
downloadHeaders
;
addClass
(
this
.
body
,
'
loading
'
);
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts
浏览文件 @
9c94be39
...
...
@@ -9,10 +9,10 @@ import { append, emmet as $, addClass, removeClass } from 'vs/base/browser/dom';
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IDelegate
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
IPagedRenderer
}
from
'
vs/base/browser/ui/list/listPaging
'
;
import
{
I
LocalExtension
,
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
I
Extension
}
from
'
./extensionsModel
'
;
export
interface
ITemplateData
{
extension
:
I
LocalExtension
|
IGallery
Extension
;
extension
:
IExtension
;
element
:
HTMLElement
;
icon
:
HTMLImageElement
;
name
:
HTMLElement
;
...
...
@@ -21,12 +21,12 @@ export interface ITemplateData {
description
:
HTMLElement
;
}
export
class
Delegate
implements
IDelegate
<
I
LocalExtension
|
IGallery
Extension
>
{
export
class
Delegate
implements
IDelegate
<
IExtension
>
{
getHeight
()
{
return
62
;
}
getTemplateId
()
{
return
'
extension
'
;
}
}
export
class
Renderer
implements
IPagedRenderer
<
I
LocalExtension
|
IGallery
Extension
,
ITemplateData
>
{
export
class
Renderer
implements
IPagedRenderer
<
IExtension
,
ITemplateData
>
{
private
_templates
:
ITemplateData
[];
get
templates
():
ITemplateData
[]
{
return
this
.
_templates
;
}
...
...
@@ -64,49 +64,14 @@ export class Renderer implements IPagedRenderer<ILocalExtension | IGalleryExtens
data
.
description
.
textContent
=
''
;
}
renderElement
(
extension
:
ILocalExtension
|
IGalleryExtension
,
index
:
number
,
data
:
ITemplateData
):
void
{
const
local
=
extension
as
ILocalExtension
;
const
galleryExtension
=
extension
as
IGalleryExtension
;
if
(
local
.
path
)
{
return
this
.
renderExtension
(
local
,
data
);
}
else
{
return
this
.
renderGalleryExtension
(
galleryExtension
,
data
);
}
}
private
renderExtension
(
extension
:
ILocalExtension
,
data
:
ITemplateData
):
void
{
let
iconUrl
:
string
;
let
publisher
=
extension
.
manifest
.
publisher
;
if
(
extension
.
manifest
.
icon
)
{
iconUrl
=
`file://
${
extension
.
path
}
/
${
extension
.
manifest
.
icon
}
`
;
}
if
(
extension
.
metadata
)
{
publisher
=
extension
.
metadata
.
publisherDisplayName
||
publisher
;
}
renderElement
(
extension
:
IExtension
,
index
:
number
,
data
:
ITemplateData
):
void
{
data
.
extension
=
extension
;
removeClass
(
data
.
element
,
'
loading
'
);
data
.
icon
.
src
=
iconUrl
||
require
.
toUrl
(
'
./media/defaultIcon.png
'
);
data
.
name
.
textContent
=
extension
.
manifest
.
displayName
||
extension
.
manifest
.
name
;
data
.
version
.
textContent
=
`
${
extension
.
manifest
.
version
}
`
;
data
.
author
.
textContent
=
`
${
publisher
}
`
;
data
.
description
.
textContent
=
extension
.
manifest
.
description
;
}
private
renderGalleryExtension
(
extension
:
IGalleryExtension
,
data
:
ITemplateData
):
void
{
const
version
=
extension
.
versions
[
0
];
const
publisher
=
extension
.
publisherDisplayName
||
extension
.
publisher
;
const
iconUrl
=
version
.
iconUrl
;
data
.
extension
=
extension
;
removeClass
(
data
.
element
,
'
loading
'
);
data
.
icon
.
src
=
iconUrl
||
require
.
toUrl
(
'
./media/defaultIcon.png
'
);
data
.
name
.
textContent
=
extension
.
displayName
||
extension
.
name
;
data
.
version
.
textContent
=
`
${
version
.
version
}
`
;
data
.
author
.
textContent
=
`
${
publisher
}
`
;
data
.
icon
.
src
=
extension
.
iconUrl
;
data
.
name
.
textContent
=
extension
.
displayName
;
data
.
version
.
textContent
=
extension
.
version
;
data
.
author
.
textContent
=
extension
.
publisherDisplayName
;
data
.
description
.
textContent
=
extension
.
description
;
}
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsModel.ts
浏览文件 @
9c94be39
...
...
@@ -9,7 +9,7 @@ import 'vs/css!./media/extensionsViewlet';
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
IPager
}
from
'
vs/base/common/paging
'
;
import
{
IPager
,
mapPager
}
from
'
vs/base/common/paging
'
;
import
{
IExtensionManagementService
,
IExtensionGalleryService
,
ILocalExtension
,
IGalleryExtension
,
IQueryOptions
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
export
enum
ExtensionState
{
...
...
@@ -21,8 +21,9 @@ export enum ExtensionState {
export
interface
IExtension
{
name
:
string
;
publisher
:
string
;
displayName
:
string
;
publisher
:
string
;
publisherDisplayName
:
string
;
version
:
string
;
description
:
string
;
iconUrl
:
string
;
...
...
@@ -30,10 +31,10 @@ export interface IExtension {
class
Extension
implements
IExtension
{
local
:
ILocalExtension
;
gallery
:
IGalleryExtension
;
constructor
(
)
{
constructor
(
public
local
:
ILocalExtension
,
public
gallery
:
IGalleryExtension
=
null
)
{
}
...
...
@@ -41,24 +42,28 @@ class Extension implements IExtension {
return
this
.
local
?
this
.
local
.
manifest
.
name
:
this
.
gallery
.
name
;
}
get
publisher
():
string
{
get
displayName
():
string
{
if
(
this
.
local
)
{
if
(
this
.
local
.
metadata
&&
this
.
local
.
metadata
.
publisherDisplayName
)
{
return
this
.
local
.
metadata
.
publisherDisplayName
;
return
this
.
local
.
manifest
.
displayName
||
this
.
local
.
manifest
.
name
;
}
return
this
.
local
.
manifest
.
publisher
;
return
this
.
gallery
.
displayName
||
this
.
gallery
.
name
;
}
return
this
.
gallery
.
publisherDisplayName
||
this
.
gallery
.
publisher
;
get
publisher
():
string
{
return
this
.
local
?
this
.
local
.
manifest
.
publisher
:
this
.
gallery
.
publisher
;
}
get
d
isplayName
():
string
{
get
publisherD
isplayName
():
string
{
if
(
this
.
local
)
{
return
this
.
local
.
manifest
.
displayName
||
this
.
local
.
manifest
.
name
;
if
(
this
.
local
.
metadata
&&
this
.
local
.
metadata
.
publisherDisplayName
)
{
return
this
.
local
.
metadata
.
publisherDisplayName
;
}
return
this
.
gallery
.
displayName
||
this
.
gallery
.
name
;
return
this
.
local
.
manifest
.
publisher
;
}
return
this
.
gallery
.
publisherDisplayName
||
this
.
gallery
.
publisher
;
}
get
version
():
string
{
...
...
@@ -99,12 +104,14 @@ export class ExtensionsModel {
// todo
}
getInstalled
():
IExtension
[]
{
throw
new
Error
(
'
not implemented
'
);
getInstalled
():
TPromise
<
IExtension
[]
>
{
return
this
.
extensionService
.
getInstalled
()
.
then
(
result
=>
result
.
map
(
local
=>
new
Extension
(
local
)));
}
queryGallery
(
options
:
IQueryOptions
=
{}):
TPromise
<
IPager
<
IExtension
>>
{
throw
new
Error
(
'
not implemented
'
);
return
this
.
galleryService
.
query
(
options
)
.
then
(
result
=>
mapPager
(
result
,
gallery
=>
new
Extension
(
null
,
gallery
)));
}
getState
(
extension
:
IExtension
):
ExtensionState
{
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
浏览文件 @
9c94be39
...
...
@@ -18,7 +18,8 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import
{
PagedList
}
from
'
vs/base/browser/ui/list/listPaging
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
Delegate
,
Renderer
}
from
'
./extensionsList
'
;
import
{
IExtensionManagementService
,
IExtensionGalleryService
,
ILocalExtension
,
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
ExtensionsModel
,
IExtension
}
from
'
./extensionsModel
'
;
import
{
IExtensionManagementService
,
IExtensionGalleryService
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
ExtensionsInput
}
from
'
../common/extensionsInput
'
;
import
{
IProgressService
}
from
'
vs/platform/progress/common/progress
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
...
...
@@ -32,7 +33,8 @@ export class ExtensionsViewlet extends Viewlet {
private
root
:
HTMLElement
;
private
searchBox
:
HTMLInputElement
;
private
extensionsBox
:
HTMLElement
;
private
list
:
PagedList
<
ILocalExtension
|
IGalleryExtension
>
;
private
model
:
ExtensionsModel
;
private
list
:
PagedList
<
IExtension
>
;
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
...
...
@@ -45,6 +47,7 @@ export class ExtensionsViewlet extends Viewlet {
super
(
ExtensionsViewlet
.
ID
,
telemetryService
);
this
.
searchDelayer
=
new
ThrottledDelayer
(
500
);
this
.
disposables
=
[];
this
.
model
=
instantiationService
.
createInstance
(
ExtensionsModel
);
}
create
(
parent
:
Builder
):
TPromise
<
void
>
{
...
...
@@ -100,13 +103,13 @@ export class ExtensionsViewlet extends Viewlet {
private
doSearch
(
text
:
string
=
''
):
TPromise
<
any
>
{
const
progressRunner
=
this
.
progressService
.
show
(
true
);
let
promise
:
TPromise
<
PagedModel
<
I
LocalExtension
|
IGallery
Extension
>>
;
let
promise
:
TPromise
<
PagedModel
<
IExtension
>>
;
if
(
text
)
{
promise
=
this
.
galleryService
.
qu
ery
({
text
})
promise
=
this
.
model
.
queryGall
ery
({
text
})
.
then
(
result
=>
new
PagedModel
(
result
));
}
else
{
promise
=
this
.
extensionService
.
getInstalled
()
promise
=
this
.
model
.
getInstalled
()
.
then
(
result
=>
new
SinglePagePagedModel
(
result
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录