Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
2def84c1
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,体验更适合开发者的 AI 搜索 >>
提交
2def84c1
编写于
12月 20, 2019
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#87246 Abstract viewlet and panel registry
上级
de5df482
变更
24
隐藏空白更改
内联
并排
Showing
24 changed file
with
253 addition
and
300 deletion
+253
-300
src/vs/workbench/api/browser/viewsExtensionPoint.ts
src/vs/workbench/api/browser/viewsExtensionPoint.ts
+9
-32
src/vs/workbench/browser/parts/views/viewPaneContainer.ts
src/vs/workbench/browser/parts/views/viewPaneContainer.ts
+1
-1
src/vs/workbench/browser/workbench.contribution.ts
src/vs/workbench/browser/workbench.contribution.ts
+86
-0
src/vs/workbench/common/views.ts
src/vs/workbench/common/views.ts
+12
-16
src/vs/workbench/contrib/debug/browser/debug.contribution.ts
src/vs/workbench/contrib/debug/browser/debug.contribution.ts
+17
-18
src/vs/workbench/contrib/debug/browser/debugViewlet.ts
src/vs/workbench/contrib/debug/browser/debugViewlet.ts
+0
-18
src/vs/workbench/contrib/debug/common/debug.ts
src/vs/workbench/contrib/debug/common/debug.ts
+0
-3
src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts
...nch/contrib/extensions/browser/extensions.contribution.ts
+11
-13
src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts
...workbench/contrib/extensions/browser/extensionsViewlet.ts
+6
-20
src/vs/workbench/contrib/extensions/common/extensions.ts
src/vs/workbench/contrib/extensions/common/extensions.ts
+10
-4
src/vs/workbench/contrib/files/browser/explorerViewlet.ts
src/vs/workbench/contrib/files/browser/explorerViewlet.ts
+13
-19
src/vs/workbench/contrib/files/browser/files.contribution.ts
src/vs/workbench/contrib/files/browser/files.contribution.ts
+3
-12
src/vs/workbench/contrib/files/common/files.ts
src/vs/workbench/contrib/files/common/files.ts
+1
-8
src/vs/workbench/contrib/markers/browser/markers.contribution.ts
...workbench/contrib/markers/browser/markers.contribution.ts
+20
-40
src/vs/workbench/contrib/outline/browser/outline.contribution.ts
...workbench/contrib/outline/browser/outline.contribution.ts
+1
-1
src/vs/workbench/contrib/remote/browser/remote.ts
src/vs/workbench/contrib/remote/browser/remote.ts
+34
-12
src/vs/workbench/contrib/remote/common/remote.contribution.ts
...vs/workbench/contrib/remote/common/remote.contribution.ts
+0
-27
src/vs/workbench/contrib/scm/browser/scm.contribution.ts
src/vs/workbench/contrib/scm/browser/scm.contribution.ts
+11
-10
src/vs/workbench/contrib/scm/browser/scmViewlet.ts
src/vs/workbench/contrib/scm/browser/scmViewlet.ts
+4
-4
src/vs/workbench/contrib/scm/common/scm.ts
src/vs/workbench/contrib/scm/common/scm.ts
+0
-4
src/vs/workbench/contrib/search/browser/search.contribution.ts
...s/workbench/contrib/search/browser/search.contribution.ts
+13
-13
src/vs/workbench/contrib/search/browser/searchViewlet.ts
src/vs/workbench/contrib/search/browser/searchViewlet.ts
+0
-17
src/vs/workbench/services/search/common/search.ts
src/vs/workbench/services/search/common/search.ts
+0
-7
src/vs/workbench/test/browser/parts/views/views.test.ts
src/vs/workbench/test/browser/parts/views/views.test.ts
+1
-1
未找到文件。
src/vs/workbench/api/browser/viewsExtensionPoint.ts
浏览文件 @
2def84c1
...
...
@@ -22,14 +22,13 @@ import { VIEWLET_ID as DEBUG } from 'vs/workbench/contrib/debug/common/debug';
import
{
VIEWLET_ID
as
REMOTE
}
from
'
vs/workbench/contrib/remote/common/remote.contribution
'
;
import
{
ExtensionIdentifier
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ViewletDescriptor
,
ShowViewletAction
,
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ShowViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IWorkbenchLayoutService
}
from
'
vs/workbench/services/layout/browser/layoutService
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
...
...
@@ -313,7 +312,6 @@ class ViewsExtensionHandler implements IWorkbenchContribution {
if
(
!
viewContainer
)
{
viewContainer
=
this
.
viewContainersRegistry
.
registerViewContainer
({
id
,
hideIfEmpty
:
true
,
name
:
title
,
extensionId
},
ViewContainerLocation
.
Sidebar
);
class
CustomViewPaneContainer
extends
ViewPaneContainer
{
constructor
(
...
...
@@ -331,34 +329,13 @@ class ViewsExtensionHandler implements IWorkbenchContribution {
}
}
// Register a viewlet
class
CustomViewlet
extends
Viewlet
{
constructor
(
@
IConfigurationService
configurationService
:
IConfigurationService
,
@
IWorkbenchLayoutService
layoutService
:
IWorkbenchLayoutService
,
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IWorkspaceContextService
contextService
:
IWorkspaceContextService
,
@
IStorageService
storageService
:
IStorageService
,
@
IEditorService
editorService
:
IEditorService
,
@
IInstantiationService
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
contextMenuService
:
IContextMenuService
,
@
IExtensionService
extensionService
:
IExtensionService
)
{
super
(
id
,
instantiationService
.
createInstance
(
CustomViewPaneContainer
),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
,
layoutService
,
configurationService
);
}
}
const
viewletDescriptor
=
ViewletDescriptor
.
create
(
CustomViewlet
,
viewContainer
=
this
.
viewContainersRegistry
.
registerViewContainer
({
id
,
title
,
undefined
,
order
,
icon
);
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
viewletDescriptor
);
name
:
title
,
extensionId
,
ctorDescriptor
:
{
ctor
:
CustomViewPaneContainer
},
hideIfEmpty
:
true
,
icon
,
},
ViewContainerLocation
.
Sidebar
);
// Register Action to Open Viewlet
class
OpenCustomViewletAction
extends
ShowViewletAction
{
...
...
@@ -432,8 +409,8 @@ class ViewsExtensionHandler implements IWorkbenchContribution {
const
order
=
ExtensionIdentifier
.
equals
(
extension
.
description
.
identifier
,
container
.
extensionId
)
?
index
+
1
:
container
.
o
rderDelegate
?
container
.
o
rderDelegate
.
getOrder
(
item
.
group
)
:
container
.
viewO
rderDelegate
?
container
.
viewO
rderDelegate
.
getOrder
(
item
.
group
)
:
undefined
;
const
viewDescriptor
=
<
ICustomViewDescriptor
>
{
...
...
src/vs/workbench/browser/parts/views/viewPaneContainer.ts
浏览文件 @
2def84c1
...
...
@@ -243,7 +243,7 @@ interface IViewPaneItem {
export
class
ViewPaneContainer
extends
Component
implements
IViewPaneContainer
{
private
readonly
viewContainer
:
ViewContainer
;
readonly
viewContainer
:
ViewContainer
;
private
lastFocusedPane
:
ViewPane
|
undefined
;
private
paneItems
:
IViewPaneItem
[]
=
[];
private
paneview
?:
PaneView
;
...
...
src/vs/workbench/browser/workbench.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -8,6 +8,21 @@ import * as nls from 'vs/nls';
import
{
IConfigurationRegistry
,
Extensions
as
ConfigurationExtensions
,
ConfigurationScope
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
isMacintosh
,
isWindows
,
isLinux
,
isWeb
,
isNative
}
from
'
vs/base/common/platform
'
;
import
{
workbenchConfigurationNodeBase
}
from
'
vs/workbench/common/configuration
'
;
import
{
PanelRegistry
,
Extensions
as
PanelExtensions
,
PanelDescriptor
,
PaneCompositePanel
}
from
'
vs/workbench/browser/panel
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
ViewContainer
,
IViewContainersRegistry
,
Extensions
as
ViewContainerExtensions
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
Viewlet
,
ViewletDescriptor
,
ViewletRegistry
,
Extensions
as
ViewletExtensions
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IWorkbenchLayoutService
}
from
'
vs/workbench/services/layout/browser/layoutService
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
isString
}
from
'
vs/base/common/types
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
// Configuration
(
function
registerConfiguration
():
void
{
...
...
@@ -373,3 +388,74 @@ import { workbenchConfigurationNodeBase } from 'vs/workbench/common/configuratio
}
});
})();
// Viewlets & Panels
(
function
registerViewletsAndPanels
():
void
{
const
registerPanel
=
(
viewContainer
:
ViewContainer
):
void
=>
{
class
PaneContainerPanel
extends
PaneCompositePanel
{
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IStorageService
storageService
:
IStorageService
,
@
IInstantiationService
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
contextMenuService
:
IContextMenuService
,
@
IExtensionService
extensionService
:
IExtensionService
,
@
IWorkspaceContextService
contextService
:
IWorkspaceContextService
)
{
super
(
viewContainer
.
id
,
(
instantiationService
as
any
).
createInstance
(
viewContainer
.
ctorDescriptor
!
.
ctor
,
...(
viewContainer
.
ctorDescriptor
!
.
arguments
||
[])),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
);
}
}
Registry
.
as
<
PanelRegistry
>
(
PanelExtensions
.
Panels
).
registerPanel
(
PanelDescriptor
.
create
(
PaneContainerPanel
,
viewContainer
.
id
,
viewContainer
.
name
,
isString
(
viewContainer
.
icon
)
?
viewContainer
.
icon
:
undefined
,
viewContainer
.
order
,
viewContainer
.
focusCommand
?.
id
,
));
};
const
registerViewlet
=
(
viewContainer
:
ViewContainer
):
void
=>
{
class
PaneContainerViewlet
extends
Viewlet
{
constructor
(
@
IConfigurationService
configurationService
:
IConfigurationService
,
@
IWorkbenchLayoutService
layoutService
:
IWorkbenchLayoutService
,
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IWorkspaceContextService
contextService
:
IWorkspaceContextService
,
@
IStorageService
storageService
:
IStorageService
,
@
IEditorService
editorService
:
IEditorService
,
@
IInstantiationService
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
contextMenuService
:
IContextMenuService
,
@
IExtensionService
extensionService
:
IExtensionService
)
{
super
(
viewContainer
.
id
,
(
instantiationService
as
any
).
createInstance
(
viewContainer
.
ctorDescriptor
!
.
ctor
,
...(
viewContainer
.
ctorDescriptor
!
.
arguments
||
[])),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
,
layoutService
,
configurationService
);
}
}
const
viewletDescriptor
=
ViewletDescriptor
.
create
(
PaneContainerViewlet
,
viewContainer
.
id
,
viewContainer
.
name
,
isString
(
viewContainer
.
icon
)
?
viewContainer
.
icon
:
undefined
,
viewContainer
.
order
,
viewContainer
.
icon
instanceof
URI
?
viewContainer
.
icon
:
undefined
);
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
viewletDescriptor
);
};
const
viewContainerRegistry
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
);
viewContainerRegistry
.
getViewContainers
(
ViewContainerLocation
.
Panel
).
forEach
(
viewContainer
=>
registerPanel
(
viewContainer
));
viewContainerRegistry
.
onDidRegister
(({
viewContainer
,
viewContainerLocation
})
=>
{
switch
(
viewContainerLocation
)
{
case
ViewContainerLocation
.
Panel
:
registerPanel
(
viewContainer
);
return
;
case
ViewContainerLocation
.
Sidebar
:
if
(
viewContainer
.
ctorDescriptor
)
{
registerViewlet
(
viewContainer
);
}
return
;
}
});
})();
src/vs/workbench/common/views.ts
浏览文件 @
2def84c1
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
{
Command
}
from
'
vs/editor/common/modes
'
;
import
{
UriComponents
}
from
'
vs/base/common/uri
'
;
import
{
UriComponents
,
URI
}
from
'
vs/base/common/uri
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
ContextKeyExpr
,
RawContextKey
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
localize
}
from
'
vs/nls
'
;
...
...
@@ -18,6 +18,7 @@ import { IKeybindings } from 'vs/platform/keybinding/common/keybindingsRegistry'
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
ExtensionIdentifier
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
flatten
}
from
'
vs/base/common/arrays
'
;
import
{
IViewPaneContainer
}
from
'
vs/workbench/common/viewPaneContainer
'
;
export
const
TEST_VIEW_CONTAINER_ID
=
'
workbench.view.extension.test
'
;
export
const
FocusedViewContext
=
new
RawContextKey
<
string
>
(
'
focusedView
'
,
''
);
...
...
@@ -38,6 +39,14 @@ export interface IViewContainerDescriptor {
readonly
name
:
string
;
readonly
ctorDescriptor
:
{
ctor
:
new
(...
args
:
any
[])
=>
IViewPaneContainer
,
arguments
?:
any
[]
};
readonly
icon
?:
string
|
URI
;
readonly
order
?:
number
;
readonly
focusCommand
?:
{
id
:
string
,
keybindings
?:
IKeybindings
};
readonly
viewOrderDelegate
?:
ViewOrderDelegate
;
readonly
hideIfEmpty
?:
boolean
;
...
...
@@ -96,16 +105,7 @@ interface ViewOrderDelegate {
getOrder
(
group
?:
string
):
number
|
undefined
;
}
export
class
ViewContainer
{
protected
constructor
(
private
readonly
descriptor
:
IViewContainerDescriptor
)
{
}
readonly
id
:
string
=
this
.
descriptor
.
id
;
readonly
name
:
string
=
this
.
descriptor
.
name
;
readonly
hideIfEmpty
:
boolean
=
!!
this
.
descriptor
.
hideIfEmpty
;
readonly
extensionId
:
ExtensionIdentifier
|
undefined
=
this
.
descriptor
.
extensionId
;
readonly
orderDelegate
:
ViewOrderDelegate
|
undefined
=
this
.
descriptor
.
viewOrderDelegate
;
}
export
interface
ViewContainer
extends
IViewContainerDescriptor
{
}
class
ViewContainersRegistryImpl
extends
Disposable
implements
IViewContainersRegistry
{
...
...
@@ -127,11 +127,7 @@ class ViewContainersRegistryImpl extends Disposable implements IViewContainersRe
return
existing
;
}
const
viewContainer
=
new
class
extends
ViewContainer
{
constructor
()
{
super
(
viewContainerDescriptor
);
}
};
const
viewContainer
:
ViewContainer
=
{
...
viewContainerDescriptor
};
const
viewContainers
=
getOrSet
(
this
.
viewContainers
,
viewContainerLocation
,
[]);
viewContainers
.
push
(
viewContainer
);
this
.
_onDidRegister
.
fire
({
viewContainer
,
viewContainerLocation
});
...
...
src/vs/workbench/contrib/debug/browser/debug.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -13,14 +13,14 @@ import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import
{
IKeybindings
}
from
'
vs/platform/keybinding/common/keybindingsRegistry
'
;
import
{
IConfigurationRegistry
,
Extensions
as
ConfigurationExtensions
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IWorkbenchActionRegistry
,
Extensions
as
WorkbenchActionRegistryExtensions
}
from
'
vs/workbench/common/actions
'
;
import
{
ShowViewletAction
,
Extensions
as
ViewletExtensions
,
ViewletRegistry
,
ViewletDescriptor
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ShowViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
TogglePanelAction
,
Extensions
as
PanelExtensions
,
PanelRegistry
,
PanelDescriptor
}
from
'
vs/workbench/browser/panel
'
;
import
{
BreakpointsView
}
from
'
vs/workbench/contrib/debug/browser/breakpointsView
'
;
import
{
CallStackView
}
from
'
vs/workbench/contrib/debug/browser/callStackView
'
;
import
{
Extensions
as
WorkbenchExtensions
,
IWorkbenchContributionsRegistry
}
from
'
vs/workbench/common/contributions
'
;
import
{
IDebugService
,
VIEWLET_ID
,
REPL_ID
,
CONTEXT_IN_DEBUG_MODE
,
INTERNAL_CONSOLE_OPTIONS_SCHEMA
,
CONTEXT_DEBUG_STATE
,
VARIABLES_VIEW_ID
,
CALLSTACK_VIEW_ID
,
WATCH_VIEW_ID
,
BREAKPOINTS_VIEW_ID
,
VIEW_CONTAINER
,
LOADED_SCRIPTS_VIEW_ID
,
CONTEXT_LOADED_SCRIPTS_SUPPORTED
,
CONTEXT_FOCUSED_SESSION_IS_ATTACH
,
CONTEXT_STEP_BACK_SUPPORTED
,
CONTEXT_CALLSTACK_ITEM_TYPE
,
CONTEXT_RESTART_FRAME_SUPPORTED
,
CONTEXT_JUMP_TO_CURSOR_SUPPORTED
,
CONTEXT_DEBUG_UX
,
CONTEXT_DEBUG_STATE
,
VARIABLES_VIEW_ID
,
CALLSTACK_VIEW_ID
,
WATCH_VIEW_ID
,
BREAKPOINTS_VIEW_ID
,
LOADED_SCRIPTS_VIEW_ID
,
CONTEXT_LOADED_SCRIPTS_SUPPORTED
,
CONTEXT_FOCUSED_SESSION_IS_ATTACH
,
CONTEXT_STEP_BACK_SUPPORTED
,
CONTEXT_CALLSTACK_ITEM_TYPE
,
CONTEXT_RESTART_FRAME_SUPPORTED
,
CONTEXT_JUMP_TO_CURSOR_SUPPORTED
,
CONTEXT_DEBUG_UX
,
}
from
'
vs/workbench/contrib/debug/common/debug
'
;
import
{
IWorkbenchLayoutService
}
from
'
vs/workbench/services/layout/browser/layoutService
'
;
import
{
IPanelService
}
from
'
vs/workbench/services/panel/common/panelService
'
;
...
...
@@ -31,7 +31,7 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import
{
registerCommands
,
ADD_CONFIGURATION_ID
,
TOGGLE_INLINE_BREAKPOINT_ID
,
COPY_STACK_TRACE_ID
,
REVERSE_CONTINUE_ID
,
STEP_BACK_ID
,
RESTART_SESSION_ID
,
TERMINATE_THREAD_ID
,
STEP_OVER_ID
,
STEP_INTO_ID
,
STEP_OUT_ID
,
PAUSE_ID
,
DISCONNECT_ID
,
STOP_ID
,
RESTART_FRAME_ID
,
CONTINUE_ID
,
FOCUS_REPL_ID
,
JUMP_TO_CURSOR_ID
,
RESTART_LABEL
,
STEP_INTO_LABEL
,
STEP_OVER_LABEL
,
STEP_OUT_LABEL
,
PAUSE_LABEL
,
DISCONNECT_LABEL
,
STOP_LABEL
,
CONTINUE_LABEL
}
from
'
vs/workbench/contrib/debug/browser/debugCommands
'
;
import
{
IQuickOpenRegistry
,
Extensions
as
QuickOpenExtensions
,
QuickOpenHandlerDescriptor
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
StatusBarColorProvider
}
from
'
vs/workbench/contrib/debug/browser/statusbarColorProvider
'
;
import
{
IViewsRegistry
,
Extensions
as
ViewExtensions
}
from
'
vs/workbench/common/views
'
;
import
{
IViewsRegistry
,
Extensions
as
ViewExtensions
,
IViewContainersRegistry
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
isMacintosh
}
from
'
vs/base/common/platform
'
;
import
{
ContextKeyExpr
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
...
...
@@ -46,9 +46,9 @@ import { WatchExpressionsView } from 'vs/workbench/contrib/debug/browser/watchEx
import
{
VariablesView
}
from
'
vs/workbench/contrib/debug/browser/variablesView
'
;
import
{
ClearReplAction
,
Repl
}
from
'
vs/workbench/contrib/debug/browser/repl
'
;
import
{
DebugContentProvider
}
from
'
vs/workbench/contrib/debug/common/debugContentProvider
'
;
import
{
DebugViewlet
}
from
'
vs/workbench/contrib/debug/browser/debugViewlet
'
;
import
{
StartView
}
from
'
vs/workbench/contrib/debug/browser/startView
'
;
import
{
ThemeIcon
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
DebugViewPaneContainer
}
from
'
vs/workbench/contrib/debug/browser/debugViewlet
'
;
class
OpenDebugViewletAction
extends
ShowViewletAction
{
public
static
readonly
ID
=
VIEWLET_ID
;
...
...
@@ -79,14 +79,13 @@ class OpenDebugPanelAction extends TogglePanelAction {
}
}
// register viewlet
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
ViewletDescriptor
.
create
(
DebugViewlet
,
VIEWLET_ID
,
VIEW_CONTAINER
.
name
,
'
codicon-debug-alt
'
,
3
));
const
viewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
nls
.
localize
(
'
debugAndRun
'
,
"
Debug and Run
"
),
ctorDescriptor
:
{
ctor
:
DebugViewPaneContainer
},
icon
:
'
codicon-debug-alt
'
,
order
:
3
},
ViewContainerLocation
.
Sidebar
);
const
openViewletKb
:
IKeybindings
=
{
primary
:
KeyMod
.
CtrlCmd
|
KeyMod
.
Shift
|
KeyCode
.
KEY_D
...
...
@@ -107,12 +106,12 @@ Registry.as<PanelRegistry>(PanelExtensions.Panels).registerPanel(PanelDescriptor
// Register default debug views
const
viewsRegistry
=
Registry
.
as
<
IViewsRegistry
>
(
ViewExtensions
.
ViewsRegistry
);
viewsRegistry
.
registerViews
([{
id
:
VARIABLES_VIEW_ID
,
name
:
nls
.
localize
(
'
variables
'
,
"
Variables
"
),
ctorDescriptor
:
{
ctor
:
VariablesView
},
order
:
10
,
weight
:
40
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusVariablesView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
WATCH_VIEW_ID
,
name
:
nls
.
localize
(
'
watch
'
,
"
Watch
"
),
ctorDescriptor
:
{
ctor
:
WatchExpressionsView
},
order
:
20
,
weight
:
10
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusWatchView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
CALLSTACK_VIEW_ID
,
name
:
nls
.
localize
(
'
callStack
'
,
"
Call Stack
"
),
ctorDescriptor
:
{
ctor
:
CallStackView
},
order
:
30
,
weight
:
30
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusCallStackView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
BREAKPOINTS_VIEW_ID
,
name
:
nls
.
localize
(
'
breakpoints
'
,
"
Breakpoints
"
),
ctorDescriptor
:
{
ctor
:
BreakpointsView
},
order
:
40
,
weight
:
20
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusBreakpointsView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
StartView
.
ID
,
name
:
StartView
.
LABEL
,
ctorDescriptor
:
{
ctor
:
StartView
},
order
:
10
,
weight
:
40
,
canToggleVisibility
:
true
,
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
simple
'
)
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
LOADED_SCRIPTS_VIEW_ID
,
name
:
nls
.
localize
(
'
loadedScripts
'
,
"
Loaded Scripts
"
),
ctorDescriptor
:
{
ctor
:
LoadedScriptsView
},
order
:
35
,
weight
:
5
,
canToggleVisibility
:
true
,
collapsed
:
true
,
when
:
ContextKeyExpr
.
and
(
CONTEXT_LOADED_SCRIPTS_SUPPORTED
,
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
))
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
VARIABLES_VIEW_ID
,
name
:
nls
.
localize
(
'
variables
'
,
"
Variables
"
),
ctorDescriptor
:
{
ctor
:
VariablesView
},
order
:
10
,
weight
:
40
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusVariablesView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
viewContainer
);
viewsRegistry
.
registerViews
([{
id
:
WATCH_VIEW_ID
,
name
:
nls
.
localize
(
'
watch
'
,
"
Watch
"
),
ctorDescriptor
:
{
ctor
:
WatchExpressionsView
},
order
:
20
,
weight
:
10
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusWatchView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
viewContainer
);
viewsRegistry
.
registerViews
([{
id
:
CALLSTACK_VIEW_ID
,
name
:
nls
.
localize
(
'
callStack
'
,
"
Call Stack
"
),
ctorDescriptor
:
{
ctor
:
CallStackView
},
order
:
30
,
weight
:
30
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusCallStackView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
viewContainer
);
viewsRegistry
.
registerViews
([{
id
:
BREAKPOINTS_VIEW_ID
,
name
:
nls
.
localize
(
'
breakpoints
'
,
"
Breakpoints
"
),
ctorDescriptor
:
{
ctor
:
BreakpointsView
},
order
:
40
,
weight
:
20
,
canToggleVisibility
:
true
,
focusCommand
:
{
id
:
'
workbench.debug.action.focusBreakpointsView
'
},
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
)
}],
viewContainer
);
viewsRegistry
.
registerViews
([{
id
:
StartView
.
ID
,
name
:
StartView
.
LABEL
,
ctorDescriptor
:
{
ctor
:
StartView
},
order
:
10
,
weight
:
40
,
canToggleVisibility
:
true
,
when
:
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
simple
'
)
}],
viewContainer
);
viewsRegistry
.
registerViews
([{
id
:
LOADED_SCRIPTS_VIEW_ID
,
name
:
nls
.
localize
(
'
loadedScripts
'
,
"
Loaded Scripts
"
),
ctorDescriptor
:
{
ctor
:
LoadedScriptsView
},
order
:
35
,
weight
:
5
,
canToggleVisibility
:
true
,
collapsed
:
true
,
when
:
ContextKeyExpr
.
and
(
CONTEXT_LOADED_SCRIPTS_SUPPORTED
,
CONTEXT_DEBUG_UX
.
isEqualTo
(
'
default
'
))
}],
viewContainer
);
registerCommands
();
...
...
src/vs/workbench/contrib/debug/browser/debugViewlet.ts
浏览文件 @
2def84c1
...
...
@@ -32,26 +32,8 @@ import { MenuEntryActionViewItem } from 'vs/platform/actions/browser/menuEntryAc
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
import
{
TogglePanelAction
}
from
'
vs/workbench/browser/panel
'
;
import
{
IPanelService
}
from
'
vs/workbench/services/panel/common/panelService
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
StartView
}
from
'
vs/workbench/contrib/debug/browser/startView
'
;
// Register a lightweight viewlet responsible for making the container
export
class
DebugViewlet
extends
Viewlet
{
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IStorageService
protected
storageService
:
IStorageService
,
@
IInstantiationService
protected
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
protected
contextMenuService
:
IContextMenuService
,
@
IExtensionService
protected
extensionService
:
IExtensionService
,
@
IWorkspaceContextService
protected
contextService
:
IWorkspaceContextService
,
@
IWorkbenchLayoutService
protected
layoutService
:
IWorkbenchLayoutService
,
@
IConfigurationService
protected
configurationService
:
IConfigurationService
)
{
super
(
VIEWLET_ID
,
instantiationService
.
createInstance
(
DebugViewPaneContainer
),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
,
layoutService
,
configurationService
);
}
}
export
class
DebugViewPaneContainer
extends
ViewPaneContainer
{
private
startDebugActionViewItem
:
StartDebugActionViewItem
|
undefined
;
...
...
src/vs/workbench/contrib/debug/common/debug.ts
浏览文件 @
2def84c1
...
...
@@ -24,11 +24,8 @@ import { TaskIdentifier } from 'vs/workbench/contrib/tasks/common/tasks';
import
{
TelemetryService
}
from
'
vs/platform/telemetry/common/telemetryService
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
Extensions
as
ViewContainerExtensions
,
IViewContainersRegistry
,
ViewContainer
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
export
const
VIEWLET_ID
=
'
workbench.view.debug
'
;
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
nls
.
localize
(
'
debugAndRun
'
,
"
Debug and Run
"
)
},
ViewContainerLocation
.
Sidebar
);
export
const
VARIABLES_VIEW_ID
=
'
workbench.debug.variablesView
'
;
export
const
WATCH_VIEW_ID
=
'
workbench.debug.watchExpressionsView
'
;
...
...
src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -14,7 +14,7 @@ import { IWorkbenchActionRegistry, Extensions as WorkbenchActionExtensions } fro
import
{
IWorkbenchContributionsRegistry
,
Extensions
as
WorkbenchExtensions
,
IWorkbenchContribution
}
from
'
vs/workbench/common/contributions
'
;
import
{
IOutputChannelRegistry
,
Extensions
as
OutputExtensions
}
from
'
vs/workbench/services/output/common/output
'
;
import
{
SyncDescriptor
}
from
'
vs/platform/instantiation/common/descriptors
'
;
import
{
VIEWLET_ID
,
IExtensionsWorkbenchService
,
VIEW_CONTAINER
}
from
'
vs/workbench/contrib/extensions/common/extensions
'
;
import
{
VIEWLET_ID
,
IExtensionsWorkbenchService
}
from
'
vs/workbench/contrib/extensions/common/extensions
'
;
import
{
ExtensionsWorkbenchService
}
from
'
vs/workbench/contrib/extensions/browser/extensionsWorkbenchService
'
;
import
{
OpenExtensionsViewletAction
,
InstallExtensionsAction
,
ShowOutdatedExtensionsAction
,
ShowRecommendedExtensionsAction
,
ShowRecommendedKeymapExtensionsAction
,
ShowPopularExtensionsAction
,
...
...
@@ -22,9 +22,8 @@ import {
EnableAllAction
,
EnableAllWorkspaceAction
,
DisableAllAction
,
DisableAllWorkspaceAction
,
CheckForUpdatesAction
,
ShowLanguageExtensionsAction
,
ShowAzureExtensionsAction
,
EnableAutoUpdateAction
,
DisableAutoUpdateAction
,
ConfigureRecommendedExtensionsCommandsContributor
,
InstallVSIXAction
,
ReinstallAction
,
InstallSpecificVersionOfExtensionAction
}
from
'
vs/workbench/contrib/extensions/browser/extensionsActions
'
;
import
{
ExtensionsInput
}
from
'
vs/workbench/contrib/extensions/common/extensionsInput
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ViewletDescriptor
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ExtensionEditor
}
from
'
vs/workbench/contrib/extensions/browser/extensionEditor
'
;
import
{
StatusUpdater
,
MaliciousExtensionChecker
,
ExtensionsViewletViewsContribution
,
ExtensionsView
let
}
from
'
vs/workbench/contrib/extensions/browser/extensionsViewlet
'
;
import
{
StatusUpdater
,
MaliciousExtensionChecker
,
ExtensionsViewletViewsContribution
,
ExtensionsView
PaneContainer
}
from
'
vs/workbench/contrib/extensions/browser/extensionsViewlet
'
;
import
{
IQuickOpenRegistry
,
Extensions
,
QuickOpenHandlerDescriptor
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
IConfigurationRegistry
,
Extensions
as
ConfigurationExtensions
,
ConfigurationScope
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
*
as
jsonContributionRegistry
from
'
vs/platform/jsonschemas/common/jsonContributionRegistry
'
;
...
...
@@ -44,6 +43,7 @@ import { CancellationToken } from 'vs/base/common/cancellation';
import
{
ExtensionType
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
RemoteExtensionsInstaller
}
from
'
vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller
'
;
import
{
ExtensionTipsService
}
from
'
vs/workbench/contrib/extensions/browser/extensionTipsService
'
;
import
{
IViewContainersRegistry
,
ViewContainerLocation
,
Extensions
as
ViewContainerExtensions
}
from
'
vs/workbench/common/views
'
;
// Singletons
registerSingleton
(
IExtensionsWorkbenchService
,
ExtensionsWorkbenchService
);
...
...
@@ -75,17 +75,15 @@ Registry.as<IEditorRegistry>(EditorExtensions.Editors).registerEditor(
new
SyncDescriptor
(
ExtensionsInput
)
]);
// Viewlet
const
viewletDescriptor
=
ViewletDescriptor
.
create
(
ExtensionsViewlet
,
VIEWLET_ID
,
VIEW_CONTAINER
.
name
,
'
codicon-extensions
'
,
4
);
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
(
{
id
:
VIEWLET_ID
,
name
:
localize
(
'
extensions
'
,
"
Extensions
"
)
,
ctorDescriptor
:
{
ctor
:
ExtensionsViewPaneContainer
}
,
icon
:
'
codicon-extensions
'
,
order
:
4
},
ViewContainerLocation
.
Sidebar
);
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
)
.
registerViewlet
(
viewletDescriptor
);
// Global actions
const
actionRegistry
=
Registry
.
as
<
IWorkbenchActionRegistry
>
(
WorkbenchActionExtensions
.
WorkbenchActions
);
...
...
src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts
浏览文件 @
2def84c1
...
...
@@ -18,7 +18,7 @@ import { append, $, addClass, toggleClass, Dimension } from 'vs/base/browser/dom
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IExtensionsWorkbenchService
,
IExtensionsViewPaneContainer
,
VIEWLET_ID
,
AutoUpdateConfigurationKey
,
ShowRecommendationsOnlyOnDemandKey
,
CloseExtensionDetailsOnViewChangeKey
,
VIEW_CONTAINER
}
from
'
../common/extensions
'
;
import
{
IExtensionsWorkbenchService
,
IExtensionsViewPaneContainer
,
VIEWLET_ID
,
AutoUpdateConfigurationKey
,
ShowRecommendationsOnlyOnDemandKey
,
CloseExtensionDetailsOnViewChangeKey
}
from
'
../common/extensions
'
;
import
{
ShowEnabledExtensionsAction
,
ShowInstalledExtensionsAction
,
ShowRecommendedExtensionsAction
,
ShowPopularExtensionsAction
,
ShowDisabledExtensionsAction
,
ShowOutdatedExtensionsAction
,
ClearExtensionsInputAction
,
ChangeSortAction
,
UpdateAllAction
,
CheckForUpdatesAction
,
DisableAllAction
,
EnableAllAction
,
...
...
@@ -35,7 +35,7 @@ import Severity from 'vs/base/common/severity';
import
{
IActivityService
,
NumberBadge
}
from
'
vs/workbench/services/activity/common/activity
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IViewsRegistry
,
IViewDescriptor
,
Extensions
}
from
'
vs/workbench/common/views
'
;
import
{
IViewsRegistry
,
IViewDescriptor
,
Extensions
,
ViewContainer
,
IViewContainersRegistry
}
from
'
vs/workbench/common/views
'
;
import
{
IStorageService
,
StorageScope
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IWorkspaceContextService
,
WorkbenchState
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IContextKeyService
,
ContextKeyExpr
,
RawContextKey
,
IContextKey
}
from
'
vs/platform/contextkey/common/contextkey
'
;
...
...
@@ -57,7 +57,6 @@ import { Registry } from 'vs/platform/registry/common/platform';
import
{
RemoteNameContext
}
from
'
vs/workbench/browser/contextkeys
'
;
import
{
ILabelService
}
from
'
vs/platform/label/common/label
'
;
import
{
MementoObject
}
from
'
vs/workbench/common/memento
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
const
NonEmptyWorkspaceContext
=
new
RawContextKey
<
boolean
>
(
'
nonEmptyWorkspace
'
,
false
);
const
DefaultViewsContext
=
new
RawContextKey
<
boolean
>
(
'
defaultExtensionViews
'
,
true
);
...
...
@@ -88,10 +87,13 @@ const viewIdNameMappings: { [id: string]: string } = {
export
class
ExtensionsViewletViewsContribution
implements
IWorkbenchContribution
{
private
readonly
container
:
ViewContainer
;
constructor
(
@
IExtensionManagementServerService
private
readonly
extensionManagementServerService
:
IExtensionManagementServerService
,
@
ILabelService
private
readonly
labelService
:
ILabelService
,
)
{
this
.
container
=
Registry
.
as
<
IViewContainersRegistry
>
(
Extensions
.
ViewContainersRegistry
).
get
(
VIEWLET_ID
)
!
;
this
.
registerViews
();
}
...
...
@@ -117,7 +119,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
viewDescriptors
.
push
(...
this
.
createExtensionsViewDescriptorsForServer
(
this
.
extensionManagementServerService
.
remoteExtensionManagementServer
));
}
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
registerViews
(
viewDescriptors
,
VIEW_CONTAINER
);
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
registerViews
(
viewDescriptors
,
this
.
container
);
}
// View used for any kind of searching
...
...
@@ -314,22 +316,6 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
}
export
class
ExtensionsViewlet
extends
Viewlet
{
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IStorageService
protected
storageService
:
IStorageService
,
@
IInstantiationService
protected
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
protected
contextMenuService
:
IContextMenuService
,
@
IExtensionService
protected
extensionService
:
IExtensionService
,
@
IWorkspaceContextService
protected
contextService
:
IWorkspaceContextService
,
@
IWorkbenchLayoutService
protected
layoutService
:
IWorkbenchLayoutService
,
@
IConfigurationService
protected
configurationService
:
IConfigurationService
)
{
super
(
VIEWLET_ID
,
instantiationService
.
createInstance
(
ExtensionsViewPaneContainer
),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
,
layoutService
,
configurationService
);
}
}
export
class
ExtensionsViewPaneContainer
extends
ViewPaneContainer
implements
IExtensionsViewPaneContainer
{
private
readonly
_onSearchChange
:
Emitter
<
string
>
=
this
.
_register
(
new
Emitter
<
string
>
());
...
...
src/vs/workbench/contrib/extensions/common/extensions.ts
浏览文件 @
2def84c1
...
...
@@ -14,12 +14,9 @@ import { areSameExtensions } from 'vs/platform/extensionManagement/common/extens
import
{
IExtensionManifest
,
ExtensionType
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
IViewPaneContainer
}
from
'
vs/workbench/common/viewPaneContainer
'
;
import
{
Extensions
as
ViewContainerExtensions
,
ViewContainer
,
IViewContainersRegistry
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
export
const
VIEWLET_ID
=
'
workbench.view.extensions
'
;
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
localize
(
'
extensions
'
,
"
Extensions
"
)
},
ViewContainerLocation
.
Sidebar
);
export
const
EXTENSIONS_CONFIG
=
'
.vscode/extensions.json
'
;
...
...
@@ -144,3 +141,12 @@ export class ExtensionContainers extends Disposable {
}
}
}
export
interface
IExtensionMenuAction
extends
IAction
{
run
(
context
:
IExtensionMenuActionContext
):
Promise
<
void
>
;
}
export
interface
IExtensionMenuActionContext
{
id
:
string
;
packageJSON
:
IExtensionManifest
;
}
src/vs/workbench/contrib/files/browser/explorerViewlet.ts
浏览文件 @
2def84c1
...
...
@@ -6,7 +6,7 @@
import
'
vs/css!./media/explorerviewlet
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
*
as
DOM
from
'
vs/base/browser/dom
'
;
import
{
VIEWLET_ID
,
ExplorerViewletVisibleContext
,
IFilesConfiguration
,
OpenEditorsVisibleContext
,
VIEW_CONTAINER
}
from
'
vs/workbench/contrib/files/common/files
'
;
import
{
VIEWLET_ID
,
ExplorerViewletVisibleContext
,
IFilesConfiguration
,
OpenEditorsVisibleContext
}
from
'
vs/workbench/contrib/files/common/files
'
;
import
{
IViewletViewOptions
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
import
{
IConfigurationService
,
IConfigurationChangeEvent
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
ExplorerView
}
from
'
vs/workbench/contrib/files/browser/views/explorerView
'
;
...
...
@@ -20,7 +20,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import
{
ServiceCollection
}
from
'
vs/platform/instantiation/common/serviceCollection
'
;
import
{
IContextKeyService
,
IContextKey
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IViewsRegistry
,
IViewDescriptor
,
Extensions
}
from
'
vs/workbench/common/views
'
;
import
{
IViewsRegistry
,
IViewDescriptor
,
Extensions
,
ViewContainer
,
IViewContainersRegistry
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IWorkbenchContribution
}
from
'
vs/workbench/common/contributions
'
;
...
...
@@ -33,7 +33,6 @@ import { ViewPane, ViewPaneContainer } from 'vs/workbench/browser/parts/views/vi
import
{
KeyChord
,
KeyMod
,
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IProgressService
,
ProgressLocation
}
from
'
vs/platform/progress/common/progress
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
export
class
ExplorerViewletViewsContribution
extends
Disposable
implements
IWorkbenchContribution
{
...
...
@@ -146,22 +145,6 @@ export class ExplorerViewletViewsContribution extends Disposable implements IWor
}
}
export
class
ExplorerViewlet
extends
Viewlet
{
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IStorageService
protected
storageService
:
IStorageService
,
@
IInstantiationService
protected
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
protected
contextMenuService
:
IContextMenuService
,
@
IExtensionService
protected
extensionService
:
IExtensionService
,
@
IWorkspaceContextService
protected
contextService
:
IWorkspaceContextService
,
@
IWorkbenchLayoutService
protected
layoutService
:
IWorkbenchLayoutService
,
@
IConfigurationService
protected
configurationService
:
IConfigurationService
)
{
super
(
VIEWLET_ID
,
instantiationService
.
createInstance
(
ExplorerViewPaneContainer
),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
,
layoutService
,
configurationService
);
}
}
export
class
ExplorerViewPaneContainer
extends
ViewPaneContainer
{
private
static
readonly
EXPLORER_VIEWS_STATE
=
'
workbench.explorer.views.state
'
;
...
...
@@ -257,3 +240,14 @@ export class ExplorerViewPaneContainer extends ViewPaneContainer {
}
}
}
/**
* Explorer viewlet container.
*/
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
Extensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
localize
(
'
explore
'
,
"
Explorer
"
),
ctorDescriptor
:
{
ctor
:
ExplorerViewPaneContainer
},
icon
:
'
codicon-files
'
,
order
:
0
},
ViewContainerLocation
.
Sidebar
);
src/vs/workbench/contrib/files/browser/files.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
{
URI
,
UriComponents
}
from
'
vs/base/common/uri
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ViewletDescriptor
,
ShowViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ShowViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
*
as
nls
from
'
vs/nls
'
;
import
{
sep
}
from
'
vs/base/common/path
'
;
import
{
SyncActionDescriptor
,
MenuId
,
MenuRegistry
}
from
'
vs/platform/actions/common/actions
'
;
...
...
@@ -14,7 +14,7 @@ import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/wor
import
{
IWorkbenchContributionsRegistry
,
Extensions
as
WorkbenchExtensions
,
IWorkbenchContribution
}
from
'
vs/workbench/common/contributions
'
;
import
{
IEditorInputFactory
,
EditorInput
,
IFileEditorInput
,
IEditorInputFactoryRegistry
,
Extensions
as
EditorInputExtensions
}
from
'
vs/workbench/common/editor
'
;
import
{
AutoSaveConfiguration
,
HotExitConfiguration
}
from
'
vs/platform/files/common/files
'
;
import
{
VIEWLET_ID
,
VIEW_CONTAINER
,
SortOrder
,
FILE_EDITOR_INPUT_ID
,
IExplorerService
}
from
'
vs/workbench/contrib/files/common/files
'
;
import
{
VIEWLET_ID
,
SortOrder
,
FILE_EDITOR_INPUT_ID
,
IExplorerService
}
from
'
vs/workbench/contrib/files/common/files
'
;
import
{
FileEditorTracker
}
from
'
vs/workbench/contrib/files/browser/editors/fileEditorTracker
'
;
import
{
TextFileSaveErrorHandler
}
from
'
vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler
'
;
import
{
FileEditorInput
}
from
'
vs/workbench/contrib/files/common/editors/fileEditorInput
'
;
...
...
@@ -25,7 +25,7 @@ import { IKeybindings } from 'vs/platform/keybinding/common/keybindingsRegistry'
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
KeyMod
,
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
*
as
platform
from
'
vs/base/common/platform
'
;
import
{
ExplorerViewletViewsContribution
,
ExplorerViewlet
}
from
'
vs/workbench/contrib/files/browser/explorerViewlet
'
;
import
{
ExplorerViewletViewsContribution
}
from
'
vs/workbench/contrib/files/browser/explorerViewlet
'
;
import
{
IEditorRegistry
,
EditorDescriptor
,
Extensions
as
EditorExtensions
}
from
'
vs/workbench/browser/editor
'
;
import
{
LifecyclePhase
}
from
'
vs/platform/lifecycle/common/lifecycle
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
...
...
@@ -73,15 +73,6 @@ class FileUriLabelContribution implements IWorkbenchContribution {
}
}
// Register Viewlet
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
ViewletDescriptor
.
create
(
ExplorerViewlet
,
VIEWLET_ID
,
VIEW_CONTAINER
.
name
,
'
codicon-files
'
,
0
));
registerSingleton
(
IExplorerService
,
ExplorerService
,
true
);
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
setDefaultViewletId
(
VIEWLET_ID
);
...
...
src/vs/workbench/contrib/files/common/files.ts
浏览文件 @
2def84c1
...
...
@@ -16,26 +16,19 @@ import { IModelService } from 'vs/editor/common/services/modelService';
import
{
IModeService
,
ILanguageSelection
}
from
'
vs/editor/common/services/modeService
'
;
import
{
ITextFileService
}
from
'
vs/workbench/services/textfile/common/textfiles
'
;
import
{
InputFocusedContextKey
}
from
'
vs/platform/contextkey/common/contextkeys
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IViewContainersRegistry
,
Extensions
as
ViewContainerExtensions
,
ViewContainer
,
IEditableData
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
IEditableData
}
from
'
vs/workbench/common/views
'
;
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IEditorGroup
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
import
{
ExplorerItem
}
from
'
vs/workbench/contrib/files/common/explorerModel
'
;
import
{
once
}
from
'
vs/base/common/functional
'
;
import
{
ITextEditorOptions
}
from
'
vs/platform/editor/common/editor
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
localize
}
from
'
vs/nls
'
;
/**
* Explorer viewlet id.
*/
export
const
VIEWLET_ID
=
'
workbench.view.explorer
'
;
/**
* Explorer viewlet container.
*/
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
localize
(
'
explore
'
,
"
Explorer
"
)
},
ViewContainerLocation
.
Sidebar
);
export
interface
IExplorerService
{
_serviceBrand
:
undefined
;
readonly
roots
:
ExplorerItem
[];
...
...
src/vs/workbench/contrib/markers/browser/markers.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -14,7 +14,7 @@ import { localize } from 'vs/nls';
import
{
Marker
,
RelatedInformation
}
from
'
vs/workbench/contrib/markers/browser/markersModel
'
;
import
{
MarkersView
,
getMarkersView
}
from
'
vs/workbench/contrib/markers/browser/markersView
'
;
import
{
MenuId
,
MenuRegistry
,
SyncActionDescriptor
,
registerAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
PanelRegistry
,
Extensions
as
PanelExtensions
,
PanelDescriptor
,
PaneCompositePanel
,
TogglePanelAction
}
from
'
vs/workbench/browser/panel
'
;
import
{
TogglePanelAction
}
from
'
vs/workbench/browser/panel
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
ShowProblemsPanelAction
}
from
'
vs/workbench/contrib/markers/browser/markersViewActions
'
;
import
Constants
from
'
vs/workbench/contrib/markers/browser/constants
'
;
...
...
@@ -30,13 +30,6 @@ import { IStatusbarEntryAccessor, IStatusbarService, StatusbarAlignment, IStatus
import
{
IMarkerService
,
MarkerStatistics
}
from
'
vs/platform/markers/common/markers
'
;
import
{
CommandsRegistry
}
from
'
vs/platform/commands/common/commands
'
;
import
{
ViewContainer
,
IViewContainersRegistry
,
Extensions
as
ViewContainerExtensions
,
ViewContainerLocation
,
IViewsRegistry
}
from
'
vs/workbench/common/views
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
ViewPaneContainer
}
from
'
vs/workbench/browser/parts/views/viewPaneContainer
'
;
import
{
IWorkbenchLayoutService
}
from
'
vs/workbench/services/layout/browser/layoutService
'
;
...
...
@@ -100,30 +93,6 @@ Registry.as<IConfigurationRegistry>(Extensions.Configuration).registerConfigurat
}
});
// markers view container
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
Constants
.
MARKERS_PANEL_ID
,
name
:
Messages
.
MARKERS_PANEL_TITLE_PROBLEMS
},
ViewContainerLocation
.
Panel
);
Registry
.
as
<
IViewsRegistry
>
(
ViewContainerExtensions
.
ViewsRegistry
).
registerViews
([{
id
:
Constants
.
MARKERS_VIEW_ID
,
name
:
Messages
.
MARKERS_PANEL_TITLE_PROBLEMS
,
canToggleVisibility
:
false
,
ctorDescriptor
:
{
ctor
:
MarkersView
},
}],
VIEW_CONTAINER
);
// markers panel
class
MarkersPanel
extends
PaneCompositePanel
{
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IStorageService
storageService
:
IStorageService
,
@
IInstantiationService
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
contextMenuService
:
IContextMenuService
,
@
IExtensionService
extensionService
:
IExtensionService
,
@
IWorkspaceContextService
contextService
:
IWorkspaceContextService
)
{
super
(
Constants
.
MARKERS_PANEL_ID
,
instantiationService
.
createInstance
(
ViewPaneContainer
,
Constants
.
MARKERS_PANEL_ID
,
Constants
.
MARKERS_PANEL_STORAGE_ID
,
{
mergeViewWithContainerWhenSingleView
:
true
,
donotShowContainerTitleWhenMergedWithContainer
:
true
}),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
);
}
}
class
ToggleMarkersPanelAction
extends
TogglePanelAction
{
public
static
readonly
ID
=
'
workbench.actions.view.problems
'
;
...
...
@@ -136,14 +105,25 @@ class ToggleMarkersPanelAction extends TogglePanelAction {
super
(
id
,
label
,
Constants
.
MARKERS_PANEL_ID
,
panelService
,
layoutService
);
}
}
Registry
.
as
<
PanelRegistry
>
(
PanelExtensions
.
Panels
).
registerPanel
(
PanelDescriptor
.
create
(
MarkersPanel
,
Constants
.
MARKERS_PANEL_ID
,
VIEW_CONTAINER
.
name
,
'
markersPanel
'
,
10
,
ToggleMarkersPanelAction
.
ID
));
// markers view container
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
Constants
.
MARKERS_PANEL_ID
,
name
:
Messages
.
MARKERS_PANEL_TITLE_PROBLEMS
,
ctorDescriptor
:
{
ctor
:
ViewPaneContainer
,
arguments
:
[
Constants
.
MARKERS_PANEL_ID
,
Constants
.
MARKERS_PANEL_STORAGE_ID
,
{
mergeViewWithContainerWhenSingleView
:
true
,
donotShowContainerTitleWhenMergedWithContainer
:
true
}]
},
focusCommand
:
{
id
:
ToggleMarkersPanelAction
.
ID
,
keybindings
:
{
primary
:
KeyMod
.
CtrlCmd
|
KeyMod
.
Shift
|
KeyCode
.
KEY_M
}
}
},
ViewContainerLocation
.
Panel
);
Registry
.
as
<
IViewsRegistry
>
(
ViewContainerExtensions
.
ViewsRegistry
).
registerViews
([{
id
:
Constants
.
MARKERS_VIEW_ID
,
name
:
Messages
.
MARKERS_PANEL_TITLE_PROBLEMS
,
canToggleVisibility
:
false
,
ctorDescriptor
:
{
ctor
:
MarkersView
},
}],
VIEW_CONTAINER
);
// workbench
const
workbenchRegistry
=
Registry
.
as
<
IWorkbenchContributionsRegistry
>
(
WorkbenchExtensions
.
Workbench
);
...
...
src/vs/workbench/contrib/outline/browser/outline.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -6,10 +6,10 @@
import
{
localize
}
from
'
vs/nls
'
;
import
{
IViewsRegistry
,
IViewDescriptor
,
Extensions
as
ViewExtensions
}
from
'
vs/workbench/common/views
'
;
import
{
OutlinePane
}
from
'
./outlinePane
'
;
import
{
VIEW_CONTAINER
}
from
'
vs/workbench/contrib/files/common/files
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IConfigurationRegistry
,
Extensions
as
ConfigurationExtensions
,
ConfigurationScope
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
OutlineConfigKeys
,
OutlineViewId
}
from
'
vs/editor/contrib/documentSymbols/outline
'
;
import
{
VIEW_CONTAINER
}
from
'
vs/workbench/contrib/files/browser/explorerViewlet
'
;
// import './outlineNavigation';
...
...
src/vs/workbench/contrib/remote/browser/remote.ts
浏览文件 @
2def84c1
...
...
@@ -17,15 +17,15 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
FilterViewPaneContainer
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
import
{
VIEWLET_ID
,
VIEW_CONTAINER
}
from
'
vs/workbench/contrib/remote/common/remote.contribution
'
;
import
{
VIEWLET_ID
}
from
'
vs/workbench/contrib/remote/common/remote.contribution
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IViewDescriptor
,
IViewsRegistry
,
Extensions
}
from
'
vs/workbench/common/views
'
;
import
{
IViewDescriptor
,
IViewsRegistry
,
Extensions
,
ViewContainerLocation
,
IViewContainersRegistry
}
from
'
vs/workbench/common/views
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
IOpenerService
}
from
'
vs/platform/opener/common/opener
'
;
import
{
IQuickInputService
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ViewletDescriptor
,
ShowViewletAction
,
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ShowViewletAction
,
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
IEditorGroupsService
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
import
{
IWorkbenchActionRegistry
,
Extensions
as
WorkbenchActionExtensions
}
from
'
vs/workbench/common/actions
'
;
...
...
@@ -496,7 +496,7 @@ export class RemoteViewPaneContainer extends FilterViewPaneContainer implements
public
getActionViewItem
(
action
:
Action
):
IActionViewItem
|
undefined
{
if
(
action
.
id
===
SwitchRemoteAction
.
ID
)
{
return
this
.
instantiationService
.
createInstance
(
SwitchRemoteViewItem
,
action
,
SwitchRemoteViewItem
.
createOptionItems
(
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
getViews
(
VIEW_CONTAINER
),
this
.
contextKeyService
));
return
this
.
instantiationService
.
createInstance
(
SwitchRemoteViewItem
,
action
,
SwitchRemoteViewItem
.
createOptionItems
(
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
getViews
(
this
.
viewContainer
),
this
.
contextKeyService
));
}
return
super
.
getActionViewItem
(
action
);
...
...
@@ -527,19 +527,41 @@ export class RemoteViewPaneContainer extends FilterViewPaneContainer implements
if
(
this
.
environmentService
.
configuration
.
remoteAuthority
&&
!
this
.
tunnelPanelDescriptor
&&
viewEnabled
)
{
this
.
tunnelPanelDescriptor
=
new
TunnelPanelDescriptor
(
new
TunnelViewModel
(
this
.
remoteExplorerService
),
this
.
environmentService
);
const
viewsRegistry
=
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
);
viewsRegistry
.
registerViews
([
this
.
tunnelPanelDescriptor
!
],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([
this
.
tunnelPanelDescriptor
!
],
this
.
viewContainer
);
}
return
panels
;
}
}
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
ViewletDescriptor
.
create
(
RemoteViewlet
,
VIEWLET_ID
,
VIEW_CONTAINER
.
name
,
'
codicon-remote-explorer
'
,
4
));
Registry
.
as
<
IViewContainersRegistry
>
(
Extensions
.
ViewContainersRegistry
).
registerViewContainer
(
{
id
:
VIEWLET_ID
,
name
:
nls
.
localize
(
'
remote.explorer
'
,
"
Remote Explorer
"
),
ctorDescriptor
:
{
ctor
:
RemoteViewPaneContainer
},
hideIfEmpty
:
true
,
viewOrderDelegate
:
{
getOrder
:
(
group
?:
string
)
=>
{
if
(
!
group
)
{
return
;
}
let
matches
=
/^targets@
(\d
+
)
$/
.
exec
(
group
);
if
(
matches
)
{
return
-
1000
;
}
matches
=
/^details
(
@
(\d
+
))?
$/
.
exec
(
group
);
if
(
matches
)
{
return
-
500
;
}
return
;
}
},
icon
:
'
codicon-remote-explorer
'
,
order
:
4
},
ViewContainerLocation
.
Sidebar
);
class
OpenRemoteViewletAction
extends
ShowViewletAction
{
...
...
src/vs/workbench/contrib/remote/common/remote.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -16,35 +16,8 @@ import { IOutputChannelRegistry, Extensions as OutputExt, } from 'vs/workbench/s
import
{
localize
}
from
'
vs/nls
'
;
import
{
joinPath
}
from
'
vs/base/common/resources
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
ViewContainer
,
IViewContainersRegistry
,
Extensions
as
ViewContainerExtensions
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
export
const
VIEWLET_ID
=
'
workbench.view.remote
'
;
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
(
{
id
:
VIEWLET_ID
,
name
:
localize
(
'
remote.explorer
'
,
"
Remote Explorer
"
),
hideIfEmpty
:
true
,
viewOrderDelegate
:
{
getOrder
:
(
group
?:
string
)
=>
{
if
(
!
group
)
{
return
;
}
let
matches
=
/^targets@
(\d
+
)
$/
.
exec
(
group
);
if
(
matches
)
{
return
-
1000
;
}
matches
=
/^details
(
@
(\d
+
))?
$/
.
exec
(
group
);
if
(
matches
)
{
return
-
500
;
}
return
;
}
}
},
ViewContainerLocation
.
Sidebar
);
export
class
LabelContribution
implements
IWorkbenchContribution
{
constructor
(
...
...
src/vs/workbench/contrib/scm/browser/scm.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -7,14 +7,13 @@ import { localize } from 'vs/nls';
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IWorkbenchContributionsRegistry
,
Extensions
as
WorkbenchExtensions
}
from
'
vs/workbench/common/contributions
'
;
import
{
DirtyDiffWorkbenchController
}
from
'
./dirtydiffDecorator
'
;
import
{
ViewletRegistry
,
Extensions
as
ViewletExtensions
,
ViewletDescriptor
,
ShowViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
VIEWLET_ID
,
VIEW_CONTAINER
,
ISCMRepository
,
ISCMService
}
from
'
vs/workbench/contrib/scm/common/scm
'
;
import
{
ShowViewletAction
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
VIEWLET_ID
,
ISCMRepository
,
ISCMService
}
from
'
vs/workbench/contrib/scm/common/scm
'
;
import
{
IWorkbenchActionRegistry
,
Extensions
as
WorkbenchActionExtensions
}
from
'
vs/workbench/common/actions
'
;
import
{
KeyMod
,
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
SyncActionDescriptor
,
MenuRegistry
,
MenuId
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
SCMStatusController
}
from
'
./activity
'
;
import
{
SCMViewlet
}
from
'
vs/workbench/contrib/scm/browser/scmViewlet
'
;
import
{
LifecyclePhase
}
from
'
vs/platform/lifecycle/common/lifecycle
'
;
import
{
IConfigurationRegistry
,
Extensions
as
ConfigurationExtensions
,
ConfigurationScope
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IEditorGroupsService
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
...
...
@@ -24,6 +23,8 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co
import
{
IWorkbenchLayoutService
}
from
'
vs/workbench/services/layout/browser/layoutService
'
;
import
{
registerSingleton
}
from
'
vs/platform/instantiation/common/extensions
'
;
import
{
SCMService
}
from
'
vs/workbench/contrib/scm/common/scmService
'
;
import
{
IViewContainersRegistry
,
ViewContainerLocation
,
Extensions
as
ViewContainerExtensions
}
from
'
vs/workbench/common/views
'
;
import
{
SCMViewPaneContainer
}
from
'
vs/workbench/contrib/scm/browser/scmViewlet
'
;
class
OpenSCMViewletAction
extends
ShowViewletAction
{
...
...
@@ -38,13 +39,13 @@ class OpenSCMViewletAction extends ShowViewletAction {
Registry
.
as
<
IWorkbenchContributionsRegistry
>
(
WorkbenchExtensions
.
Workbench
)
.
registerWorkbenchContribution
(
DirtyDiffWorkbenchController
,
LifecyclePhase
.
Restored
);
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
ViewletDescriptor
.
create
(
SCMViewlet
,
VIEWLET_ID
,
VIEW_CONTAINER
.
name
,
'
codicon-source-control
'
,
2
)
);
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
localize
(
'
source control
'
,
"
Source Control
"
)
,
ctorDescriptor
:
{
ctor
:
SCMViewPaneContainer
}
,
icon
:
'
codicon-source-control
'
,
order
:
2
},
ViewContainerLocation
.
Sidebar
);
Registry
.
as
<
IWorkbenchContributionsRegistry
>
(
WorkbenchExtensions
.
Workbench
)
.
registerWorkbenchContribution
(
SCMStatusController
,
LifecyclePhase
.
Restored
);
...
...
src/vs/workbench/contrib/scm/browser/scmViewlet.ts
浏览文件 @
2def84c1
...
...
@@ -8,7 +8,7 @@ import { localize } from 'vs/nls';
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
append
,
$
,
toggleClass
,
addClasses
}
from
'
vs/base/browser/dom
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
VIEWLET_ID
,
ISCMService
,
ISCMRepository
,
VIEW_CONTAINER
}
from
'
vs/workbench/contrib/scm/common/scm
'
;
import
{
VIEWLET_ID
,
ISCMService
,
ISCMRepository
}
from
'
vs/workbench/contrib/scm/common/scm
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IContextViewService
,
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IContextKeyService
,
IContextKey
}
from
'
vs/platform/contextkey/common/contextkey
'
;
...
...
@@ -124,7 +124,7 @@ export class SCMViewPaneContainer extends ViewPaneContainer implements IViewMode
this
.
message
=
$
(
'
.empty-message
'
,
{
tabIndex
:
0
},
localize
(
'
no open repo
'
,
"
No source control providers registered.
"
));
const
viewsRegistry
=
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
);
viewsRegistry
.
registerViews
([
new
MainPaneDescriptor
(
this
)],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([
new
MainPaneDescriptor
(
this
)],
this
.
viewContainer
);
this
.
_register
(
configurationService
.
onDidChangeConfiguration
(
e
=>
{
if
(
e
.
affectsConfiguration
(
'
scm.alwaysShowProviders
'
)
&&
configurationService
.
getValue
<
boolean
>
(
'
scm.alwaysShowProviders
'
))
{
...
...
@@ -153,7 +153,7 @@ export class SCMViewPaneContainer extends ViewPaneContainer implements IViewMode
this
.
_repositories
.
push
(
repository
);
const
viewDescriptor
=
new
RepositoryViewDescriptor
(
repository
,
false
);
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
registerViews
([
viewDescriptor
],
VIEW_CONTAINER
);
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
registerViews
([
viewDescriptor
],
this
.
viewContainer
);
this
.
viewDescriptors
.
push
(
viewDescriptor
);
this
.
_onDidSplice
.
fire
({
index
,
deleteCount
:
0
,
elements
:
[
repository
]
});
...
...
@@ -169,7 +169,7 @@ export class SCMViewPaneContainer extends ViewPaneContainer implements IViewMode
return
;
}
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
deregisterViews
([
this
.
viewDescriptors
[
index
]],
VIEW_CONTAINER
);
Registry
.
as
<
IViewsRegistry
>
(
Extensions
.
ViewsRegistry
).
deregisterViews
([
this
.
viewDescriptors
[
index
]],
this
.
viewContainer
);
this
.
_repositories
.
splice
(
index
,
1
);
this
.
viewDescriptors
.
splice
(
index
,
1
);
...
...
src/vs/workbench/contrib/scm/common/scm.ts
浏览文件 @
2def84c1
...
...
@@ -9,12 +9,8 @@ import { Event } from 'vs/base/common/event';
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Command
}
from
'
vs/editor/common/modes
'
;
import
{
ISequence
}
from
'
vs/base/common/sequence
'
;
import
{
Extensions
as
ViewContainerExtensions
,
ViewContainer
,
IViewContainersRegistry
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
localize
}
from
'
vs/nls
'
;
export
const
VIEWLET_ID
=
'
workbench.view.scm
'
;
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
localize
(
'
source control
'
,
"
Source Control
"
),
},
ViewContainerLocation
.
Sidebar
);
export
interface
IBaselineResourceProvider
{
getBaselineResource
(
resource
:
URI
):
Promise
<
URI
>
;
...
...
src/vs/workbench/contrib/search/browser/search.contribution.ts
浏览文件 @
2def84c1
...
...
@@ -31,10 +31,9 @@ import { Registry } from 'vs/platform/registry/common/platform';
import
{
Extensions
as
PanelExtensions
,
PanelDescriptor
,
PanelRegistry
}
from
'
vs/workbench/browser/panel
'
;
import
{
defaultQuickOpenContextKey
}
from
'
vs/workbench/browser/parts/quickopen/quickopen
'
;
import
{
Extensions
as
QuickOpenExtensions
,
IQuickOpenRegistry
,
QuickOpenHandlerDescriptor
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
Extensions
as
ViewletExtensions
,
ViewletDescriptor
,
ViewletRegistry
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
Extensions
as
ActionExtensions
,
IWorkbenchActionRegistry
}
from
'
vs/workbench/common/actions
'
;
import
{
Extensions
as
WorkbenchExtensions
,
IWorkbenchContribution
,
IWorkbenchContributionsRegistry
}
from
'
vs/workbench/common/contributions
'
;
import
{
Extensions
as
ViewExtensions
,
IViewsRegistry
}
from
'
vs/workbench/common/views
'
;
import
{
Extensions
as
ViewExtensions
,
IViewsRegistry
,
IViewContainersRegistry
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
getMultiSelectedResources
}
from
'
vs/workbench/contrib/files/browser/files
'
;
import
{
ExplorerFolderContext
,
ExplorerRootContext
,
FilesExplorerFocusCondition
,
IExplorerService
,
VIEWLET_ID
as
VIEWLET_ID_FILES
}
from
'
vs/workbench/contrib/files/common/files
'
;
import
{
OpenAnythingHandler
}
from
'
vs/workbench/contrib/search/browser/openAnythingHandler
'
;
...
...
@@ -43,7 +42,6 @@ import { registerContributions as replaceContributions } from 'vs/workbench/cont
import
{
clearHistoryCommand
,
ClearSearchResultsAction
,
CloseReplaceAction
,
CollapseDeepestExpandedLevelAction
,
copyAllCommand
,
copyMatchCommand
,
copyPathCommand
,
FocusNextInputAction
,
FocusNextSearchResultAction
,
FocusPreviousInputAction
,
FocusPreviousSearchResultAction
,
focusSearchListCommand
,
getSearchView
,
openSearchView
,
OpenSearchViewletAction
,
RefreshAction
,
RemoveAction
,
ReplaceAction
,
ReplaceAllAction
,
ReplaceAllInFolderAction
,
ReplaceInFilesAction
,
toggleCaseSensitiveCommand
,
toggleRegexCommand
,
toggleWholeWordCommand
,
FindInFilesCommand
,
ToggleSearchOnTypeAction
,
OpenResultsInEditorAction
,
RerunEditorSearchAction
,
RerunEditorSearchWithContextAction
,
ExpandAllAction
}
from
'
vs/workbench/contrib/search/browser/searchActions
'
;
import
{
SearchPanel
}
from
'
vs/workbench/contrib/search/browser/searchPanel
'
;
import
{
SearchView
,
SearchViewPosition
}
from
'
vs/workbench/contrib/search/browser/searchView
'
;
import
{
SearchViewlet
}
from
'
vs/workbench/contrib/search/browser/searchViewlet
'
;
import
{
registerContributions
as
searchWidgetContributions
}
from
'
vs/workbench/contrib/search/browser/searchWidget
'
;
import
*
as
Constants
from
'
vs/workbench/contrib/search/common/constants
'
;
import
{
getWorkspaceSymbols
}
from
'
vs/workbench/contrib/search/common/search
'
;
...
...
@@ -51,12 +49,13 @@ import { ISearchHistoryService, SearchHistoryService } from 'vs/workbench/contri
import
{
FileMatchOrMatch
,
ISearchWorkbenchService
,
RenderableMatch
,
SearchWorkbenchService
,
FileMatch
,
Match
,
FolderMatch
}
from
'
vs/workbench/contrib/search/common/searchModel
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IPanelService
}
from
'
vs/workbench/services/panel/common/panelService
'
;
import
{
ISearchConfiguration
,
ISearchConfigurationProperties
,
PANEL_ID
,
VIEWLET_ID
,
VIEW_ID
,
VIEW_CONTAINER
,
SearchSortOrder
}
from
'
vs/workbench/services/search/common/search
'
;
import
{
ISearchConfiguration
,
ISearchConfigurationProperties
,
PANEL_ID
,
VIEWLET_ID
,
VIEW_ID
,
SearchSortOrder
}
from
'
vs/workbench/services/search/common/search
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
ExplorerViewPaneContainer
}
from
'
vs/workbench/contrib/files/browser/explorerViewlet
'
;
import
{
EditorContextKeys
}
from
'
vs/editor/common/editorContextKeys
'
;
import
{
assertType
}
from
'
vs/base/common/types
'
;
import
{
SearchViewPaneContainer
}
from
'
vs/workbench/contrib/search/browser/searchViewlet
'
;
registerSingleton
(
ISearchWorkbenchService
,
SearchWorkbenchService
,
true
);
registerSingleton
(
ISearchHistoryService
,
SearchHistoryService
,
true
);
...
...
@@ -505,13 +504,14 @@ class ShowAllSymbolsAction extends Action {
}
}
Registry
.
as
<
ViewletRegistry
>
(
ViewletExtensions
.
Viewlets
).
registerViewlet
(
ViewletDescriptor
.
create
(
SearchViewlet
,
VIEWLET_ID
,
VIEW_CONTAINER
.
name
,
'
codicon-search
'
,
1
));
const
viewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
nls
.
localize
(
'
name
'
,
"
Search
"
),
ctorDescriptor
:
{
ctor
:
SearchViewPaneContainer
},
hideIfEmpty
:
true
,
icon
:
'
codicon-search
'
,
order
:
1
},
ViewContainerLocation
.
Sidebar
);
Registry
.
as
<
PanelRegistry
>
(
PanelExtensions
.
Panels
).
registerPanel
(
PanelDescriptor
.
create
(
SearchPanel
,
...
...
@@ -532,7 +532,7 @@ class RegisterSearchViewContribution implements IWorkbenchContribution {
const
updateSearchViewLocation
=
(
open
:
boolean
)
=>
{
const
config
=
configurationService
.
getValue
<
ISearchConfiguration
>
();
if
(
config
.
search
.
location
===
'
panel
'
)
{
viewsRegistry
.
deregisterViews
(
viewsRegistry
.
getViews
(
VIEW_CONTAINER
),
VIEW_CONTAINER
);
viewsRegistry
.
deregisterViews
(
viewsRegistry
.
getViews
(
viewContainer
),
viewContainer
);
Registry
.
as
<
PanelRegistry
>
(
PanelExtensions
.
Panels
).
registerPanel
(
PanelDescriptor
.
create
(
SearchPanel
,
PANEL_ID
,
...
...
@@ -545,7 +545,7 @@ class RegisterSearchViewContribution implements IWorkbenchContribution {
}
}
else
{
Registry
.
as
<
PanelRegistry
>
(
PanelExtensions
.
Panels
).
deregisterPanel
(
PANEL_ID
);
viewsRegistry
.
registerViews
([{
id
:
VIEW_ID
,
name
:
nls
.
localize
(
'
search
'
,
"
Search
"
),
ctorDescriptor
:
{
ctor
:
SearchView
,
arguments
:
[
SearchViewPosition
.
SideBar
]
},
canToggleVisibility
:
false
}],
VIEW_CONTAINER
);
viewsRegistry
.
registerViews
([{
id
:
VIEW_ID
,
name
:
nls
.
localize
(
'
search
'
,
"
Search
"
),
ctorDescriptor
:
{
ctor
:
SearchView
,
arguments
:
[
SearchViewPosition
.
SideBar
]
},
canToggleVisibility
:
false
}],
viewContainer
);
if
(
open
)
{
viewletService
.
openViewlet
(
VIEWLET_ID
);
}
...
...
src/vs/workbench/contrib/search/browser/searchViewlet.ts
浏览文件 @
2def84c1
...
...
@@ -14,26 +14,9 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
VIEWLET_ID
,
VIEW_ID
}
from
'
vs/workbench/services/search/common/search
'
;
import
{
SearchView
}
from
'
vs/workbench/contrib/search/browser/searchView
'
;
import
{
Viewlet
}
from
'
vs/workbench/browser/viewlet
'
;
import
{
ViewPaneContainer
}
from
'
vs/workbench/browser/parts/views/viewPaneContainer
'
;
export
class
SearchViewlet
extends
Viewlet
{
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IStorageService
protected
storageService
:
IStorageService
,
@
IInstantiationService
protected
instantiationService
:
IInstantiationService
,
@
IThemeService
themeService
:
IThemeService
,
@
IContextMenuService
protected
contextMenuService
:
IContextMenuService
,
@
IExtensionService
protected
extensionService
:
IExtensionService
,
@
IWorkspaceContextService
protected
contextService
:
IWorkspaceContextService
,
@
IWorkbenchLayoutService
protected
layoutService
:
IWorkbenchLayoutService
,
@
IConfigurationService
protected
configurationService
:
IConfigurationService
)
{
super
(
VIEWLET_ID
,
instantiationService
.
createInstance
(
SearchViewPaneContainer
),
telemetryService
,
storageService
,
instantiationService
,
themeService
,
contextMenuService
,
extensionService
,
contextService
,
layoutService
,
configurationService
);
}
}
export
class
SearchViewPaneContainer
extends
ViewPaneContainer
{
constructor
(
...
...
src/vs/workbench/services/search/common/search.ts
浏览文件 @
2def84c1
...
...
@@ -16,17 +16,10 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
import
{
ITelemetryData
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
relative
}
from
'
vs/base/common/path
'
;
import
{
Extensions
as
ViewContainerExtensions
,
ViewContainer
,
IViewContainersRegistry
,
ViewContainerLocation
}
from
'
vs/workbench/common/views
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
localize
}
from
'
vs/nls
'
;
export
const
VIEWLET_ID
=
'
workbench.view.search
'
;
export
const
PANEL_ID
=
'
workbench.view.search
'
;
export
const
VIEW_ID
=
'
workbench.view.search
'
;
/**
* Search viewlet container.
*/
export
const
VIEW_CONTAINER
:
ViewContainer
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
VIEWLET_ID
,
name
:
localize
(
'
name
'
,
"
Search
"
),
hideIfEmpty
:
true
},
ViewContainerLocation
.
Sidebar
);
export
const
ISearchService
=
createDecorator
<
ISearchService
>
(
'
searchService
'
);
...
...
src/vs/workbench/test/browser/parts/views/views.test.ts
浏览文件 @
2def84c1
...
...
@@ -15,7 +15,7 @@ import { TestInstantiationService } from 'vs/platform/instantiation/test/common/
import
{
ContextKeyService
}
from
'
vs/platform/contextkey/browser/contextKeyService
'
;
import
sinon
=
require
(
'
sinon
'
);
const
container
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
'
test
'
,
name
:
'
test
'
},
ViewContainerLocation
.
Sidebar
);
const
container
=
Registry
.
as
<
IViewContainersRegistry
>
(
ViewContainerExtensions
.
ViewContainersRegistry
).
registerViewContainer
({
id
:
'
test
'
,
name
:
'
test
'
,
ctorDescriptor
:
{
ctor
:
<
any
>
{}
}
},
ViewContainerLocation
.
Sidebar
);
const
ViewsRegistry
=
Registry
.
as
<
IViewsRegistry
>
(
ViewContainerExtensions
.
ViewsRegistry
);
class
ViewDescriptorSequence
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录