diff options
Diffstat (limited to 'lib/dijit/_editor/plugins/TabIndent.js')
-rw-r--r-- | lib/dijit/_editor/plugins/TabIndent.js | 80 |
1 files changed, 58 insertions, 22 deletions
diff --git a/lib/dijit/_editor/plugins/TabIndent.js b/lib/dijit/_editor/plugins/TabIndent.js index 74cda400f..eb27f69dd 100644 --- a/lib/dijit/_editor/plugins/TabIndent.js +++ b/lib/dijit/_editor/plugins/TabIndent.js @@ -1,33 +1,69 @@ /* - 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.TabIndent"]){ -dojo._hasResource["dijit._editor.plugins.TabIndent"]=true; +if(!dojo._hasResource["dijit._editor.plugins.TabIndent"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dijit._editor.plugins.TabIndent"] = true; dojo.provide("dijit._editor.plugins.TabIndent"); -dojo.experimental("dijit._editor.plugins.TabIndent"); dojo.require("dijit._editor._Plugin"); dojo.require("dijit.form.ToggleButton"); -dojo.declare("dijit._editor.plugins.TabIndent",dijit._editor._Plugin,{useDefaultCommand:false,buttonClass:dijit.form.ToggleButton,command:"tabIndent",_initButton:function(){ -this.inherited(arguments); -var e=this.editor; -this.connect(this.button,"onChange",function(_1){ -e.set("isTabIndent",_1); -}); -this.updateState(); -},updateState:function(){ -this.button.set("checked",this.editor.isTabIndent,false); -}}); -dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){ -if(o.plugin){ -return; -} -switch(o.args.name){ -case "tabIndent": -o.plugin=new dijit._editor.plugins.TabIndent({command:o.args.name}); -} + + +dojo.experimental("dijit._editor.plugins.TabIndent"); + + +dojo.declare("dijit._editor.plugins.TabIndent", + dijit._editor._Plugin, + { + // summary: + // This plugin is used to allow the use of the tab and shift-tab keys + // to indent/outdent list items. This overrides the default behavior + // of moving focus from/to the toolbar + + // Override _Plugin.useDefaultCommand... processing is handled by this plugin, not by dijit.Editor. + useDefaultCommand: false, + + // Override _Plugin.buttonClass to use a ToggleButton for this plugin rather than a vanilla Button + buttonClass: dijit.form.ToggleButton, + + command: "tabIndent", + + _initButton: function(){ + // Override _Plugin._initButton() to setup listener on button click + this.inherited(arguments); + + var e = this.editor; + this.connect(this.button, "onChange", function(val){ + e.set("isTabIndent", val); + }); + + // Set initial checked state of button based on Editor.isTabIndent + this.updateState(); + }, + + updateState: function(){ + // Overrides _Plugin.updateState(). + // Ctrl-m in the editor will switch tabIndent mode on/off, so we need to react to that. + var disabled = this.get("disabled"); + this.button.set("disabled", disabled); + if(disabled){ + return; + } + this.button.set('checked', this.editor.isTabIndent, false); + } + } +); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + switch(o.args.name){ + case "tabIndent": + o.plugin = new dijit._editor.plugins.TabIndent({command: o.args.name}); + } }); + } |