Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
154cdf91
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,发现更多精彩内容 >>
提交
154cdf91
编写于
10月 05, 2016
作者:
P
Pine Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Keep a local tree at extHostExplorer side
上级
f3645385
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
58 addition
and
13 deletion
+58
-13
src/vs/workbench/api/node/extHost.protocol.ts
src/vs/workbench/api/node/extHost.protocol.ts
+4
-2
src/vs/workbench/api/node/extHostExplorers.ts
src/vs/workbench/api/node/extHostExplorers.ts
+43
-8
src/vs/workbench/api/node/mainThreadExplorers.ts
src/vs/workbench/api/node/mainThreadExplorers.ts
+11
-3
未找到文件。
src/vs/workbench/api/node/extHost.protocol.ts
浏览文件 @
154cdf91
...
...
@@ -34,6 +34,8 @@ import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
import
{
IWorkspaceSymbol
}
from
'
vs/workbench/parts/search/common/search
'
;
import
{
IApplyEditsOptions
,
TextEditorRevealType
,
ITextEditorConfigurationUpdate
,
IResolvedTextEditorConfiguration
,
ISelectionChangeEvent
}
from
'
./mainThreadEditorsTracker
'
;
import
{
ExtHostTreeNode
}
from
'
vs/workbench/api/node/extHostExplorers
'
;
export
interface
InstanceSetter
<
T
>
{
set
<
R
extends
T
>
(
instance
:
T
):
R
;
}
...
...
@@ -263,8 +265,8 @@ export abstract class ExtHostEditorsShape {
}
export
abstract
class
ExtHostExplorersShape
{
$provideTreeContent
(
treeContentProviderId
:
string
):
TPromise
<
vscode
.
I
TreeNode
>
{
throw
ni
();
};
$resolveChildren
(
treeContentProviderId
:
string
,
node
:
vscode
.
ITreeNode
):
TPromise
<
vscode
.
I
TreeNode
[]
>
{
throw
ni
();
}
$provideTreeContent
(
treeContentProviderId
:
string
):
TPromise
<
ExtHost
TreeNode
>
{
throw
ni
();
};
$resolveChildren
(
treeContentProviderId
:
string
,
node
:
ExtHostTreeNode
):
TPromise
<
ExtHost
TreeNode
[]
>
{
throw
ni
();
}
}
export
abstract
class
ExtHostExtensionServiceShape
{
...
...
src/vs/workbench/api/node/extHostExplorers.ts
浏览文件 @
154cdf91
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
*
as
vscode
from
'
vscode
'
;
import
{
ITreeNode
,
TreeContentProvider
}
from
'
vscode
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Disposable
}
from
'
vs/workbench/api/node/extHostTypes
'
;
import
{
IThreadService
}
from
'
vs/workbench/services/thread/common/threadService
'
;
...
...
@@ -13,7 +13,9 @@ import {MainContext, ExtHostExplorersShape, MainThreadExplorersShape} from './ex
export
class
ExtHostExplorers
extends
ExtHostExplorersShape
{
private
_proxy
:
MainThreadExplorersShape
;
private
_treeContentProviders
:
{
[
treeContentProviderId
:
string
]:
vscode
.
TreeContentProvider
};
private
_treeContentProviders
:
{
[
treeContentProviderId
:
string
]:
TreeContentProvider
};
private
_treeContents
:
{
[
treeContentProviderId
:
string
]:
ExtHostTreeNode
};
private
_treeNodeMaps
:
{
[
treeContentProviderId
:
string
]:
{
[
id
:
number
]:
ExtHostTreeNode
}};
constructor
(
threadService
:
IThreadService
...
...
@@ -23,9 +25,11 @@ export class ExtHostExplorers extends ExtHostExplorersShape {
this
.
_proxy
=
threadService
.
get
(
MainContext
.
MainThreadExplorers
);
this
.
_treeContentProviders
=
Object
.
create
(
null
);
this
.
_treeContents
=
Object
.
create
(
null
);
this
.
_treeNodeMaps
=
Object
.
create
(
null
);
}
registerTreeContentProvider
(
providerId
:
string
,
provider
:
vscode
.
TreeContentProvider
):
vscode
.
Disposable
{
registerTreeContentProvider
(
providerId
:
string
,
provider
:
TreeContentProvider
):
Disposable
{
this
.
_proxy
.
$registerTreeContentProvider
(
providerId
);
this
.
_treeContentProviders
[
providerId
]
=
provider
;
...
...
@@ -36,25 +40,56 @@ export class ExtHostExplorers extends ExtHostExplorersShape {
});
}
$provideTreeContent
(
treeContentProviderId
:
string
):
TPromise
<
vscode
.
I
TreeNode
>
{
$provideTreeContent
(
treeContentProviderId
:
string
):
TPromise
<
ExtHost
TreeNode
>
{
const
provider
=
this
.
_treeContentProviders
[
treeContentProviderId
];
if
(
!
provider
)
{
throw
new
Error
(
`no TreeContentProvider registered with id '
${
treeContentProviderId
}
'`
);
}
return
TPromise
.
wrap
(
provider
.
provideTreeContent
().
then
(
treeContent
=>
{
return
treeContent
;
const
treeNodeMap
=
Object
.
create
(
null
);
this
.
_treeNodeMaps
[
treeContentProviderId
]
=
treeNodeMap
;
this
.
_treeContents
[
treeContentProviderId
]
=
new
ExtHostTreeNode
(
treeContent
,
null
,
treeNodeMap
);
return
this
.
_treeContents
[
treeContentProviderId
];
}));
}
$resolveChildren
(
treeContentProviderId
:
string
,
node
:
vscode
.
ITreeNode
):
TPromise
<
vscode
.
I
TreeNode
[]
>
{
$resolveChildren
(
treeContentProviderId
:
string
,
mainThreadNode
:
ExtHostTreeNode
):
TPromise
<
ExtHost
TreeNode
[]
>
{
const
provider
=
this
.
_treeContentProviders
[
treeContentProviderId
];
if
(
!
provider
)
{
throw
new
Error
(
`no TreeContentProvider registered with id '
${
treeContentProviderId
}
'`
);
}
return
TPromise
.
wrap
(
provider
.
resolveChildren
(
node
).
then
(
children
=>
{
return
children
;
const
treeNodeMap
=
this
.
_treeNodeMaps
[
treeContentProviderId
];
const
extHostNode
=
treeNodeMap
[
mainThreadNode
.
id
];
return
TPromise
.
wrap
(
provider
.
resolveChildren
(
extHostNode
).
then
(
children
=>
{
extHostNode
.
children
=
children
.
map
(
child
=>
{
return
new
ExtHostTreeNode
(
child
,
extHostNode
,
treeNodeMap
);
});
return
extHostNode
.
children
;
}));
}
}
export
class
ExtHostTreeNode
implements
ITreeNode
{
static
idCounter
=
1
;
id
:
number
;
label
:
string
;
isExpanded
:
boolean
;
children
:
ExtHostTreeNode
[];
constructor
(
node
:
ITreeNode
,
parent
:
ExtHostTreeNode
,
treeNodeMap
:
{
[
id
:
number
]:
ExtHostTreeNode
})
{
this
.
id
=
ExtHostTreeNode
.
idCounter
++
;
this
.
label
=
node
.
label
;
this
.
isExpanded
=
node
.
isExpanded
;
this
.
children
=
node
.
children
.
map
(
child
=>
{
return
new
ExtHostTreeNode
(
child
,
this
,
treeNodeMap
);
})
treeNodeMap
[
this
.
id
]
=
this
;
}
}
\ No newline at end of file
src/vs/workbench/api/node/mainThreadExplorers.ts
浏览文件 @
154cdf91
...
...
@@ -11,9 +11,13 @@ import {ExtHostContext, MainThreadExplorersShape, ExtHostExplorersShape} from '.
import
{
ITreeExplorerViewletService
}
from
'
vs/workbench/parts/explorers/browser/treeExplorerViewletService
'
;
import
{
TreeViewNode
}
from
'
vs/workbench/parts/explorers/common/treeViewModel
'
;
import
{
ExtHostTreeNode
}
from
'
vs/workbench/api/node/extHostExplorers
'
;
export
class
MainThreadExplorers
extends
MainThreadExplorersShape
{
private
_proxy
:
ExtHostExplorersShape
;
private
_treeContents
:
{
[
treeContentProviderId
:
string
]:
ExtHostTreeNode
};
constructor
(
@
IThreadService
threadService
:
IThreadService
,
@
ITreeExplorerViewletService
private
treeExplorerViewletService
:
ITreeExplorerViewletService
...
...
@@ -21,14 +25,18 @@ export class MainThreadExplorers extends MainThreadExplorersShape {
super
();
this
.
_proxy
=
threadService
.
get
(
ExtHostContext
.
ExtHostExplorers
);
this
.
_treeContents
=
Object
.
create
(
null
);
}
$registerTreeContentProvider
(
providerId
:
string
):
void
{
this
.
treeExplorerViewletService
.
registerTreeContentProvider
(
providerId
,
{
provideTreeContent
:
():
TPromise
<
ITreeNode
>
=>
{
return
this
.
_proxy
.
$provideTreeContent
(
providerId
);
provideTreeContent
:
():
TPromise
<
ExtHostTreeNode
>
=>
{
return
this
.
_proxy
.
$provideTreeContent
(
providerId
).
then
(
treeContent
=>
{
this
.
_treeContents
[
providerId
]
=
treeContent
;
return
treeContent
;
})
},
resolveChildren
:
(
node
:
ITreeNode
):
TPromise
<
I
TreeNode
[]
>
=>
{
resolveChildren
:
(
node
:
ExtHostTreeNode
):
TPromise
<
ExtHost
TreeNode
[]
>
=>
{
return
this
.
_proxy
.
$resolveChildren
(
providerId
,
node
);
}
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录