/*
|
This file is part of Ext JS 4.2
|
|
Copyright (c) 2011-2013 Sencha Inc
|
|
Contact: http://www.sencha.com/contact
|
|
GNU General Public License Usage
|
This file may be used under the terms of the GNU General Public License version 3.0 as
|
published by the Free Software Foundation and appearing in the file LICENSE included in the
|
packaging of this file.
|
|
Please review the following information to ensure the GNU General Public License version 3.0
|
requirements will be met: http://www.gnu.org/copyleft/gpl.html.
|
|
If you are unsure which license is appropriate for your use, please contact the sales department
|
at http://www.sencha.com/contact.
|
|
Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314)
|
*/
|
/**
|
* An internal Queue class.
|
* @private
|
*/
|
Ext.define('Ext.util.Queue', {
|
|
constructor: function() {
|
this.clear();
|
},
|
|
add : function(obj) {
|
var me = this,
|
key = me.getKey(obj);
|
|
if (!me.map[key]) {
|
++me.length;
|
me.items.push(obj);
|
me.map[key] = obj;
|
}
|
|
return obj;
|
},
|
|
/**
|
* Removes all items from the collection.
|
*/
|
clear : function(){
|
var me = this,
|
items = me.items;
|
|
me.items = [];
|
me.map = {};
|
me.length = 0;
|
|
return items;
|
},
|
|
contains: function (obj) {
|
var key = this.getKey(obj);
|
|
return this.map.hasOwnProperty(key);
|
},
|
|
/**
|
* Returns the number of items in the collection.
|
* @return {Number} the number of items in the collection.
|
*/
|
getCount : function(){
|
return this.length;
|
},
|
|
getKey : function(obj){
|
return obj.id;
|
},
|
|
/**
|
* Remove an item from the collection.
|
* @param {Object} obj The item to remove.
|
* @return {Object} The item removed or false if no item was removed.
|
*/
|
remove : function(obj){
|
var me = this,
|
key = me.getKey(obj),
|
items = me.items,
|
index;
|
|
if (me.map[key]) {
|
index = Ext.Array.indexOf(items, obj);
|
Ext.Array.erase(items, index, 1);
|
delete me.map[key];
|
--me.length;
|
}
|
|
return obj;
|
}
|
});
|