123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /*
- Copyright (c) 2004-2012, 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["dojox.collections.ArrayList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.collections.ArrayList"] = true;
- dojo.provide("dojox.collections.ArrayList");
- dojo.require("dojox.collections._base");
- dojox.collections.ArrayList=function(/* array? */arr){
- // summary
- // Returns a new object of type dojox.collections.ArrayList
- var items=[];
- if(arr) items=items.concat(arr);
- this.count=items.length;
- this.add=function(/* object */obj){
- // summary
- // Add an element to the collection.
- items.push(obj);
- this.count=items.length;
- };
- this.addRange=function(/* array */a){
- // summary
- // Add a range of objects to the ArrayList
- if(a.getIterator){
- var e=a.getIterator();
- while(!e.atEnd()){
- this.add(e.get());
- }
- this.count=items.length;
- }else{
- for(var i=0; i<a.length; i++){
- items.push(a[i]);
- }
- this.count=items.length;
- }
- };
- this.clear=function(){
- // summary
- // Clear all elements out of the collection, and reset the count.
- items.splice(0, items.length);
- this.count=0;
- };
- this.clone=function(){
- // summary
- // Clone the array list
- return new dojox.collections.ArrayList(items); // dojox.collections.ArrayList
- };
- this.contains=function(/* object */obj){
- // summary
- // Check to see if the passed object is a member in the ArrayList
- for(var i=0; i < items.length; i++){
- if(items[i] == obj) {
- return true; // bool
- }
- }
- return false; // bool
- };
- this.forEach=function(/* function */ fn, /* object? */ scope){
- // summary
- // functional iterator, following the mozilla spec.
- dojo.forEach(items, fn, scope);
- };
- this.getIterator=function(){
- // summary
- // Get an Iterator for this object
- return new dojox.collections.Iterator(items); // dojox.collections.Iterator
- };
- this.indexOf=function(/* object */obj){
- // summary
- // Return the numeric index of the passed object; will return -1 if not found.
- for(var i=0; i < items.length; i++){
- if(items[i] == obj) {
- return i; // int
- }
- }
- return -1; // int
- };
- this.insert=function(/* int */ i, /* object */ obj){
- // summary
- // Insert the passed object at index i
- items.splice(i,0,obj);
- this.count=items.length;
- };
- this.item=function(/* int */ i){
- // summary
- // return the element at index i
- return items[i]; // object
- };
- this.remove=function(/* object */obj){
- // summary
- // Look for the passed object, and if found, remove it from the internal array.
- var i=this.indexOf(obj);
- if(i >=0) {
- items.splice(i,1);
- }
- this.count=items.length;
- };
- this.removeAt=function(/* int */ i){
- // summary
- // return an array with function applied to all elements
- items.splice(i,1);
- this.count=items.length;
- };
- this.reverse=function(){
- // summary
- // Reverse the internal array
- items.reverse();
- };
- this.sort=function(/* function? */ fn){
- // summary
- // sort the internal array
- if(fn){
- items.sort(fn);
- }else{
- items.sort();
- }
- };
- this.setByIndex=function(/* int */ i, /* object */ obj){
- // summary
- // Set an element in the array by the passed index.
- items[i]=obj;
- this.count=items.length;
- };
- this.toArray=function(){
- // summary
- // Return a new array with all of the items of the internal array concatenated.
- return [].concat(items);
- }
- this.toString=function(/* string */ delim){
- // summary
- // implementation of toString, follows [].toString();
- return items.join((delim||","));
- };
- };
- }
|