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[] 執行該命令時傳遞的參數