assets-android-pack-setting.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. const utils = Editor.require('packages://build-helper/core/libs/utils.js');
  2. let ListItem;
  3. (() => {
  4. 'use strict';
  5. return function init ( panel ) {
  6. let viewEL = panel.$.view;
  7. let tmpl = 'packages://build-helper/panel/assets-android-pack-setting.tmpl';
  8. Editor.import(tmpl).then(content => {
  9. viewEL.innerHTML = content;
  10. let androidPack = `androidPack`;
  11. let pack = panel.getSettingItem(androidPack) || {};
  12. // 打包开关
  13. let checkboxEle = viewEL.querySelector('ui-checkbox');
  14. checkboxEle.value = pack.enable;
  15. checkboxEle.addEventListener('change', (event) => {
  16. pack.enable = event.target.value;
  17. panel.setSettingItem(androidPack, pack);
  18. });
  19. // 模版项目脚本目录
  20. let destEle = viewEL.querySelector('#dest');
  21. destEle.value = pack.dest;
  22. destEle.addEventListener('confirm', (event) => {
  23. pack.dest = event.target.value;
  24. panel.setSettingItem(androidPack, pack);
  25. });
  26. // 打开模版项目脚本目录
  27. let openDestEle = viewEL.querySelector('#openDest');
  28. openDestEle.addEventListener('click', (event) => {
  29. let res = Editor.Dialog.openFile({
  30. title: '模版项目脚本目录',
  31. defaultPath: Editor.Project.path,
  32. properties: ['openDirectory']
  33. });
  34. if (res !== -1) {
  35. let newPath = res[0];
  36. let relative = utils.getRelative(Editor.Project.path, newPath);
  37. destEle.value = relative;
  38. pack.dest = relative;
  39. panel.setSettingItem(androidPack, pack);
  40. }
  41. });
  42. // 临时项目脚本目录
  43. let tempEle = viewEL.querySelector('#temp');
  44. tempEle.value = pack.temp;
  45. tempEle.addEventListener('confirm', (event) => {
  46. pack.temp = event.target.value;
  47. panel.setSettingItem(androidPack, pack);
  48. });
  49. // 打开临时项目脚本目录
  50. let openTempEle = viewEL.querySelector('#openTemp');
  51. openTempEle.addEventListener('click', (event) => {
  52. let res = Editor.Dialog.openFile({
  53. title: '临时项目脚本目录',
  54. defaultPath: Editor.Project.path,
  55. properties: ['openDirectory']
  56. });
  57. if (res !== -1) {
  58. let newPath = res[0];
  59. let relative = utils.getRelative(Editor.Project.path, newPath);
  60. tempEle.value = relative;
  61. pack.temp = relative;
  62. panel.setSettingItem(androidPack, pack);
  63. }
  64. });
  65. let list = pack.list || [];
  66. let listEle = viewEL.querySelector('#list');
  67. if (!ListItem) {
  68. ListItem = Editor.UI.registerElement('copy-list-item', {
  69. template: `
  70. <div class="item"">
  71. <ui-input id="path" class="path" disabled></ui-input>
  72. <ui-button id="del" class="tiny red">删除</ui-button>
  73. </div>
  74. `,
  75. style: `
  76. .item {
  77. display: flex;
  78. background-color: black;
  79. padding: 2px;
  80. }
  81. .path {
  82. flex: 1;
  83. }
  84. `,
  85. factoryImpl ( text ) {
  86. this.$ = {
  87. path: this.shadowRoot.querySelector('#path'),
  88. del: this.shadowRoot.querySelector('#del')
  89. };
  90. this.$.path.value = text;
  91. this.$.del.addEventListener('click', (event) => {
  92. listEle.removeChild(this);
  93. // 配置中删除
  94. for (let i = 0; i < list.length; i++) {
  95. const path = list[i];
  96. if (path == text) {
  97. list.splice(i, 1);
  98. break;
  99. }
  100. }
  101. });
  102. }
  103. });
  104. }
  105. // 资源列表
  106. list.forEach(path => {
  107. let el = new ListItem(path);
  108. listEle.appendChild(el);
  109. });
  110. // 添加资源
  111. let addEle = viewEL.querySelector('#add');
  112. addEle.addEventListener('click', (event) => {
  113. event.stopPropagation();
  114. let res = Editor.Dialog.openFile({
  115. title: '选择需要拷贝的资源目录文件',
  116. defaultPath: Editor.Project.path,
  117. properties: ['openDirectory', 'openFile']
  118. });
  119. if (res !== -1) {
  120. let newPath = res[0];
  121. let relative = utils.getRelative(Editor.Project.path, newPath);
  122. for (const path of list) {
  123. if (path === relative) {
  124. Editor.log(relative + '已经存在!');
  125. return;
  126. }
  127. }
  128. let el = new ListItem(relative);
  129. listEle.appendChild(el);
  130. list.push(relative);
  131. pack.list = list;
  132. panel.setSettingItem(androidPack, pack);
  133. }
  134. });
  135. });
  136. };
  137. })();