Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
960258c8
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,发现更多精彩内容 >>
提交
960258c8
编写于
12月 09, 2015
作者:
I
Isidor Nikolic
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1123 from Microsoft/isidorn/extensions-statusbar
Isidorn/extensions statusbar
上级
53186e97
a8eed3eb
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
133 addition
and
3 deletion
+133
-3
src/vs/platform/plugins/common/abstractPluginService.ts
src/vs/platform/plugins/common/abstractPluginService.ts
+5
-1
src/vs/platform/plugins/common/nativePluginService.ts
src/vs/platform/plugins/common/nativePluginService.ts
+11
-1
src/vs/platform/plugins/common/plugins.ts
src/vs/platform/plugins/common/plugins.ts
+5
-0
src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts
...ts/extensions/electron-browser/extensions.contribution.ts
+9
-0
src/vs/workbench/parts/extensions/electron-browser/extensions.css
...orkbench/parts/extensions/electron-browser/extensions.css
+13
-0
src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts
...ch/parts/extensions/electron-browser/extensionsActions.ts
+40
-0
src/vs/workbench/parts/extensions/electron-browser/extensionsWidgets.ts
...ch/parts/extensions/electron-browser/extensionsWidgets.ts
+48
-0
src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchExtension.ts
...tensions/electron-browser/extensionsWorkbenchExtension.ts
+2
-1
未找到文件。
src/vs/platform/plugins/common/abstractPluginService.ts
浏览文件 @
960258c8
...
...
@@ -5,7 +5,7 @@
'
use strict
'
;
import
nls
=
require
(
'
vs/nls
'
);
import
{
IPluginDescription
,
IPluginService
,
IMessage
,
IPointListener
,
IActivationEventListener
}
from
'
vs/platform/plugins/common/plugins
'
;
import
{
IPluginDescription
,
IPluginService
,
IMessage
,
IPointListener
,
IActivationEventListener
,
IPluginStatus
}
from
'
vs/platform/plugins/common/plugins
'
;
import
WinJS
=
require
(
'
vs/base/common/winjs.base
'
);
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
Errors
=
require
(
'
vs/base/common/errors
'
);
...
...
@@ -111,6 +111,10 @@ export abstract class AbstractPluginService implements IPluginService {
return
this
.
activatedPlugins
[
pluginId
].
exports
;
}
public
getPluginsStatus
():
{
[
id
:
string
]:
IPluginStatus
}
{
return
null
;
}
public
isActivated
(
pluginId
:
string
):
boolean
{
return
hasOwnProperty
.
call
(
this
.
activatedPlugins
,
pluginId
);
}
...
...
src/vs/platform/plugins/common/nativePluginService.ts
浏览文件 @
960258c8
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
IPluginDescription
,
IMessage
}
from
'
vs/platform/plugins/common/plugins
'
;
import
{
IPluginDescription
,
IMessage
,
IPluginStatus
}
from
'
vs/platform/plugins/common/plugins
'
;
import
{
PluginsRegistry
}
from
'
vs/platform/plugins/common/pluginsRegistry
'
;
import
WinJS
=
require
(
'
vs/base/common/winjs.base
'
);
import
{
Remotable
,
IThreadService
}
from
'
vs/platform/thread/common/thread
'
;
...
...
@@ -64,6 +64,7 @@ export class MainProcessPluginService extends AbstractPluginService {
private
_telemetryService
:
ITelemetryService
;
private
_proxy
:
PluginHostPluginService
;
private
_isDev
:
boolean
;
private
_pluginsStatus
:
{
[
id
:
string
]:
IPluginStatus
};
/**
* This class is constructed manually because it is a service, so it doesn't use any ctor injection
...
...
@@ -83,8 +84,13 @@ export class MainProcessPluginService extends AbstractPluginService {
this
.
_threadService
=
threadService
;
this
.
_telemetryService
=
telemetryService
;
this
.
_proxy
=
this
.
_threadService
.
getRemotable
(
PluginHostPluginService
);
this
.
_pluginsStatus
=
{};
PluginsRegistry
.
handleExtensionPoints
((
severity
,
source
,
message
)
=>
{
if
(
!
this
.
_pluginsStatus
[
source
])
{
this
.
_pluginsStatus
[
source
]
=
{
messages
:
[]
};
}
this
.
_pluginsStatus
[
source
].
messages
.
push
({
type
:
severity
,
source
,
message
});
this
.
showMessage
(
severity
,
source
,
message
);
});
}
...
...
@@ -158,6 +164,10 @@ export class MainProcessPluginService extends AbstractPluginService {
}
}
public
getPluginsStatus
():
{
[
id
:
string
]:
IPluginStatus
}
{
return
this
.
_pluginsStatus
;
}
// -- overwriting AbstractPluginService
protected
_actualActivatePlugin
(
pluginDescription
:
IPluginDescription
):
WinJS
.
TPromise
<
ActivatedPlugin
>
{
...
...
src/vs/platform/plugins/common/plugins.ts
浏览文件 @
960258c8
...
...
@@ -40,6 +40,10 @@ export interface IMessage {
source
:
string
;
}
export
interface
IPluginStatus
{
messages
:
IMessage
[];
}
export
interface
IPluginService
{
serviceId
:
ServiceIdentifier
<
any
>
;
activateByEvent
(
activationEvent
:
string
):
TPromise
<
any
>
;
...
...
@@ -52,6 +56,7 @@ export interface IPluginService {
get
(
pluginId
:
string
):
any
;
onReady
():
TPromise
<
boolean
>
;
getPluginsStatus
():
{
[
id
:
string
]:
IPluginStatus
};
}
export
var
INSTANCE
:
IPluginService
=
null
;
\ No newline at end of file
src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts
浏览文件 @
960258c8
...
...
@@ -5,6 +5,8 @@
import
platform
=
require
(
'
vs/platform/platform
'
);
import
{
registerSingleton
}
from
'
vs/platform/instantiation/common/extensions
'
;
import
statusbar
=
require
(
'
vs/workbench/browser/parts/statusbar/statusbar
'
);
import
{
ExtensionsStatusbarItem
}
from
'
vs/workbench/parts/extensions/electron-browser/extensionsWidgets
'
;
import
{
IGalleryService
}
from
'
vs/workbench/parts/extensions/common/extensions
'
;
import
{
GalleryService
}
from
'
vs/workbench/parts/extensions/node/vsoGalleryService
'
;
import
{
IWorkbenchContributionsRegistry
,
Extensions
as
WorkbenchExtensions
}
from
'
vs/workbench/common/contributions
'
;
...
...
@@ -17,3 +19,10 @@ registerSingleton(IGalleryService, GalleryService);
(
<
IWorkbenchContributionsRegistry
>
platform
.
Registry
.
as
(
WorkbenchExtensions
.
Workbench
)).
registerWorkbenchContribution
(
ExtensionsWorkbenchExtension
);
// Register Statusbar item
(
<
statusbar
.
IStatusbarRegistry
>
platform
.
Registry
.
as
(
statusbar
.
Extensions
.
Statusbar
)).
registerStatusbarItem
(
new
statusbar
.
StatusbarItemDescriptor
(
ExtensionsStatusbarItem
,
statusbar
.
StatusbarAlignment
.
LEFT
,
10
/* Low Priority */
));
\ No newline at end of file
src/vs/workbench/parts/extensions/electron-browser/extensions.css
浏览文件 @
960258c8
...
...
@@ -119,4 +119,17 @@
-moz-transform
:
none
;
-o-transform
:
none
;
transform
:
none
;
}
/* Status bar */
.monaco-shell
.extensions-statusbar
{
cursor
:
pointer
;
}
.monaco-shell
.extensions-statusbar.warning
::before
{
color
:
yellow
;
}
.monaco-shell
.extensions-statusbar.error
::before
{
color
:
#FF9D00
;
}
\ No newline at end of file
src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts
浏览文件 @
960258c8
...
...
@@ -6,6 +6,9 @@
import
nls
=
require
(
'
vs/nls
'
);
import
{
Promise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Action
}
from
'
vs/base/common/actions
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
{
IPluginService
,
IPluginStatus
}
from
'
vs/platform/plugins/common/plugins
'
;
import
{
IMessageService
}
from
'
vs/platform/message/common/message
'
;
import
{
IExtensionsService
}
from
'
vs/workbench/parts/extensions/common/extensions
'
;
import
{
IQuickOpenService
}
from
'
vs/workbench/services/quickopen/browser/quickOpenService
'
;
...
...
@@ -32,6 +35,43 @@ export class ListExtensionsAction extends Action {
}
}
export
class
ShowExtensionsStatusAction
extends
Action
{
static
ID
=
'
workbench.extensions.action.showExtensionsStatus
'
;
static
LABEL
=
nls
.
localize
(
'
showInstalledExtensions
'
,
"
Show Extensions Status
"
);
private
status
:
{
[
id
:
string
]:
IPluginStatus
};
constructor
(
id
:
string
,
label
:
string
,
@
IPluginService
pluginService
:
IPluginService
,
@
IMessageService
private
messageService
:
IMessageService
)
{
super
(
id
,
label
,
null
,
true
);
pluginService
.
onReady
().
then
(()
=>
{
this
.
status
=
pluginService
.
getPluginsStatus
();
});
}
public
run
():
Promise
{
Object
.
keys
(
this
.
status
).
forEach
(
key
=>
{
this
.
status
[
key
].
messages
.
forEach
(
m
=>
{
if
(
m
.
type
>
Severity
.
Ignore
)
{
this
.
messageService
.
show
(
m
.
type
,
m
.
message
);
}
});
});
return
Promise
.
as
(
null
);
}
protected
isEnabled
():
boolean
{
return
true
;
}
}
export
class
InstallExtensionAction
extends
Action
{
static
ID
=
'
workbench.extensions.action.installExtension
'
;
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsWidgets.ts
0 → 100644
浏览文件 @
960258c8
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
nls
=
require
(
'
vs/nls
'
);
import
Severity
from
'
vs/base/common/severity
'
;
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
dom
=
require
(
'
vs/base/browser/dom
'
);
import
lifecycle
=
require
(
'
vs/base/common/lifecycle
'
);
import
statusbar
=
require
(
'
vs/workbench/browser/parts/statusbar/statusbar
'
);
import
{
IPluginService
}
from
'
vs/platform/plugins/common/plugins
'
;
import
{
IQuickOpenService
}
from
'
vs/workbench/services/quickopen/browser/quickOpenService
'
;
var
$
=
dom
.
emmet
;
export
class
ExtensionsStatusbarItem
implements
statusbar
.
IStatusbarItem
{
private
toDispose
:
lifecycle
.
IDisposable
[];
private
domNode
:
HTMLElement
;
constructor
(
@
IPluginService
pluginService
:
IPluginService
,
@
IQuickOpenService
private
quickOpenService
:
IQuickOpenService
)
{
this
.
toDispose
=
[];
pluginService
.
onReady
().
then
(()
=>
{
const
pluginsStatus
=
pluginService
.
getPluginsStatus
();
Object
.
keys
(
pluginsStatus
).
forEach
(
key
=>
{
const
severity
=
pluginsStatus
[
key
].
messages
.
reduce
((
maxSeverity
,
message
)
=>
Math
.
max
(
maxSeverity
,
message
.
type
),
Severity
.
Ignore
);
this
.
domNode
.
classList
.
add
(
Severity
[
severity
].
toLowerCase
());
});
});
}
public
render
(
container
:
HTMLElement
):
lifecycle
.
IDisposable
{
this
.
domNode
=
dom
.
append
(
container
,
$
(
'
.extensions-statusbar octicon octicon-package
'
));
this
.
domNode
.
title
=
nls
.
localize
(
'
extensions
'
,
"
Extensions
"
),
this
.
toDispose
.
push
(
dom
.
addDisposableListener
(
this
.
domNode
,
'
click
'
,
()
=>
{
this
.
quickOpenService
.
show
(
'
>extensions:
'
).
done
(
null
,
errors
.
onUnexpectedError
);
}));
return
{
dispose
:
()
=>
lifecycle
.
disposeAll
(
this
.
toDispose
)
};
}
}
src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchExtension.ts
浏览文件 @
960258c8
...
...
@@ -16,7 +16,7 @@ import { IWorkspaceContextService } from 'vs/workbench/services/workspace/common
import
{
ReloadWindowAction
}
from
'
vs/workbench/electron-browser/actions
'
;
import
wbaregistry
=
require
(
'
vs/workbench/browser/actionRegistry
'
);
import
{
SyncActionDescriptor
}
from
'
vs/platform/actions/common/actions
'
;
import
{
ListExtensionsAction
,
InstallExtensionAction
,
ListOutdatedExtensionsAction
}
from
'
./extensionsActions
'
;
import
{
ListExtensionsAction
,
ShowExtensionsStatusAction
,
InstallExtensionAction
,
ListOutdatedExtensionsAction
}
from
'
./extensionsActions
'
;
import
{
IQuickOpenRegistry
,
Extensions
,
QuickOpenHandlerDescriptor
}
from
'
vs/workbench/browser/quickopen
'
;
import
ipc
=
require
(
'
ipc
'
);
...
...
@@ -45,6 +45,7 @@ export class ExtensionsWorkbenchExtension implements IWorkbenchContribution {
const
extensionsCategory
=
nls
.
localize
(
'
extensionsCategory
'
,
"
Extensions
"
);
const
actionRegistry
=
(
<
wbaregistry
.
IWorkbenchActionRegistry
>
platform
.
Registry
.
as
(
wbaregistry
.
Extensions
.
WorkbenchActions
));
actionRegistry
.
registerWorkbenchAction
(
new
SyncActionDescriptor
(
ListExtensionsAction
,
ListExtensionsAction
.
ID
,
ListExtensionsAction
.
LABEL
),
extensionsCategory
);
actionRegistry
.
registerWorkbenchAction
(
new
SyncActionDescriptor
(
ShowExtensionsStatusAction
,
ShowExtensionsStatusAction
.
ID
,
ShowExtensionsStatusAction
.
LABEL
),
extensionsCategory
);
(
<
IQuickOpenRegistry
>
platform
.
Registry
.
as
(
Extensions
.
Quickopen
)).
registerQuickOpenHandler
(
new
QuickOpenHandlerDescriptor
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录