| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-AbstractManager'>/**</span> * Base Manager class */Ext.define('Ext.AbstractManager', {    /* Begin Definitions */    requires: ['Ext.util.HashMap'],    /* End Definitions */    typeName: 'type',    constructor: function(config) {        Ext.apply(this, config || {});<span id='Ext-AbstractManager-property-all'>        /**</span>         * @property {Ext.util.HashMap} all         * Contains all of the items currently managed         */        this.all = new Ext.util.HashMap();        this.types = {};    },<span id='Ext-AbstractManager-method-get'>    /**</span>     * Returns an item by id.     * For additional details see {@link Ext.util.HashMap#get}.     * @param {String} id The id of the item     * @return {Object} The item, undefined if not found.     */    get : function(id) {        return this.all.get(id);    },<span id='Ext-AbstractManager-method-register'>    /**</span>     * Registers an item to be managed     * @param {Object} item The item to register     */    register: function(item) {        //<debug>        var all = this.all,            key = all.getKey(item);                    if (all.containsKey(key)) {            Ext.Error.raise('Registering duplicate id "' + key + '" with this manager');        }        //</debug>        this.all.add(item);    },<span id='Ext-AbstractManager-method-unregister'>    /**</span>     * Unregisters an item by removing it from this manager     * @param {Object} item The item to unregister     */    unregister: function(item) {        this.all.remove(item);    },<span id='Ext-AbstractManager-method-registerType'>    /**</span>     * Registers a new item constructor, keyed by a type key.     * @param {String} type The mnemonic string by which the class may be looked up.     * @param {Function} cls The new instance class.     */    registerType : function(type, cls) {        this.types[type] = cls;        cls[this.typeName] = type;    },<span id='Ext-AbstractManager-method-isRegistered'>    /**</span>     * Checks if an item type is registered.     * @param {String} type The mnemonic string by which the class may be looked up     * @return {Boolean} Whether the type is registered.     */    isRegistered : function(type){        return this.types[type] !== undefined;    },<span id='Ext-AbstractManager-method-create'>    /**</span>     * Creates and returns an instance of whatever this manager manages, based on the supplied type and     * config object.     * @param {Object} config The config object     * @param {String} defaultType If no type is discovered in the config object, we fall back to this type     * @return {Object} The instance of whatever this manager is managing     */    create: function(config, defaultType) {        var type        = config[this.typeName] || config.type || defaultType,            Constructor = this.types[type];        //<debug>        if (Constructor === undefined) {            Ext.Error.raise("The '" + type + "' type has not been registered with this manager");        }        //</debug>        return new Constructor(config);    },<span id='Ext-AbstractManager-method-onAvailable'>    /**</span>     * Registers a function that will be called when an item with the specified id is added to the manager.     * This will happen on instantiation.     * @param {String} id The item id     * @param {Function} fn The callback function. Called with a single parameter, the item.     * @param {Object} scope The scope (this reference) in which the callback is executed.     * Defaults to the item.     */    onAvailable : function(id, fn, scope){        var all = this.all,            item,            callback;                if (all.containsKey(id)) {            item = all.get(id);            fn.call(scope || item, item);        } else {            callback = function(map, key, item){                if (key == id) {                    fn.call(scope || item, item);                    all.un('add', callback);                }            };             all.on('add', callback);        }    },    <span id='Ext-AbstractManager-method-each'>    /**</span>     * Executes the specified function once for each item in the collection.     * @param {Function} fn The function to execute.     * @param {String} fn.key The key of the item     * @param {Number} fn.value The value of the item     * @param {Number} fn.length The total number of items in the collection     * @param {Boolean} fn.return False to cease iteration.     * @param {Object} scope The scope to execute in. Defaults to `this`.     */    each: function(fn, scope){        this.all.each(fn, scope || this);        },    <span id='Ext-AbstractManager-method-getCount'>    /**</span>     * Gets the number of items in the collection.     * @return {Number} The number of items in the collection.     */    getCount: function(){        return this.all.getCount();    }});</pre></body></html>
 |