Rev 1318 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Editor2Plugin.TableOperation");dojo.require("dojo.widget.Editor2");dojo.event.topic.subscribe("dojo.widget.RichText::init", function (editor) {if (dojo.render.html.ie) {editor.contentDomPreFilters.push(dojo.widget.Editor2Plugin.TableOperation.showIETableBorder);editor.contentDomPostFilters.push(dojo.widget.Editor2Plugin.TableOperation.removeIEFakeClass);}editor.getCommand("toggletableborder");});dojo.lang.declare("dojo.widget.Editor2Plugin.deleteTableCommand", dojo.widget.Editor2Command, {execute:function () {var table = dojo.withGlobal(this._editor.window, "getAncestorElement", dojo.html.selection, ["table"]);if (table) {dojo.withGlobal(this._editor.window, "selectElement", dojo.html.selection, [table]);this._editor.execCommand("inserthtml", " ");}}, getState:function () {if (this._editor._lastStateTimestamp > this._updateTime || this._state == undefined) {this._updateTime = this._editor._lastStateTimestamp;var table = dojo.withGlobal(this._editor.window, "hasAncestorElement", dojo.html.selection, ["table"]);this._state = table ? dojo.widget.Editor2Manager.commandState.Enabled : dojo.widget.Editor2Manager.commandState.Disabled;}return this._state;}, getText:function () {return "Delete Table";}});dojo.lang.declare("dojo.widget.Editor2Plugin.toggleTableBorderCommand", dojo.widget.Editor2Command, function () {this._showTableBorder = false;dojo.event.connect(this._editor, "editorOnLoad", this, "execute");}, {execute:function () {if (this._showTableBorder) {this._showTableBorder = false;if (dojo.render.html.moz) {this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));} else {if (dojo.render.html.ie) {this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));}}} else {this._showTableBorder = true;if (dojo.render.html.moz) {this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));} else {if (dojo.render.html.ie) {this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));}}}}, getText:function () {return "Toggle Table Border";}, getState:function () {return this._showTableBorder ? dojo.widget.Editor2Manager.commandState.Latched : dojo.widget.Editor2Manager.commandState.Enabled;}});dojo.widget.Editor2Plugin.TableOperation = {getCommand:function (editor, name) {switch (name.toLowerCase()) {case "toggletableborder":return new dojo.widget.Editor2Plugin.toggleTableBorderCommand(editor, name);case "inserttable":return new dojo.widget.Editor2DialogCommand(editor, "inserttable", {contentFile:"dojo.widget.Editor2Plugin.InsertTableDialog", contentClass:"Editor2InsertTableDialog", title:"Insert/Edit Table", width:"450px", height:"250px"});case "deletetable":return new dojo.widget.Editor2Plugin.deleteTableCommand(editor, name);}}, getToolbarItem:function (name) {var name = name.toLowerCase();var item;switch (name) {case "inserttable":case "toggletableborder":item = new dojo.widget.Editor2ToolbarButton(name);}return item;}, getContextMenuGroup:function (name, contextmenuplugin) {return new dojo.widget.Editor2Plugin.TableContextMenuGroup(contextmenuplugin);}, showIETableBorder:function (dom) {var tables = dom.getElementsByTagName("table");dojo.lang.forEach(tables, function (t) {dojo.html.addClass(t, "dojoShowIETableBorders");});return dom;}, removeIEFakeClass:function (dom) {var tables = dom.getElementsByTagName("table");dojo.lang.forEach(tables, function (t) {dojo.html.removeClass(t, "dojoShowIETableBorders");});return dom;}};dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getCommand);dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getToolbarItem);if (dojo.widget.Editor2Plugin.ContextMenuManager) {dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup("Table", dojo.widget.Editor2Plugin.TableOperation.getContextMenuGroup);dojo.declare("dojo.widget.Editor2Plugin.TableContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Delete Table", command:"deletetable"}));this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Table Property", command:"inserttable", iconClass:"TB_Button_Icon TB_Button_Table"}));}, checkVisibility:function () {var curInst = dojo.widget.Editor2Manager.getCurrentInstance();var table = dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"]);if (dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"])) {this.items[0].show();this.items[1].show();return true;} else {this.items[0].hide();this.items[1].hide();return false;}}});}