createTreeView
从HBuilderX 2.7.12及以上版本开始支持
介绍
创建指定viewId的视图,在窗体左侧区域创建一个和项目管理器同级的tab项。tab的内容区为一个树控件,可自行装载节点。
viewId需要在package.json文件内的配置扩展点views中声明,完整的扩展视图流程参考如何注册一个新的视图?
参数说明:
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| viewId | String | 视图Id,需要首先在配置扩展点views中声明。 |
| options | TreeViewOptions | 创建TreeView时需要的设置项。 |
返回值:无
示例:
class DemoTreeDataProvider extends hx.TreeDataProvider{constructor(demoData) {super();this._demoData = demoData;}getChildren(element) {let demoData = this._demoData;return new Promise(resolve => {if (!element) {resolve(demoData);} else {resolve(element.children);}});}getTreeItem(element) {return {label:element.name,collapsibleState:element.children ? 1 : 0,command:{command:element.children ? "":"extension.helloWorld",arguments:[element.name]}}}}let demoData = [{name:"Root1",children:[{name:"child1"},{name:"child2"}]},{name:"Root2",children:[{name:"child3",},{name:"child4"}]}]hx.commands.registerCommand("extension.helloWorld",function(param){hx.window.showInformationMessage("选中了TreeItem:" + param[0]);});hx.window.createTreeView("extensions.treedemo",{showCollapseAll:true,treeDataProvider:new DemoTreeDataProvider(demoData);});
TreeViewOptions
创建TreeView需要的配置项
属性列表
| 属性名 | 属性类型 | 描述 |
|---|---|---|
| showCollapseAll | Boolean | 是否显示折叠所有 |
| treeDataProvider | TreeDataProvider | TreeView树控件获取数据的接口,需要自己写一个子类实现该接口。 |
TreeDataProvider
TreeView树控件获取数据的接口,不可直接实例化该对象,需要自己写一个子类实现该接口,每个自定义的treeDataProvider都需要实现该接口下列出的方法
getChildren
获取某个节点的下的子节点,如果参数为空,则表示要获取根节点
参数说明
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| element | Any? | 获取该节点下的子节点列表,如果参数为空,则是要获取根节点列表 |
返回值
| 返回类型 | 描述 |
|---|---|
| Promise<Any[]> | Promise |
getTreeItem
获取用于显示自定义数据element(通过getChildren获取的对象)的TreeItem对象
参数说明
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| element | Any? | 通过getChildren获取的列表对象中某一项 |
返回值
| 返回类型 | 描述 |
|---|---|
| TreeItem | 保存有节点的显示信息 |
onDidChangeTreeData
该接口用于通知HBuilderX数据变化,需要刷新视图,目前仅支持刷新整个视图。该属性需要开发者在构造TreeDataProvider时创建。
示例:
var hx = require("hbuilderx");class MyTreeViewProvider extends hx.TreeDataProvider {constructor() {super();this.dataChangeEmitter = new hx.EventEmitter();this.onDidChangeTreeData = this.dataChangeEmitter.event;}... // other function}// 数据变化主动通知provider.dataChangeEmitter.fire();
TreeItem
保存有节点的显示信息
属性列表
| 属性名 | 属性类型 | 描述 |
|---|---|---|
| collapsibleState | Number | 是否可展开,目前取值有:0:不可展开;1:可展开 |
| label | String | 该item的显示名称 |
| contextValue | String | 该item的上下文信息,在通过menus扩展点的view/item/context类别注册右键菜单时,用when表达式中的viewItem变量控制菜单显示。举例:viewItem == 'test' |
| command | CommandInfo | 当选中该item时要执行的命令 |
| tooltip | String | 鼠标悬浮到该item上的tooltip提示消息 |
CommandInfo
配置一个命令需要的信息对象
属性列表
| 属性名 | 属性类型 | 描述 |
|---|---|---|
| command | String | 要执行的命令id |
| arguments | any[] | 执行该命令时传递的参数 |
