diff options
| author | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
|---|---|---|
| committer | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
| commit | b62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch) | |
| tree | 86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo-1.7.2/dojox/editor/plugins/CollapsibleToolbar.js | |
Diffstat (limited to 'js/dojo-1.7.2/dojox/editor/plugins/CollapsibleToolbar.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/editor/plugins/CollapsibleToolbar.js | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/editor/plugins/CollapsibleToolbar.js b/js/dojo-1.7.2/dojox/editor/plugins/CollapsibleToolbar.js new file mode 100644 index 0000000..eff9f9e --- /dev/null +++ b/js/dojo-1.7.2/dojox/editor/plugins/CollapsibleToolbar.js @@ -0,0 +1,186 @@ +//>>built +define("dojox/editor/plugins/CollapsibleToolbar", [ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_editor/_Plugin", + "dijit/form/Button", + "dijit/focus", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/CollapsibleToolbar" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins._CollapsibleToolbarButton", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // Simple internal widget for representing a clickable button for expand/collapse + // with A11Y support. + // tags: + // private + templateString: "<div tabindex='0' role='button' title='${title}' class='${buttonClass}' " + + "dojoAttachEvent='ondijitclick: onClick'><span class='${textClass}'>${text}</span></div>", + + + // title [public] String + // The text to read by a screen reader that gets button focus. + title: "", + + // buttonClass [public] String + // The classname to apply to the expand/collapse button. + buttonClass: "", + + // text [public] String + // The text to use as expand/collapse in A11Y mode. + text: "", + + // textClass [public] String + // The classname to apply to the expand/collapse text. + textClass: "", + + onClick: function(e){ + // summary: + // Simple synthetic event to listen for dijit click events (mouse or keyboard) + } +}); + + +dojo.declare("dojox.editor.plugins.CollapsibleToolbar",dijit._editor._Plugin,{ + // summary: + // This plugin provides a weappable toolbar container to allow expand/collapse + // of the editor toolbars. This plugin should be registered first in most cases to + // avoid conflicts in toolbar construction. + + // _myWidgets: [private] array + // Container for widgets I allocate that will need to be destroyed. + _myWidgets: null, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._constructContainer(); + }, + + _constructContainer: function(){ + // summary: + // Internal function to construct a wrapper for the toolbar/header that allows + // it to expand and collapse. It effectively builds a containing table, + // which handles the layout nicely and gets BIDI support by default. + // tags: + // private + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "CollapsibleToolbar"); + this._myWidgets = []; + + // Build the containers. + var container = dojo.create("table", {style: { width: "100%" }, tabindex: -1, "class": "dojoxCollapsibleToolbarContainer"}); + var tbody = dojo.create("tbody", {tabindex: -1}, container); + var row = dojo.create("tr", {tabindex: -1}, tbody); + var openTd = dojo.create("td", {"class": "dojoxCollapsibleToolbarControl", tabindex: -1}, row); + var closeTd = dojo.create("td", {"class": "dojoxCollapsibleToolbarControl", tabindex: -1}, row); + var menuTd = dojo.create("td", {style: { width: "100%" }, tabindex: -1}, row); + var m = dojo.create("span", {style: { width: "100%" }, tabindex: -1}, menuTd); + + var collapseButton = new dojox.editor.plugins._CollapsibleToolbarButton({ + buttonClass: "dojoxCollapsibleToolbarCollapse", + title: strings.collapse, + text: "-", + textClass: "dojoxCollapsibleToolbarCollapseText" + }); + dojo.place(collapseButton.domNode, openTd); + var expandButton = new dojox.editor.plugins._CollapsibleToolbarButton({ + buttonClass: "dojoxCollapsibleToolbarExpand", + title: strings.expand, + text: "+", + textClass: "dojoxCollapsibleToolbarExpandText" + }); + dojo.place(expandButton.domNode, closeTd); + + this._myWidgets.push(collapseButton); + this._myWidgets.push(expandButton); + + // Attach everything in now. + dojo.style(closeTd, "display", "none"); + dojo.place(container, this.editor.toolbar.domNode, "after"); + dojo.place(this.editor.toolbar.domNode, m); + + this.openTd = openTd; + this.closeTd = closeTd; + this.menu = m; + + // Establish the events to handle open/close. + this.connect(collapseButton, "onClick", "_onClose"); + this.connect(expandButton, "onClick", "_onOpen"); + }, + + _onClose: function(e){ + // summary: + // Internal function for handling a click event that will close the toolbar. + // e: + // The click event. + // tags: + // private + if(e){ dojo.stopEvent(e); } + var size = dojo.marginBox(this.editor.domNode); + dojo.style(this.openTd, "display", "none"); + dojo.style(this.closeTd, "display", ""); + dojo.style(this.menu, "display", "none"); + this.editor.resize({h: size.h}); + // work around IE rendering glitch in a11y mode. + if(dojo.isIE){ + this.editor.header.className = this.editor.header.className; + this.editor.footer.className = this.editor.footer.className; + } + dijit.focus(this.closeTd.firstChild); + }, + + _onOpen: function(e) { + // summary: + // Internal function for handling a click event that will open the toolbar. + // e: + // The click event. + // tags: + // private + if(e){ dojo.stopEvent(e); } + var size = dojo.marginBox(this.editor.domNode); + dojo.style(this.closeTd, "display", "none"); + dojo.style(this.openTd, "display", ""); + dojo.style(this.menu, "display", ""); + this.editor.resize({h: size.h}); + // work around IE rendering glitch in a11y mode. + if(dojo.isIE){ + this.editor.header.className = this.editor.header.className; + this.editor.footer.className = this.editor.footer.className; + } + dijit.focus(this.openTd.firstChild); + }, + + destroy: function(){ + // summary: + // Over-ride of destroy method for cleanup. + this.inherited(arguments); + if(this._myWidgets){ + while(this._myWidgets.length){ + this._myWidgets.pop().destroy(); + } + delete this._myWidgets; + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "collapsibletoolbar"){ + o.plugin = new dojox.editor.plugins.CollapsibleToolbar({}); + } +}); + +return dojox.editor.plugins.CollapsibleToolbar; + +}); |
