createTreeView

从HBuilderX 2.7.12及以上版本开始支持

介绍

创建指定viewId的视图,在窗体左侧区域创建一个和项目管理器同级的tab项。tab的内容区为一个树控件,可自行装载节点。

viewId需要在package.json文件内的配置扩展点views中声明,完整的扩展视图流程参考如何注册一个新的视图?

参数说明:

参数名称 参数类型 描述
viewId String 视图Id,需要首先在配置扩展点views中声明。
options TreeViewOptions 创建TreeView时需要的设置项。

返回值:无

示例:

  1. class DemoTreeDataProvider extends hx.TreeDataProvider{
  2. constructor(demoData) {
  3. super();
  4. this._demoData = demoData;
  5. }
  6. getChildren(element) {
  7. let demoData = this._demoData;
  8. return new Promise(resolve => {
  9. if (!element) {
  10. resolve(demoData);
  11. } else {
  12. resolve(element.children);
  13. }
  14. });
  15. }
  16. getTreeItem(element) {
  17. return {
  18. label:element.name,
  19. collapsibleState:element.children ? 1 : 0,
  20. command:{
  21. command:element.children ? "":"extension.helloWorld",
  22. arguments:[
  23. element.name
  24. ]
  25. }
  26. }
  27. }
  28. }
  29. let demoData = [
  30. {
  31. name:"Root1",
  32. children:[
  33. {
  34. name:"child1"
  35. },
  36. {
  37. name:"child2"
  38. }
  39. ]
  40. },
  41. {
  42. name:"Root2",
  43. children:[
  44. {
  45. name:"child3",
  46. },
  47. {
  48. name:"child4"
  49. }
  50. ]
  51. }
  52. ]
  53. hx.commands.registerCommand("extension.helloWorld",function(param){
  54. hx.window.showInformationMessage("选中了TreeItem:" + param[0]);
  55. });
  56. hx.window.createTreeView("extensions.treedemo",{
  57. showCollapseAll:true,
  58. treeDataProvider:new DemoTreeDataProvider(demoData);
  59. });

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时创建

示例:

  1. var hx = require("hbuilderx");
  2. class MyTreeViewProvider extends hx.TreeDataProvider {
  3. constructor() {
  4. super();
  5. this.dataChangeEmitter = new hx.EventEmitter();
  6. this.onDidChangeTreeData = this.dataChangeEmitter.event;
  7. }
  8. ... // other function
  9. }
  10. // 数据变化主动通知
  11. 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[] 执行该命令时传递的参数