TableOperation.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:5k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.widget.Editor2Plugin.TableOperation");
  9. dojo.require("dojo.widget.Editor2");
  10. dojo.event.topic.subscribe("dojo.widget.RichText::init", function (editor) {
  11. if (dojo.render.html.ie) {
  12. editor.contentDomPreFilters.push(dojo.widget.Editor2Plugin.TableOperation.showIETableBorder);
  13. editor.contentDomPostFilters.push(dojo.widget.Editor2Plugin.TableOperation.removeIEFakeClass);
  14. }
  15. editor.getCommand("toggletableborder");
  16. });
  17. dojo.lang.declare("dojo.widget.Editor2Plugin.deleteTableCommand", dojo.widget.Editor2Command, {execute:function () {
  18. var table = dojo.withGlobal(this._editor.window, "getAncestorElement", dojo.html.selection, ["table"]);
  19. if (table) {
  20. dojo.withGlobal(this._editor.window, "selectElement", dojo.html.selection, [table]);
  21. this._editor.execCommand("inserthtml", " ");
  22. }
  23. }, getState:function () {
  24. if (this._editor._lastStateTimestamp > this._updateTime || this._state == undefined) {
  25. this._updateTime = this._editor._lastStateTimestamp;
  26. var table = dojo.withGlobal(this._editor.window, "hasAncestorElement", dojo.html.selection, ["table"]);
  27. this._state = table ? dojo.widget.Editor2Manager.commandState.Enabled : dojo.widget.Editor2Manager.commandState.Disabled;
  28. }
  29. return this._state;
  30. }, getText:function () {
  31. return "Delete Table";
  32. }});
  33. dojo.lang.declare("dojo.widget.Editor2Plugin.toggleTableBorderCommand", dojo.widget.Editor2Command, function () {
  34. this._showTableBorder = false;
  35. dojo.event.connect(this._editor, "editorOnLoad", this, "execute");
  36. }, {execute:function () {
  37. if (this._showTableBorder) {
  38. this._showTableBorder = false;
  39. if (dojo.render.html.moz) {
  40. this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));
  41. } else {
  42. if (dojo.render.html.ie) {
  43. this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));
  44. }
  45. }
  46. } else {
  47. this._showTableBorder = true;
  48. if (dojo.render.html.moz) {
  49. this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));
  50. } else {
  51. if (dojo.render.html.ie) {
  52. this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));
  53. }
  54. }
  55. }
  56. }, getText:function () {
  57. return "Toggle Table Border";
  58. }, getState:function () {
  59. return this._showTableBorder ? dojo.widget.Editor2Manager.commandState.Latched : dojo.widget.Editor2Manager.commandState.Enabled;
  60. }});
  61. dojo.widget.Editor2Plugin.TableOperation = {getCommand:function (editor, name) {
  62. switch (name.toLowerCase()) {
  63.   case "toggletableborder":
  64. return new dojo.widget.Editor2Plugin.toggleTableBorderCommand(editor, name);
  65.   case "inserttable":
  66. return new dojo.widget.Editor2DialogCommand(editor, "inserttable", {contentFile:"dojo.widget.Editor2Plugin.InsertTableDialog", contentClass:"Editor2InsertTableDialog", title:"Insert/Edit Table", width:"450px", height:"250px"});
  67.   case "deletetable":
  68. return new dojo.widget.Editor2Plugin.deleteTableCommand(editor, name);
  69. }
  70. }, getToolbarItem:function (name) {
  71. var name = name.toLowerCase();
  72. var item;
  73. switch (name) {
  74.   case "inserttable":
  75.   case "toggletableborder":
  76. item = new dojo.widget.Editor2ToolbarButton(name);
  77. }
  78. return item;
  79. }, getContextMenuGroup:function (name, contextmenuplugin) {
  80. return new dojo.widget.Editor2Plugin.TableContextMenuGroup(contextmenuplugin);
  81. }, showIETableBorder:function (dom) {
  82. var tables = dom.getElementsByTagName("table");
  83. dojo.lang.forEach(tables, function (t) {
  84. dojo.html.addClass(t, "dojoShowIETableBorders");
  85. });
  86. return dom;
  87. }, removeIEFakeClass:function (dom) {
  88. var tables = dom.getElementsByTagName("table");
  89. dojo.lang.forEach(tables, function (t) {
  90. dojo.html.removeClass(t, "dojoShowIETableBorders");
  91. });
  92. return dom;
  93. }};
  94. dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getCommand);
  95. dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getToolbarItem);
  96. if (dojo.widget.Editor2Plugin.ContextMenuManager) {
  97. dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup("Table", dojo.widget.Editor2Plugin.TableOperation.getContextMenuGroup);
  98. dojo.declare("dojo.widget.Editor2Plugin.TableContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
  99. this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Delete Table", command:"deletetable"}));
  100. this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Table Property", command:"inserttable", iconClass:"TB_Button_Icon TB_Button_Table"}));
  101. }, checkVisibility:function () {
  102. var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
  103. var table = dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"]);
  104. if (dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"])) {
  105. this.items[0].show();
  106. this.items[1].show();
  107. return true;
  108. } else {
  109. this.items[0].hide();
  110. this.items[1].hide();
  111. return false;
  112. }
  113. }});
  114. }