Version 3.18.1
Show:

File: editor/js/editor-tab.js

            
                /**
                 * Handles tab and shift-tab indent/outdent support.
                 * @class Plugin.EditorTab
                 * @constructor
                 * @extends Base
                 * @module editor
                 * @submodule editor-tab
                 */
            
                var EditorTab = function() {
                    EditorTab.superclass.constructor.apply(this, arguments);
                }, HOST = 'host';
            
                Y.extend(EditorTab, Y.Base, {
                    /**
                    * Listener for host's nodeChange event and captures the tabkey interaction.
                    * @private
                    * @method _onNodeChange
                    * @param {Event} e The Event facade passed from the host.
                    */
                    _onNodeChange: function(e) {
                        var action = 'indent';
            
                        if (e.changedType === 'tab') {
                            if (!e.changedNode.test('li, li *')) {
                                e.changedEvent.halt();
                                e.preventDefault();
                                if (e.changedEvent.shiftKey) {
                                    action = 'outdent';
                                }
            
                                Y.log('Overriding TAB to ' + action, 'info', 'editorTab');
                                this.get(HOST).execCommand(action, '');
                            }
                        }
                    },
                    initializer: function() {
                        this.get(HOST).on('nodeChange', Y.bind(this._onNodeChange, this));
                    }
                }, {
                    /**
                    * editorTab
                    * @property NAME
                    * @static
                    */
                    NAME: 'editorTab',
                    /**
                    * tab
                    * @property NS
                    * @static
                    */
                    NS: 'tab',
                    ATTRS: {
                        host: {
                            value: false
                        }
                    }
                });
            
            
                Y.namespace('Plugin');
            
                Y.Plugin.EditorTab = EditorTab;