summaryrefslogtreecommitdiff
path: root/lib/dijit/_editor/plugins/ToggleDir.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dijit/_editor/plugins/ToggleDir.js')
-rw-r--r--lib/dijit/_editor/plugins/ToggleDir.js98
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});
+ }
});
+
}