wdEditor.table.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. manager.registerUI("inserttable", function (wdeditor, name) {
  2. var editor = wdeditor.getUeditor();
  3. var tablePopup = new baidu.editor.ui.Popup({
  4. editor: editor,
  5. content: '',
  6. className: 'edui-bubble',
  7. _deletetable: function () {
  8. this.hide();
  9. wdeditor.execCommand("deletetable");
  10. },
  11. _insertrow: function (name) {
  12. this.hide();
  13. wdeditor.execCommand("insertrow");
  14. },
  15. _deleterow: function (name) {
  16. this.hide();
  17. wdeditor.execCommand("deleterow");
  18. },
  19. _insertcol: function (name) {
  20. this.hide();
  21. wdeditor.execCommand("insertcol");
  22. },
  23. _deletecol: function (name) {
  24. this.hide();
  25. wdeditor.execCommand("deletecol");
  26. },
  27. _mergecells: function (name) {
  28. this.hide();
  29. wdeditor.execCommand("mergecells");
  30. },
  31. _deleterow: function (name) {
  32. this.hide();
  33. wdeditor.execCommand("deleterow");
  34. },
  35. _mergeright: function (name) {
  36. this.hide();
  37. wdeditor.execCommand("mergeright");
  38. },
  39. _mergedown: function (name) {
  40. this.hide();
  41. wdeditor.execCommand("mergedown");
  42. },
  43. _splittocells: function (name) {
  44. this.hide();
  45. wdeditor.execCommand("splittocells");
  46. },
  47. queryAutoHide: function (el) {
  48. if (el && el.ownerDocument == editor.document) {
  49. if (el.tagName.toLowerCase() == 'table' ||
  50. baidu.editor.dom.domUtils.findParentByTagName(el, 'a',
  51. true)) {
  52. return el !== popup.anchorEl;
  53. }
  54. }
  55. return baidu.editor.ui.Popup.prototype.queryAutoHide
  56. .call(this, el);
  57. }
  58. });
  59. tablePopup.render();
  60. // 删除表格 插入行 插入列 删除行 删除列 合并选中 右合并 下合并 拆分
  61. var tableCmds = [['deletetable', '删除表格','icon-deleteTable'], ['insertrow', '插入行','icon-insertRow'], ['insertcol', '插入列','icon-insertCol'], ['deleterow', '删除行','icon-deleteRow'], ['deletecol', '删除列','icon-deleteCol'], ['mergecells', '合并选中','icon-mergeCells'], ['mergeright', '右合并','icon-mergeRight'], ['mergedown', '下合并','icon-mergeDown'], ['splittocells', '拆分','icon-splitToCells']];
  62. var tableBtnStr = '<div class="toolbar-button @class@" onclick=$$._@event@() class="edui-clickable" value="">@value@</div>';
  63. var btn = new EditorManager.Button({
  64. type: "button",
  65. name: "inserttable",
  66. className: "icon-table",
  67. text: "",
  68. title: "表格",
  69. onpicktable: function (t, numCols, numRows) {
  70. wdeditor.execCommand('InsertTable', {
  71. numRows: numRows,
  72. numCols: numCols,
  73. border: 1
  74. });
  75. },
  76. setSelectionChange: function () {
  77. var this_ = this;
  78. wdeditor.addListener("selectionchange", function () {
  79. this_.setDisable(wdeditor.queryCommandState("inserttable") == -1);
  80. var evt = event;
  81. var sel = wdeditor.getUeditor().selection;
  82. var el = $(sel.getStart(), sel.document.defaultView).parents("table")[0];
  83. if (el) {
  84. var html = '<nobr>';
  85. for (var i = 0; i < tableCmds.length; i++) {
  86. var cmd = tableCmds[i][0],
  87. txt = tableCmds[i][1],
  88. clas = tableCmds[i][2]
  89. if (wdeditor.queryCommandState(cmd) != -1) {
  90. // .replace("@value@", txt)
  91. html += tableBtnStr.replace("@event@", cmd).replace("@value@", txt).replace("@class@", clas);
  92. }
  93. }
  94. html += '</nobr>';
  95. html = tablePopup.formatHtml(html);
  96. tablePopup.getDom("content").innerHTML = html;
  97. tablePopup.anchorEl = el;
  98. tablePopup.showAnchor(tablePopup.anchorEl);
  99. }
  100. });
  101. },
  102. onBtnClick: function () {
  103. var h = this.getElement().offsetHeight;
  104. var ofs = $(this.getElement()).offset();
  105. ofs.top += h + 3;
  106. this.popup.showAt(ofs);
  107. },
  108. _onPickTable: function (numCols, numRows) {
  109. if (this.onpicktable('picktable', numCols, numRows) !== false) {
  110. this.popup.hide();
  111. }
  112. },
  113. oninit: function () {
  114. var me = this;
  115. var picker = new baidu.editor.ui.TablePicker({
  116. editor: wdeditor.getUeditor(),
  117. onpicktable: function (t, numCols, numRows) {
  118. me._onPickTable(numCols, numRows);
  119. }
  120. })
  121. var popup = new baidu.editor.ui.Popup({
  122. content: picker,
  123. editor: wdeditor.getUeditor()
  124. });
  125. this.popup = popup;
  126. }
  127. });
  128. return btn;
  129. });
  130. manager.registerUI("tabletools", function (wdeditor, name) {
  131. var btn = new EditorManager.ButtonGroup({
  132. wdeditor: wdeditor,
  133. name: name,
  134. command: name,
  135. buttons: {
  136. deletetable: {
  137. type: "button",
  138. className: "insideButton-deleteRable",
  139. name: "deletetable",
  140. text: "删除表格",
  141. title: "删除表格"
  142. },
  143. insertrow: {
  144. type: "button",
  145. className: "insideButton-insertRow",
  146. name: "insertrow",
  147. text: "插入行",
  148. title: "插入行"
  149. },
  150. deleterow: {
  151. type: "button",
  152. className: "insideButton-deleteRow",
  153. name: "deleterow",
  154. text: "删除行",
  155. title: "删除行"
  156. },
  157. insertcol: {
  158. type: "button",
  159. className: "insideButton-insertCol",
  160. name: "insertcol",
  161. text: "插入列",
  162. title: "插入列"
  163. },
  164. deletecol: {
  165. type: "button",
  166. className: "insideButton-deleteCol",
  167. name: "deletecol",
  168. text: "删除列",
  169. title: "删除列"
  170. },
  171. mergecells: {
  172. type: "button",
  173. className: "insideButton-mergeCells",
  174. name: "mergecells",
  175. text: "选中合并",
  176. title: "合并选定单元格"
  177. },
  178. mergeright: {
  179. type: "button",
  180. className: "insideButton-mergeRight",
  181. name: "mergeright",
  182. text: "右合并",
  183. title: "合并右边单元格"
  184. },
  185. mergedown: {
  186. type: "button",
  187. className: "insideButton-mergeDown",
  188. name: "mergedown",
  189. text: "下合并",
  190. title: "合并下边单元格"
  191. },
  192. splittocells: {
  193. type: "button",
  194. className: "insideButton-splitToCells",
  195. name: "splittocells",
  196. text: "拆分",
  197. title: "拆分单元格"
  198. }
  199. }
  200. });
  201. return btn;
  202. });