/***************************************************************************** * * File: TabIndexManager.as * Description: This class is a manager for tab indexing and enabling * Author: Chris * Date: 01/07/08 * Revision history: 1.0.001 - 01/07/08 Initial version (CJones) * ******************************************************************************/ class TabIndexManager { //!Static vars private static var _instance:TabIndexManager; //!Private vars private var _tabArr:Array; /*!**************************************************************************** * * \fn: TabIndexManager * \brief: constructor for TabIndexManager class. * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ private function TabIndexManager() { _tabArr = new Array(); } /*!**************************************************************************** * * \fn: get Instance * \brief: Returns an instance of the class. This is necessary because it is a singleton. * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public static function get Instance():TabIndexManager { if(undefined == _instance) { _instance = new TabIndexManager; } return _instance; } /*!**************************************************************************** * * \fn: registerItem * \brief: Registers an item with the manager and applies its tab index. * \param: _item - the item to be registered * \param: _indexNum:Number - optional parameter to specify which tab index the item should take * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function registerItem(_item, _indexNum):Void { if(undefined == _indexNum) { _tabArr.push(_item); _tabArr[_tabArr.length - 1].tabEnabled = true; _tabArr[_tabArr.length - 1].tabIndex = _tabArr.length; } else { if((undefined != _tabArr[_indexNum - 1] || null != _tabArr[_indexNum - 1]) && _tabArr.length > 0) { for (var i:Number = _tabArr.length; i >= _tabArr.length; i--) { _tabArr[i] = _tabArr[i-1]; _tabArr[i-1] = undefined; _tabArr[i].tabEnabled = true _tabArr[i].tabIndex = i; } } _tabArr[_indexNum - 1] = _item; _tabArr[_indexNum - 1].tabEnabled = true _tabArr[_indexNum - 1].tabIndex = _indexNum; } } /*!**************************************************************************** * * \fn: set dataProvider * \brief: Registers an array of items with the manager and applies its tab index. * \param: _data:Array - the array of items item to be registered * \author: Chris Jones * \date: 01/24/08 * \version: 1.0 - initial version * ******************************************************************************/ public function set dataProvider(_data:Array) { clearTabIndexes(); for(var i:Number = 0; i < _data.length; i++) { registerItem(_data[i]); } } /*!**************************************************************************** * * \fn: get dataProvider * \brief: Returns the data provider * \author: Chris Jones * \date: 01/24/08 * \version: 1.0 - initial version * ******************************************************************************/ public function get dataProvider():Array { return _tabArr; } /*!**************************************************************************** * * \fn: removeItem * \brief: Removes an item from _tabArr * \param: _item - the item to be removed * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function removeItem(_item):Void { var tempArr:Array = new Array(); for (var i:Number = 0; i < _tabArr.length; i++ ) { if (_item != _tabArr[i]) { tempArr.push(_tabArr[i]); } else { _tabArr[i].tabIndex = -1; _tabArr[i].tabEnabled = false; } } _tabArr = new Array(); _tabArr = tempArr; } /*!**************************************************************************** * * \fn: clearTabIndexes * \brief: Clears everything out * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function clearTabIndexes():Void { for(var i:Number = 0; i < _tabArr.length; i++) { _tabArr[i].tabIndex = -1; } _tabArr = new Array(); } /*!**************************************************************************** * * \fn: tabEnableAll * \brief: Applies tabEnabled to everything * \param: _enabled:Boolean - true is enabled and false is disabled * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function tabEnableAll(_enabled:Boolean):Void { for(var i:Number = 0; i < _tabArr.length; i++) { _tabArr[i].tabEnabled = _enabled; } } /*!**************************************************************************** * * \fn: tabEnableInstance * \brief: Applies tabEnabled to a specified instance * \param: _item - the item to apply the tabEnabled property to * \param: _enabled:Boolean - true is enabled and false is disabled * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function tabEnableInstance(_item, _enabled:Boolean):Void { for(var i:Number = 0; i < _tabArr.length; i++) { if(_item == _tabArr[i]) { _tabArr[i].tabEnabled = _enabled; break; } } } /*!**************************************************************************** * * \fn: tabEnableRange * \brief: Applies tabEnabled to a range of values in _tabArr * \param: _startNum:Number - the number to start on * \param: _endNum:Number - the number to end on * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function tabEnableRange(_startNum:Number, _endNum:Number, _enabled:Boolean):Void { for(var i:Number = _startNum; i <= _endNum; i++) { _tabArr[i].tabEnabled = _enabled; } } /*!**************************************************************************** * * \fn: getTabsEnabled * \brief: Returns an array of the items that have tabEnabled set to true * \returns: An array of items with tabEnabled set to true * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getTabsEnabled():Array { var tempArr:Array = new Array(); for (var i:Number = 0; i < _tabArr.length; i++) { if (true == _tabArr[i].tabEnabled) { tempArr.push(_tabArr[i]); } } return tempArr; } /*!**************************************************************************** * * \fn: getTabsDisabled * \brief: Returns an array of the items that have tabEnabled set to false * \returns: Array - An array of items with tabEnabled set to false * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getTabsDisabled():Array { var tempArr:Array = new Array(); for (var i:Number = 0; i < _tabArr.length; i++) { if (false == _tabArr[i].tabEnabled) { tempArr.push(_tabArr[i]); } } return tempArr; } /*!**************************************************************************** * * \fn: getTabEnabledInstance * \brief: Returns the tabEnabled property for a specified instance * \param: _item - the item to return tabEnabled from * \returns: Boolean - the tabEnabled property for the specified instance * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getTabEnabledInstance(_item):Boolean { for (var i:Number = 0; i < _tabArr.length; i++ ) { if (_item == _tabArr[i]) { return _tabArr[i].tabEnabled; break; } } } /*!**************************************************************************** * * \fn: enableAll * \brief: Applies enabled to everything * \param: _enabled:Boolean - true is enabled and false is disabled * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function enableAll(_enabled:Boolean):Void { for(var i:Number = 0; i < _tabArr.length; i++) { _tabArr[i].enabled = _enabled; } } /*!**************************************************************************** * * \fn: enableInstance * \brief: Applies enabled to a specified instance * \param: _item - the item to apply the enabled property to * \param: _enabled:Boolean - true is enabled and false is disabled * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function enableInstance(_item, _enabled:Boolean):Void { for(var i:Number = 0; i < _tabArr.length; i++) { if(_tabArr[i] == _item) { _tabArr[i].enabled = _enabled; break; } } } /*!**************************************************************************** * * \fn: enableRange * \brief: Applies enabled to a range of values in _tabArr * \param: _startNum:Number - the number to start on * \param: _endNum:Number - the number to end on * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function enableRange(_startNum:Number, _endNum:Number, _enabled:Boolean):Void { for(var i:Number = _startNum; i <= _endNum; i++) { _tabArr[i].enabled = _enabled; } } /*!**************************************************************************** * * \fn: getEnabled * \brief: Returns an array of the items that have enabled set to true * \returns: An array of items with enabled set to true * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getEnabled():Array { var tempArr:Array = new Array(); for (var i:Number = 0; i < _tabArr.length; i++) { if (true == _tabArr[i].enabled) { tempArr.push(_tabArr[i]); } } return tempArr; } /*!**************************************************************************** * * \fn: getDisabled * \brief: Returns an array of the items that have enabled set to false * \returns: Array - An array of items with enabled set to false * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getDisabled():Array { var tempArr:Array = new Array(); for (var i:Number = 0; i < _tabArr.length; i++) { if (false == _tabArr[i].enabled) { tempArr.push(_tabArr[i]); } } return tempArr; } /*!**************************************************************************** * * \fn: getEnabledInstance * \brief: Returns the enabled property for a specified instance * \param: _item - the item to return enabled from * \returns: Boolean - the enabled property for the specified instance * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getEnabledInstance(_item):Boolean { for (var i:Number = 0; i < _tabArr.length; i++ ) { if (_item == _tabArr[i]) { return _tabArr[i].enabled; break; } } } /*!**************************************************************************** * * \fn: get registeredItems * \brief: Returns the entire _tabArr * \returns: Array - _tabArr * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function get registeredItems():Array { return _tabArr; } /*!**************************************************************************** * * \fn: get getRegisteredItemsRange * \brief: Returns the and array of register item in a specified rance * \param: _startNum:Number - the number to start at * \param: _endNum:Number - the number to end at * \returns: Array - and array of registered items on a specified range * \author: Chris Jones * \date: 01/07/08 * \version: 1.0 - initial version * ******************************************************************************/ public function getRegisteredItemsRange(_startNum:Number, _endNum:Number):Array { var tempArr:Array = new Array(); for (var i:Number = _startNum; i <= _endNum; i++) { tempArr.push(_tabArr[i]); } return tempArr; } }