diff options
Diffstat (limited to 'lib/dijit/_editor/plugins/ToggleDir.js')
-rw-r--r-- | lib/dijit/_editor/plugins/ToggleDir.js | 98 |
1 files changed, 68 insertions, 30 deletions
diff --git a/lib/dijit/_editor/plugins/ToggleDir.js b/lib/dijit/_editor/plugins/ToggleDir.js index f5ecb7909..92e3d91c8 100644 --- a/lib/dijit/_editor/plugins/ToggleDir.js +++ b/lib/dijit/_editor/plugins/ToggleDir.js @@ -1,42 +1,80 @@ /* - Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ -if(!dojo._hasResource["dijit._editor.plugins.ToggleDir"]){ -dojo._hasResource["dijit._editor.plugins.ToggleDir"]=true; +if(!dojo._hasResource["dijit._editor.plugins.ToggleDir"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dijit._editor.plugins.ToggleDir"] = true; dojo.provide("dijit._editor.plugins.ToggleDir"); +dojo.require("dijit._editor._Plugin"); +dojo.require("dijit.form.ToggleButton"); + + dojo.experimental("dijit._editor.plugins.ToggleDir"); + dojo.require("dijit._editor._Plugin"); dojo.require("dijit.form.ToggleButton"); -dojo.declare("dijit._editor.plugins.ToggleDir",dijit._editor._Plugin,{useDefaultCommand:false,command:"toggleDir",buttonClass:dijit.form.ToggleButton,_initButton:function(){ -this.inherited(arguments); -this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){ -var _1=this.editor.editorObject.contentWindow.document.documentElement; -_1=_1.getElementsByTagName("body")[0]; -var _2=dojo.getComputedStyle(_1).direction=="ltr"; -this.button.set("checked",!_2); -this.connect(this.button,"onChange","_setRtl"); -})); -},updateState:function(){ -},_setRtl:function(_3){ -var _4="ltr"; -if(_3){ -_4="rtl"; -} -var _5=this.editor.editorObject.contentWindow.document.documentElement; -_5=_5.getElementsByTagName("body")[0]; -_5.dir=_4; -}}); -dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){ -if(o.plugin){ -return; -} -switch(o.args.name){ -case "toggleDir": -o.plugin=new dijit._editor.plugins.ToggleDir({command:o.args.name}); -} + +dojo.declare("dijit._editor.plugins.ToggleDir", + dijit._editor._Plugin, + { + // summary: + // This plugin is used to toggle direction of the edited document, + // independent of what direction the whole page is. + + // Override _Plugin.useDefaultCommand: processing is done in this plugin + // rather than by sending commands to the Editor + useDefaultCommand: false, + + command: "toggleDir", + + // Override _Plugin.buttonClass to use a ToggleButton for this plugin rather than a vanilla Button + buttonClass: dijit.form.ToggleButton, + + _initButton: function(){ + // Override _Plugin._initButton() to setup handler for button click events. + this.inherited(arguments); + this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + var editDoc = this.editor.editorObject.contentWindow.document.documentElement; + //IE direction has to toggle on the body, not document itself. + //If you toggle just the document, things get very strange in the + //view. But, the nice thing is this works for all supported browsers. + editDoc = editDoc.getElementsByTagName("body")[0]; + var isLtr = dojo.getComputedStyle(editDoc).direction == "ltr"; + this.button.set("checked", !isLtr); + this.connect(this.button, "onChange", "_setRtl"); + })); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + _setRtl: function(rtl){ + // summary: + // Handler for button click events, to switch the text direction of the editor + var dir = "ltr"; + if(rtl){ + dir = "rtl"; + } + var editDoc = this.editor.editorObject.contentWindow.document.documentElement; + editDoc = editDoc.getElementsByTagName("body")[0]; + editDoc.dir/*html node*/ = dir; + } + } +); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + switch(o.args.name){ + case "toggleDir": + o.plugin = new dijit._editor.plugins.ToggleDir({command: o.args.name}); + } }); + } |