Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
d7691914
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,发现更多精彩内容 >>
提交
d7691914
编写于
4月 20, 2020
作者:
E
Eric Amodio
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adds `defaultLayout` option for embedding — #990
上级
d88608d3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
238 addition
and
1 deletion
+238
-1
src/vs/workbench/browser/web.main.ts
src/vs/workbench/browser/web.main.ts
+190
-1
src/vs/workbench/workbench.web.api.ts
src/vs/workbench/workbench.web.api.ts
+48
-0
未找到文件。
src/vs/workbench/browser/web.main.ts
浏览文件 @
d7691914
...
...
@@ -38,7 +38,7 @@ import { FileUserDataProvider } from 'vs/workbench/services/userData/common/file
import
{
BACKUPS
}
from
'
vs/platform/environment/common/environment
'
;
import
{
joinPath
}
from
'
vs/base/common/resources
'
;
import
{
BrowserStorageService
}
from
'
vs/platform/storage/browser/storageService
'
;
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IStorageService
,
StorageScope
}
from
'
vs/platform/storage/common/storage
'
;
import
{
getThemeTypeSelector
,
DARK
,
HIGH_CONTRAST
,
LIGHT
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
registerWindowDriver
}
from
'
vs/platform/driver/browser/driver
'
;
import
{
BufferLogService
}
from
'
vs/platform/log/common/bufferLog
'
;
...
...
@@ -52,6 +52,23 @@ import { coalesce } from 'vs/base/common/arrays';
import
{
InMemoryFileSystemProvider
}
from
'
vs/platform/files/common/inMemoryFilesystemProvider
'
;
import
{
WebResourceIdentityService
,
IResourceIdentityService
}
from
'
vs/platform/resource/common/resourceIdentityService
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
firstSessionDateStorageKey
}
from
'
vs/platform/telemetry/common/telemetry
'
;
interface
PanelActivityState
{
id
:
string
;
name
?:
string
;
pinned
:
boolean
;
order
:
number
;
visible
:
boolean
;
}
interface
SideBarActivityState
{
id
:
string
;
pinned
:
boolean
;
order
:
number
;
visible
:
boolean
;
}
class
BrowserMain
extends
Disposable
{
...
...
@@ -81,6 +98,8 @@ class BrowserMain extends Disposable {
// Listeners
this
.
registerListeners
(
workbench
,
services
.
storageService
);
this
.
applyDefaultLayout
(
services
.
storageService
);
// Driver
if
(
this
.
configuration
.
driver
)
{
(
async
()
=>
this
.
_register
(
await
registerWindowDriver
()))();
...
...
@@ -101,6 +120,176 @@ class BrowserMain extends Disposable {
});
}
private
applyDefaultLayout
(
storageService
:
BrowserStorageService
)
{
const
{
defaultLayout
}
=
this
.
configuration
;
if
(
!
defaultLayout
)
{
return
;
}
const
firstRun
=
storageService
.
get
(
firstSessionDateStorageKey
,
StorageScope
.
GLOBAL
);
if
(
firstRun
!==
undefined
)
{
return
;
}
const
{
sidebar
}
=
defaultLayout
;
if
(
sidebar
)
{
if
(
sidebar
.
visible
!==
undefined
)
{
if
(
sidebar
.
visible
)
{
storageService
.
remove
(
'
workbench.sidebar.hidden
'
,
StorageScope
.
WORKSPACE
);
}
else
{
storageService
.
store
(
'
workbench.sidebar.hidden
'
,
true
,
StorageScope
.
WORKSPACE
);
}
}
if
(
sidebar
.
containers
!==
undefined
)
{
const
sidebarState
:
SideBarActivityState
[]
=
[];
let
order
=
-
1
;
for
(
const
container
of
sidebar
.
containers
.
sort
((
a
,
b
)
=>
(
a
.
order
??
1
)
-
(
b
.
order
??
1
)))
{
let
viewletId
;
switch
(
container
.
id
)
{
case
'
explorer
'
:
viewletId
=
'
workbench.view.explorer
'
;
break
;
case
'
run
'
:
viewletId
=
'
workbench.view.debug
'
;
break
;
case
'
scm
'
:
viewletId
=
'
workbench.view.scm
'
;
break
;
case
'
search
'
:
viewletId
=
'
workbench.view.search
'
;
break
;
case
'
extensions
'
:
viewletId
=
'
workbench.view.extensions
'
;
break
;
case
'
remote
'
:
viewletId
=
'
workbench.view.remote
'
;
break
;
default
:
viewletId
=
`workbench.view.extension.
${
container
.
id
}
`
;
}
order
=
container
.
order
??
(
order
+
1
);
const
state
:
SideBarActivityState
=
{
id
:
viewletId
,
order
:
order
,
pinned
:
true
,
visible
:
true
};
if
(
container
.
active
)
{
storageService
.
store
(
'
workbench.sidebar.activeviewletid
'
,
viewletId
,
StorageScope
.
WORKSPACE
);
}
else
{
if
(
container
.
visible
!==
undefined
)
{
state
.
pinned
=
container
.
visible
;
state
.
visible
=
container
.
visible
;
}
}
sidebarState
.
push
(
state
);
if
(
container
.
views
!==
undefined
)
{
const
viewsState
:
{
id
:
string
,
isHidden
?:
boolean
,
order
?:
number
}[]
=
[];
const
viewsWorkspaceState
:
{
[
id
:
string
]:
{
collapsed
:
boolean
,
isHidden
?:
boolean
,
size
?:
number
}
}
=
{};
for
(
const
view
of
container
.
views
)
{
if
(
view
.
order
!==
undefined
||
view
.
visible
!==
undefined
)
{
viewsState
.
push
({
id
:
view
.
id
,
isHidden
:
view
.
visible
===
undefined
?
undefined
:
!
view
.
visible
,
order
:
view
.
order
===
undefined
?
undefined
:
view
.
order
});
}
if
(
view
.
collapsed
!==
undefined
)
{
viewsWorkspaceState
[
view
.
id
]
=
{
collapsed
:
view
.
collapsed
,
isHidden
:
view
.
visible
===
undefined
?
undefined
:
!
view
.
visible
,
};
}
}
storageService
.
store
(
`
${
viewletId
}
.state.hidden`
,
JSON
.
stringify
(
viewsState
),
StorageScope
.
GLOBAL
);
storageService
.
store
(
`
${
viewletId
}
.state`
,
JSON
.
stringify
(
viewsWorkspaceState
),
StorageScope
.
WORKSPACE
);
}
}
storageService
.
store
(
'
workbench.activity.pinnedViewlets2
'
,
JSON
.
stringify
(
sidebarState
),
StorageScope
.
GLOBAL
);
}
}
const
{
panel
}
=
defaultLayout
;
if
(
panel
)
{
if
(
panel
.
visible
!==
undefined
)
{
if
(
panel
.
visible
)
{
storageService
.
store
(
'
workbench.panel.hidden
'
,
false
,
StorageScope
.
WORKSPACE
);
}
else
{
storageService
.
remove
(
'
workbench.panel.hidden
'
,
StorageScope
.
WORKSPACE
);
}
}
if
(
panel
.
containers
!==
undefined
)
{
const
panelState
:
PanelActivityState
[]
=
[];
let
order
=
-
1
;
for
(
const
container
of
panel
.
containers
.
sort
((
a
,
b
)
=>
(
a
.
order
??
1
)
-
(
b
.
order
??
1
)))
{
let
name
;
let
panelId
=
container
.
id
;
switch
(
panelId
)
{
case
'
terminal
'
:
name
=
'
Terminal
'
;
panelId
=
'
workbench.panel.terminal
'
;
break
;
case
'
debug
'
:
name
=
'
Debug Console
'
;
panelId
=
'
workbench.panel.repl
'
;
break
;
case
'
problems
'
:
name
=
'
Problems
'
;
panelId
=
'
workbench.panel.markers
'
;
break
;
case
'
output
'
:
name
=
'
Output
'
;
panelId
=
'
workbench.panel.output
'
;
break
;
case
'
comments
'
:
name
=
'
Comments
'
;
panelId
=
'
workbench.panel.comments
'
;
break
;
case
'
refactor
'
:
name
=
'
Refactor Preview
'
;
panelId
=
'
refactorPreview
'
;
default
:
continue
;
}
order
=
container
.
order
??
(
order
+
1
);
const
state
:
PanelActivityState
=
{
id
:
panelId
,
name
:
name
,
order
:
order
,
pinned
:
true
,
visible
:
true
};
if
(
container
.
active
)
{
storageService
.
store
(
'
workbench.panelpart.activepanelid
'
,
panelId
,
StorageScope
.
WORKSPACE
);
}
else
{
if
(
container
.
visible
!==
undefined
)
{
state
.
pinned
=
container
.
visible
;
state
.
visible
=
container
.
visible
;
}
}
panelState
.
push
(
state
);
}
storageService
.
store
(
'
workbench.panel.pinnedPanels
'
,
JSON
.
stringify
(
panelState
),
StorageScope
.
GLOBAL
);
}
}
}
private
registerListeners
(
workbench
:
Workbench
,
storageService
:
BrowserStorageService
):
void
{
// Layout
...
...
src/vs/workbench/workbench.web.api.ts
浏览文件 @
d7691914
...
...
@@ -105,6 +105,52 @@ interface IHomeIndicator {
title
:
string
;
}
interface
IDefaultSideBarLayout
{
visible
?:
boolean
;
containers
?:
({
id
:
'
explorer
'
|
'
run
'
|
'
scm
'
|
'
search
'
|
'
extensions
'
|
'
remote
'
|
string
;
active
:
true
;
order
?:
number
;
views
?:
{
id
:
string
;
order
?:
number
;
visible
?:
boolean
;
collapsed
?:
boolean
;
}[];
}
|
{
id
:
'
explorer
'
|
'
run
'
|
'
scm
'
|
'
search
'
|
'
extensions
'
|
'
remote
'
|
string
;
active
?:
false
|
undefined
;
order
?:
number
;
visible
?:
boolean
;
views
?:
{
id
:
string
;
order
?:
number
;
visible
?:
boolean
;
collapsed
?:
boolean
;
}[];
})[];
}
interface
IDefaultPanelLayout
{
visible
?:
boolean
;
containers
?:
({
id
:
'
terminal
'
|
'
debug
'
|
'
problems
'
|
'
output
'
|
'
comments
'
|
string
;
order
?:
number
;
active
:
true
;
}
|
{
id
:
'
terminal
'
|
'
debug
'
|
'
problems
'
|
'
output
'
|
'
comments
'
|
string
;
order
?:
number
;
active
?:
false
|
undefined
;
visible
?:
boolean
;
})[];
}
interface
IDefaultLayout
{
sidebar
?:
IDefaultSideBarLayout
;
panel
?:
IDefaultPanelLayout
;
// editors?: IDefaultWorkspaceEditorsLayout
}
interface
IWorkbenchConstructionOptions
{
//#region Connection related configuration
...
...
@@ -221,6 +267,8 @@ interface IWorkbenchConstructionOptions {
readonly
driver
?:
boolean
;
//#endregion
defaultLayout
?:
IDefaultLayout
;
}
interface
IWorkbench
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录