Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 2149 → Rev 2150

/trunk/api/js/dojo1.0/dojox/collections/README
New file
0,0 → 1,39
-------------------------------------------------------------------------------
DojoX Collections
-------------------------------------------------------------------------------
Version 0.9
Release date: 05/27/2007
-------------------------------------------------------------------------------
Project state: stable
-------------------------------------------------------------------------------
Project authors
Tom Trenka (ttrenka@gmail.com)
-------------------------------------------------------------------------------
Project description
 
DojoX Collections is the port of the original Dojo 0.4.x collection classes.
It is intended for use by people who are looking for a little bit more
functionality out of common collections, like ArrayLists or Dictionaries.
 
Included are the Iterator and DictionaryIterator classes, both of which can
operate on standard arrays and objects (respectively).
-------------------------------------------------------------------------------
Dependencies:
 
DojoX Collections has no dependencies, outside of Dojo Core.
-------------------------------------------------------------------------------
Documentation
 
See the API documentation for Dojo (http://dojotoolkit.org/api).
-------------------------------------------------------------------------------
Installation instructions
 
Grab the following from the Dojo SVN Repository:
http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/collections.js
http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/collections/*
 
Install into the following directory structure:
/dojox/collections/
 
...which should be at the same level as your Dojo checkout.
-------------------------------------------------------------------------------
/trunk/api/js/dojo1.0/dojox/collections/BinaryTree.js
New file
0,0 → 1,211
if(!dojo._hasResource["dojox.collections.BinaryTree"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.BinaryTree"] = true;
dojo.provide("dojox.collections.BinaryTree");
dojo.require("dojox.collections._base");
 
dojox.collections.BinaryTree=function(data){
function node(data, rnode, lnode){
this.value=data||null;
this.right=rnode||null;
this.left=lnode||null;
this.clone=function(){
var c=new node();
if(this.value.value){
c.value=this.value.clone();
}else{
c.value=this.value;
}
if(this.left!=null){
c.left=this.left.clone();
}
if(this.right!=null){
c.right=this.right.clone();
}
return c;
}
this.compare=function(n){
if(this.value>n.value){ return 1; }
if(this.value<n.value){ return -1; }
return 0;
}
this.compareData=function(d){
if(this.value>d){ return 1; }
if(this.value<d){ return -1; }
return 0;
}
}
 
function inorderTraversalBuildup(current, a){
if(current){
inorderTraversalBuildup(current.left, a);
a.push(current.value);
inorderTraversalBuildup(current.right, a);
}
}
 
function preorderTraversal(current, sep){
var s="";
if (current){
s=current.value.toString() + sep;
s+=preorderTraversal(current.left, sep);
s+=preorderTraversal(current.right, sep);
}
return s;
}
function inorderTraversal(current, sep){
var s="";
if (current){
s=inorderTraversal(current.left, sep);
s+=current.value.toString() + sep;
s+=inorderTraversal(current.right, sep);
}
return s;
}
function postorderTraversal(current, sep){
var s="";
if (current){
s=postorderTraversal(current.left, sep);
s+=postorderTraversal(current.right, sep);
s+=current.value.toString() + sep;
}
return s;
}
function searchHelper(current, data){
if(!current){ return null; }
var i=current.compareData(data);
if(i==0){ return current; }
if(i>0){ return searchHelper(current.left, data); }
else{ return searchHelper(current.right, data); }
}
 
this.add=function(data){
var n=new node(data);
var i;
var current=root;
var parent=null;
while(current){
i=current.compare(n);
if(i==0){ return; }
parent=current;
if(i>0){ current=current.left; }
else{ current=current.right; }
}
this.count++;
if(!parent){
root=n;
}else{
i=parent.compare(n);
if(i>0){
parent.left=n;
}else{
parent.right=n;
}
}
};
this.clear=function(){
root=null;
this.count=0;
};
this.clone=function(){
var c=new dojox.collections.BinaryTree();
var itr=this.getIterator();
while(!itr.atEnd()){
c.add(itr.get());
}
return c;
};
this.contains=function(data){
return this.search(data) != null;
};
this.deleteData=function(data){
var current=root;
var parent=null;
var i=current.compareData(data);
while(i!=0&&current!=null){
if(i>0){
parent=current;
current=current.left;
}else if(i<0){
parent=current;
current=current.right;
}
i=current.compareData(data);
}
if(!current){ return; }
this.count--;
if(!current.right){
if(!parent){
root=current.left;
}else{
i=parent.compare(current);
if(i>0){ parent.left=current.left; }
else if(i<0){ parent.right=current.left; }
}
}
else if(!current.right.left){
if(!parent){
root=current.right;
}else{
i=parent.compare(current);
if(i>0){ parent.left=current.right; }
else if(i<0){ parent.right=current.right; }
}
}
else{
var leftmost=current.right.left;
var lmParent=current.right;
while(leftmost.left!=null){
lmParent=leftmost;
leftmost=leftmost.left;
}
lmParent.left=leftmost.right;
leftmost.left=current.left;
leftmost.right=current.right;
if(!parent){
root=leftmost;
}else{
i=parent.compare(current);
if(i>0){ parent.left=leftmost; }
else if(i<0){ parent.right=leftmost; }
}
}
};
this.getIterator=function(){
var a=[];
inorderTraversalBuildup(root, a);
return new dojox.collections.Iterator(a);
};
this.search=function(data){
return searchHelper(root, data);
};
this.toString=function(order, sep){
if(!order){ order=dojox.collections.BinaryTree.TraversalMethods.Inorder; }
if(!sep){ sep=","; }
var s="";
switch(order){
case dojox.collections.BinaryTree.TraversalMethods.Preorder:
s=preorderTraversal(root, sep);
break;
case dojox.collections.BinaryTree.TraversalMethods.Inorder:
s=inorderTraversal(root, sep);
break;
case dojox.collections.BinaryTree.TraversalMethods.Postorder:
s=postorderTraversal(root, sep);
break;
};
if(s.length==0){ return ""; }
else{ return s.substring(0, s.length - sep.length); }
};
 
this.count=0;
var root=this.root=null;
if(data){
this.add(data);
}
}
dojox.collections.BinaryTree.TraversalMethods={
Preorder: 1, Inorder: 2, Postorder: 3
};
 
}
/trunk/api/js/dojo1.0/dojox/collections/Queue.js
New file
0,0 → 1,74
if(!dojo._hasResource["dojox.collections.Queue"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.Queue"] = true;
dojo.provide("dojox.collections.Queue");
dojo.require("dojox.collections._base");
 
dojox.collections.Queue=function(/* array? */arr){
// summary
// return an object of type dojox.collections.Queue
var q=[];
if (arr){
q=q.concat(arr);
}
this.count=q.length;
this.clear=function(){
// summary
// clears the internal collection
q=[];
this.count=q.length;
};
this.clone=function(){
// summary
// creates a new Queue based on this one
return new dojox.collections.Queue(q); // dojox.collections.Queue
};
this.contains=function(/* object */ o){
// summary
// Check to see if the passed object is an element in this queue
for(var i=0; i<q.length; i++){
if (q[i]==o){
return true; // bool
}
}
return false; // bool
};
this.copyTo=function(/* array */ arr, /* int */ i){
// summary
// Copy the contents of this queue into the passed array at index i.
arr.splice(i,0,q);
};
this.dequeue=function(){
// summary
// shift the first element off the queue and return it
var r=q.shift();
this.count=q.length;
return r; // object
};
this.enqueue=function(/* object */ o){
// summary
// put the passed object at the end of the queue
this.count=q.push(o);
};
this.forEach=function(/* function */ fn, /* object? */ scope){
// summary
// functional iterator, following the mozilla spec.
dojo.forEach(q, fn, scope);
};
this.getIterator=function(){
// summary
// get an Iterator based on this queue.
return new dojox.collections.Iterator(q); // dojox.collections.Iterator
};
this.peek=function(){
// summary
// get the next element in the queue without altering the queue.
return q[0];
};
this.toArray=function(){
// summary
// return an array based on the internal array of the queue.
return [].concat(q);
};
};
 
}
/trunk/api/js/dojo1.0/dojox/collections/Dictionary.js
New file
0,0 → 1,116
if(!dojo._hasResource["dojox.collections.Dictionary"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.Dictionary"] = true;
dojo.provide("dojox.collections.Dictionary");
dojo.require("dojox.collections._base");
 
dojox.collections.Dictionary=function(/* dojox.collections.Dictionary? */dictionary){
// summary
// Returns an object of type dojox.collections.Dictionary
var items={};
this.count=0;
 
// comparator for property addition and access.
var testObject={};
 
this.add=function(/* string */k, /* object */v){
// summary
// Add a new item to the Dictionary.
var b=(k in items);
items[k]=new dojox.collections.DictionaryEntry(k,v);
if(!b){
this.count++;
}
};
this.clear=function(){
// summary
// Clears the internal dictionary.
items={};
this.count=0;
};
this.clone=function(){
// summary
// Returns a new instance of dojox.collections.Dictionary; note the the dictionary is a clone but items might not be.
return new dojox.collections.Dictionary(this); // dojox.collections.Dictionary
};
this.contains=this.containsKey=function(/* string */k){
// summary
// Check to see if the dictionary has an entry at key "k".
if(testObject[k]){
return false; // bool
}
return (items[k]!=null); // bool
};
this.containsValue=function(/* object */v){
// summary
// Check to see if the dictionary has an entry with value "v".
var e=this.getIterator();
while(e.get()){
if(e.element.value==v){
return true; // bool
}
}
return false; // bool
};
this.entry=function(/* string */k){
// summary
// Accessor method; similar to dojox.collections.Dictionary.item but returns the actual Entry object.
return items[k]; // dojox.collections.DictionaryEntry
};
this.forEach=function(/* function */ fn, /* object? */ scope){
// summary
// functional iterator, following the mozilla spec.
var a=[]; // Create an indexing array
for(var p in items) {
if(!testObject[p]){
a.push(items[p]); // fill it up
}
}
dojo.forEach(a, fn, scope);
};
this.getKeyList=function(){
// summary
// Returns an array of the keys in the dictionary.
return (this.getIterator()).map(function(entry){
return entry.key;
}); // array
};
this.getValueList=function(){
// summary
// Returns an array of the values in the dictionary.
return (this.getIterator()).map(function(entry){
return entry.value;
}); // array
};
this.item=function(/* string */k){
// summary
// Accessor method.
if(k in items){
return items[k].valueOf(); // object
}
return undefined; // object
};
this.getIterator=function(){
// summary
// Gets a dojox.collections.DictionaryIterator for iteration purposes.
return new dojox.collections.DictionaryIterator(items); // dojox.collections.DictionaryIterator
};
this.remove=function(/* string */k){
// summary
// Removes the item at k from the internal collection.
if(k in items && !testObject[k]){
delete items[k];
this.count--;
return true; // bool
}
return false; // bool
};
 
if (dictionary){
var e=dictionary.getIterator();
while(e.get()) {
this.add(e.element.key, e.element.value);
}
}
};
 
}
/trunk/api/js/dojo1.0/dojox/collections/Stack.js
New file
0,0 → 1,72
if(!dojo._hasResource["dojox.collections.Stack"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.Stack"] = true;
dojo.provide("dojox.collections.Stack");
dojo.require("dojox.collections._base");
 
dojox.collections.Stack=function(/* array? */arr){
// summary
// returns an object of type dojox.collections.Stack
var q=[];
if (arr) q=q.concat(arr);
this.count=q.length;
this.clear=function(){
// summary
// Clear the internal array and reset the count
q=[];
this.count=q.length;
};
this.clone=function(){
// summary
// Create and return a clone of this Stack
return new dojox.collections.Stack(q);
};
this.contains=function(/* object */o){
// summary
// check to see if the stack contains object o
for (var i=0; i<q.length; i++){
if (q[i] == o){
return true; // bool
}
}
return false; // bool
};
this.copyTo=function(/* array */ arr, /* int */ i){
// summary
// copy the stack into array arr at index i
arr.splice(i,0,q);
};
this.forEach=function(/* function */ fn, /* object? */ scope){
// summary
// functional iterator, following the mozilla spec.
dojo.forEach(q, fn, scope);
};
this.getIterator=function(){
// summary
// get an iterator for this collection
return new dojox.collections.Iterator(q); // dojox.collections.Iterator
};
this.peek=function(){
// summary
// Return the next item without altering the stack itself.
return q[(q.length-1)]; // object
};
this.pop=function(){
// summary
// pop and return the next item on the stack
var r=q.pop();
this.count=q.length;
return r; // object
};
this.push=function(/* object */ o){
// summary
// Push object o onto the stack
this.count=q.push(o);
};
this.toArray=function(){
// summary
// create and return an array based on the internal collection
return [].concat(q); // array
};
}
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/BinaryTree.js
New file
0,0 → 1,83
if(!dojo._hasResource["dojox.collections.tests.BinaryTree"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.BinaryTree"] = true;
dojo.provide("dojox.collections.tests.BinaryTree");
dojo.require("dojox.collections.BinaryTree");
 
tests.register("dojox.collections.tests.BinaryTree", [
function testCtor(t){
var bt=new dojox.collections.BinaryTree("foo");
t.assertTrue(bt instanceof dojox.collections.BinaryTree);
},
function testAdd(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
t.assertEqual("apple,bar,baz,buck,foo,shot",bt.toString());
},
function testClear(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
bt.clear();
t.assertEqual(bt.count, 0);
},
function testClone(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
var bt2=bt.clone();
t.assertEqual(bt2.count, 6);
t.assertEqual(bt.toString(), bt2.toString());
},
function testContains(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
t.assertTrue(bt.contains("buck"));
t.assertFalse(bt.contains("duck"));
},
function testDeleteData(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
bt.deleteData("buck");
t.assertEqual("apple,bar,baz,foo,shot",bt.toString());
},
function testGetIterator(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
var itr=bt.getIterator();
while(!itr.atEnd()){ itr.get(); }
t.assertEqual("shot", itr.element);
},
function testSearch(t){
var bt=new dojox.collections.BinaryTree("foo");
bt.add("bar");
bt.add("baz");
bt.add("buck");
bt.add("shot");
bt.add("apple");
t.assertEqual("buck", bt.search("buck").value);
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/Queue.js
New file
0,0 → 1,49
if(!dojo._hasResource["dojox.collections.tests.Queue"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.Queue"] = true;
dojo.provide("dojox.collections.tests.Queue");
dojo.require("dojox.collections.Queue");
 
tests.register("dojox.collections.tests.Queue", [
function testCtor(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
t.assertEqual(4, q.count);
},
function testClear(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
q.clear();
t.assertEqual(0, q.count);
},
function testClone(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
var cloned=q.clone();
t.assertEqual(q.count, cloned.count);
t.assertEqual(q.toArray().join(), cloned.toArray().join());
},
function testContains(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
t.assertTrue(q.contains("bar"));
t.assertFalse(q.contains("faz"));
},
function testGetIterator(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
var itr=q.getIterator();
while(!itr.atEnd()){ itr.get(); }
t.assertEqual("bull", itr.element);
},
function testPeek(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
t.assertEqual("foo", q.peek());
},
function testDequeue(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
t.assertEqual("foo", q.dequeue());
t.assertEqual("bar,test,bull", q.toArray().join(","));
},
function testEnqueue(t){
var q=new dojox.collections.Queue(["foo","bar","test","bull"]);
q.enqueue("bull");
t.assertEqual("bull", q.toArray().pop());
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/Dictionary.js
New file
0,0 → 1,82
if(!dojo._hasResource["dojox.collections.tests.Dictionary"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.Dictionary"] = true;
dojo.provide("dojox.collections.tests.Dictionary");
dojo.require("dojox.collections.Dictionary");
 
tests.register("dojox.collections.tests.Dictionary", [
function testCtor(t){
var d=new dojox.collections.Dictionary();
t.assertTrue(d instanceof dojox.collections.Dictionary);
},
function testAdd(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
t.assertEqual("bar", d.item("foo").valueOf());
},
function testClear(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.clear()
t.assertEqual(0, d.count);
},
function testClone(t){
var d=new dojox.collections.Dictionary();
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
var d2 = d.clone();
t.assertTrue(d2.contains("baz"));
},
function testContains(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
t.assertTrue(d.contains("baz"));
},
function testContainsKey(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
t.assertTrue(d.containsKey("buck"));
},
function testContainsValue(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
t.assertTrue(d.containsValue("shot"));
},
function testGetKeyList(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
t.assertEqual("foo,baz,buck,apple", d.getKeyList().join(","));
},
function testGetValueList(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
t.assertEqual("bar,fab,shot,orange", d.getValueList().join(","));
},
function testRemove(t){
var d=new dojox.collections.Dictionary();
d.add("foo","bar");
d.add("baz","fab");
d.add("buck","shot");
d.add("apple","orange");
d.remove("baz");
t.assertEqual(3, d.count);
t.assertEqual(undefined, d.item("baz"));
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/Stack.js
New file
0,0 → 1,49
if(!dojo._hasResource["dojox.collections.tests.Stack"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.Stack"] = true;
dojo.provide("dojox.collections.tests.Stack");
dojo.require("dojox.collections.Stack");
 
tests.register("dojox.collections.tests.Stack", [
function testCtor(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
t.assertEqual(4, s.count);
},
function testClear(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
s.clear();
t.assertEqual(0, s.count);
},
function testClone(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
var cloned=s.clone();
t.assertEqual(s.count, cloned.count);
t.assertEqual(s.toArray().join(), cloned.toArray().join());
},
function testContains(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
t.assertTrue(s.contains("bar"));
t.assertFalse(s.contains("faz"));
},
function testGetIterator(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
var itr=s.getIterator();
while(!itr.atEnd()){ itr.get(); }
t.assertEqual("bull", itr.element);
},
function testPeek(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
t.assertEqual("bull", s.peek());
},
function testPop(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
t.assertEqual("bull", s.pop());
t.assertEqual("test", s.pop());
},
function testPush(t){
var s=new dojox.collections.Stack(["foo","bar","test","bull"]);
s.push("bug");
t.assertEqual("bug", s.peek());
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/_base.js
New file
0,0 → 1,84
if(!dojo._hasResource["dojox.collections.tests._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests._base"] = true;
dojo.provide("dojox.collections.tests._base");
dojo.require("dojox.collections");
 
tests.register("dojox.collections.tests._base", [
function testDictionaryEntry(t){
var d=new dojox.collections.DictionaryEntry("foo","bar");
t.assertEqual("bar", d.valueOf());
t.assertEqual("bar", d.toString());
},
 
function testIterator(t){
var itr=new dojox.collections.Iterator(["foo","bar","baz","zoo"]);
t.assertEqual("foo", itr.element); // test initialization
t.assertTrue(!itr.atEnd());
t.assertEqual("foo", itr.get()); // make sure the first get doesn't advance.
t.assertEqual("bar", itr.get());
t.assertEqual("baz", itr.get());
t.assertEqual("zoo", itr.get());
t.assertTrue(itr.atEnd());
t.assertEqual(null, itr.get());
 
itr.reset();
t.assertTrue(!itr.atEnd());
t.assertEqual("foo", itr.element);
 
// test map
var a=itr.map(function(elm){
return elm+"-mapped";
});
itr=new dojox.collections.Iterator(a);
t.assertEqual("foo-mapped", itr.element); // test initialization
t.assertTrue(!itr.atEnd());
t.assertEqual("foo-mapped", itr.get()); // make sure the first get doesn't advance.
t.assertEqual("bar-mapped", itr.get());
t.assertEqual("baz-mapped", itr.get());
t.assertEqual("zoo-mapped", itr.get());
t.assertTrue(itr.atEnd());
t.assertEqual(null, itr.get());
},
 
function testDictionaryIterator(t){
/*
in the context of any of the Dictionary-based collections, the
element would normally return a DictionaryEntry. However, since
the DictionaryIterator is really an iterator of pure objects,
we will just test with an object here. This means all property
names are lost in the translation, but...that's why there's a
DictionaryEntry object :)
*/
var itr=new dojox.collections.DictionaryIterator({
first:"foo", second:"bar", third:"baz", fourth:"zoo"
});
t.assertEqual("foo", itr.element); // test initialization
t.assertTrue(!itr.atEnd());
t.assertEqual("foo", itr.get()); // make sure the first get doesn't advance.
t.assertEqual("bar", itr.get());
t.assertEqual("baz", itr.get());
t.assertEqual("zoo", itr.get());
t.assertTrue(itr.atEnd());
t.assertEqual(null, itr.get());
 
itr.reset();
t.assertTrue(!itr.atEnd());
t.assertEqual("foo", itr.element);
 
// test map
var a=itr.map(function(elm){
return elm+"-mapped";
});
itr=new dojox.collections.Iterator(a);
t.assertEqual("foo-mapped", itr.element); // test initialization
t.assertTrue(!itr.atEnd());
t.assertEqual("foo-mapped", itr.get()); // make sure the first get doesn't advance.
t.assertEqual("bar-mapped", itr.get());
t.assertEqual("baz-mapped", itr.get());
t.assertEqual("zoo-mapped", itr.get());
t.assertTrue(itr.atEnd());
t.assertEqual(null, itr.get());
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/ArrayList.js
New file
0,0 → 1,83
if(!dojo._hasResource["dojox.collections.tests.ArrayList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.ArrayList"] = true;
dojo.provide("dojox.collections.tests.ArrayList");
dojo.require("dojox.collections.ArrayList");
 
tests.register("dojox.collections.tests.ArrayList", [
function testCtor(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
t.assertEqual(4, al.count);
},
function testAdd(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.add("carp");
t.assertEqual("foo,bar,test,bull,carp", al.toString());
al.addRange(["oof","rab"]);
t.assertEqual("foo,bar,test,bull,carp,oof,rab", al.toString());
},
function testClear(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.clear();
t.assertEqual(0, al.count);
},
function testClone(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
var cloned=al.clone();
t.assertEqual(al.toString(), cloned.toString());
},
function testContains(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
t.assertTrue(al.contains("bar"));
t.assertFalse(al.contains("faz"));
},
function testGetIterator(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
var itr=al.getIterator();
while(!itr.atEnd()){
itr.get();
}
t.assertEqual("bull", itr.element);
},
function testIndexOf(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
t.assertEqual(1, al.indexOf("bar"));
},
function testInsert(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.insert(2, "baz");
t.assertEqual(2, al.indexOf("baz"));
},
function testItem(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
t.assertEqual("test", al.item(2));
},
function testRemove(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.remove("bar");
t.assertEqual("foo,test,bull", al.toString());
t.assertEqual(3, al.count);
},
function testRemoveAt(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.removeAt(3);
t.assertEqual("foo,bar,test", al.toString());
t.assertEqual(3, al.count);
},
function testReverse(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.reverse();
t.assertEqual("bull,test,bar,foo", al.toString());
},
function testSort(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
al.sort();
t.assertEqual("bar,bull,foo,test", al.toString());
},
function testToArray(t){
var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]);
var a=al.toArray();
t.assertEqual(a.join(","), al.toString());
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/Set.js
New file
0,0 → 1,35
if(!dojo._hasResource["dojox.collections.tests.Set"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.Set"] = true;
dojo.provide("dojox.collections.tests.Set");
dojo.require("dojox.collections.Set");
 
(function(){
var dxcs=dojox.collections.Set;
var a = ["apple","bear","candy","donut","epiphite","frank"];
var b = ["bear","epiphite","google","happy","joy"];
tests.register("dojox.collections.tests.Set", [
function testUnion(t){
var union=dxcs.union(a,b);
t.assertEqual("apple,bear,candy,donut,epiphite,frank,google,happy,joy", union.toArray().join(','));
},
function testIntersection(t){
var itsn=dxcs.intersection(a,b);
t.assertEqual("bear,epiphite", itsn.toArray().join(","));
t.assertEqual("bear", dxcs.intersection(["bear","apple"], ["bear"]));
},
function testDifference(t){
var d=dxcs.difference(a,b);
t.assertEqual("apple,candy,donut,frank",d.toArray().join(','));
},
function testIsSubSet(t){
t.assertFalse(dxcs.isSubSet(a,["bear","candy"]));
t.assertTrue(dxcs.isSubSet(["bear","candy"],a));
},
function testIsSuperSet(t){
t.assertTrue(dxcs.isSuperSet(a,["bear","candy"]));
t.assertFalse(dxcs.isSuperSet(["bear","candy"],a));
}
]);
})();
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/SortedList.js
New file
0,0 → 1,168
if(!dojo._hasResource["dojox.collections.tests.SortedList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.SortedList"] = true;
dojo.provide("dojox.collections.tests.SortedList");
dojo.require("dojox.collections.SortedList");
 
tests.register("dojox.collections.tests.SortedList", [
function testCtor(t){
var sl=new dojox.collections.SortedList();
t.assertTrue(sl instanceof dojox.collections.SortedList);
},
function testAdd(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
t.assertEqual("bar", sl.item("foo").valueOf());
},
function testClear(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.clear();
t.assertEqual(0, sl.count);
},
function testClone(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
var sl2=sl.clone();
t.assertTrue(sl2.contains("baz"));
},
function testContains(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertTrue(sl.contains("baz"));
t.assertFalse(sl.contains("faz"));
},
function testContainsKey(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertTrue(sl.containsKey("buck"));
t.assertFalse(sl.containsKey("faz"));
},
function testContainsValue(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertTrue(sl.containsValue("shot"));
t.assertFalse(sl.containsValue("faz"));
},
function testGetKeyList(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertEqual("foo,baz,buck,apple",sl.getKeyList().join(','));
},
function testGetValueList(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertEqual("bar,fab,shot,orange",sl.getValueList().join(','));
},
function testCopyTo(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
var arr=["bek"];
sl.copyTo(arr,0);
t.assertEqual("bar,fab,shot,orange,bek", arr.join(','));
},
function testGetByIndex(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertEqual("shot", sl.getByIndex(2));
},
function testGetKey(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertEqual("apple", sl.getKey(0));
},
function testIndexOfKey(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertEqual(0, sl.indexOfKey("apple"));
},
function testIndexOfValue(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
t.assertEqual(3, sl.indexOfValue("bar"));
},
function testRemove(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
sl.remove("baz");
t.assertEqual(3, sl.count);
t.assertEqual(undefined, sl.item("baz"));
},
function testRemoveAt(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
sl.removeAt(2);
t.assertEqual(undefined, sl.item("buck"));
},
function testReplace(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
sl.replace("buck","dollar");
t.assertEqual(sl.item("buck").valueOf(), "dollar");
},
function testSetByIndex(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
sl.setByIndex(0, "bar");
t.assertEqual("bar", sl.getByIndex(0));
},
function testSorting(t){
var sl=new dojox.collections.SortedList();
sl.add("foo","bar");
sl.add("baz","fab");
sl.add("buck","shot");
sl.add("apple","orange");
 
var a=[];
sl.forEach(function(item){
a.push(item);
});
t.assertEqual("orange,fab,shot,bar", a.join());
}
]);
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/collections.js
New file
0,0 → 1,19
if(!dojo._hasResource["dojox.collections.tests.collections"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.tests.collections"] = true;
dojo.provide("dojox.collections.tests.collections");
dojo.require("dojox.collections");
 
try{
dojo.require("dojox.collections.tests._base");
dojo.require("dojox.collections.tests.ArrayList");
dojo.require("dojox.collections.tests.BinaryTree");
dojo.require("dojox.collections.tests.Dictionary");
dojo.require("dojox.collections.tests.Queue");
dojo.require("dojox.collections.tests.Set");
dojo.require("dojox.collections.tests.SortedList");
dojo.require("dojox.collections.tests.Stack");
}catch(e){
doh.debug(e);
}
 
}
/trunk/api/js/dojo1.0/dojox/collections/tests/runTests.html
New file
0,0 → 1,9
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Dojox.wire Unit Test Runner</title>
<meta http-equiv="REFRESH" content="0;url=../../../util/doh/runner.html?testModule=dojox.collections.tests.collections"></HEAD>
<BODY>
Redirecting to D.O.H runner.
</BODY>
</HTML>
/trunk/api/js/dojo1.0/dojox/collections/_base.js
New file
0,0 → 1,100
if(!dojo._hasResource["dojox.collections._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections._base"] = true;
dojo.provide("dojox.collections._base");
 
dojox.collections.DictionaryEntry=function(/* string */k, /* object */v){
// summary
// return an object of type dojox.collections.DictionaryEntry
this.key=k;
this.value=v;
this.valueOf=function(){
return this.value; // object
};
this.toString=function(){
return String(this.value); // string
};
}
 
/* Iterators
* The collections.Iterators (Iterator and DictionaryIterator) are built to
* work with the Collections included in this module. However, they *can*
* be used with arrays and objects, respectively, should one choose to do so.
*/
dojox.collections.Iterator=function(/* array */arr){
// summary
// return an object of type dojox.collections.Iterator
var a=arr;
var position=0;
this.element=a[position]||null;
this.atEnd=function(){
// summary
// Test to see if the internal cursor has reached the end of the internal collection.
return (position>=a.length); // bool
};
this.get=function(){
// summary
// Get the next member in the collection.
if(this.atEnd()){
return null; // object
}
this.element=a[position++];
return this.element; // object
};
this.map=function(/* function */fn, /* object? */scope){
// summary
// Functional iteration with optional scope.
return dojo.map(a, fn, scope);
};
this.reset=function(){
// summary
// reset the internal cursor.
position=0;
this.element=a[position];
};
}
 
/* Notes:
* The DictionaryIterator no longer supports a key and value property;
* the reality is that you can use this to iterate over a JS object
* being used as a hashtable.
*/
dojox.collections.DictionaryIterator=function(/* object */obj){
// summary
// return an object of type dojox.collections.DictionaryIterator
var a=[]; // Create an indexing array
var testObject={};
for(var p in obj){
if(!testObject[p]){
a.push(obj[p]); // fill it up
}
}
var position=0;
this.element=a[position]||null;
this.atEnd=function(){
// summary
// Test to see if the internal cursor has reached the end of the internal collection.
return (position>=a.length); // bool
};
this.get=function(){
// summary
// Get the next member in the collection.
if(this.atEnd()){
return null; // object
}
this.element=a[position++];
return this.element; // object
};
this.map=function(/* function */fn, /* object? */scope){
// summary
// Functional iteration with optional scope.
return dojo.map(a, fn, scope);
};
this.reset=function() {
// summary
// reset the internal cursor.
position=0;
this.element=a[position];
};
};
 
}
/trunk/api/js/dojo1.0/dojox/collections/ArrayList.js
New file
0,0 → 1,133
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||","));
};
};
 
}
/trunk/api/js/dojo1.0/dojox/collections/Set.js
New file
0,0 → 1,89
if(!dojo._hasResource["dojox.collections.Set"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.Set"] = true;
dojo.provide("dojox.collections.Set");
dojo.require("dojox.collections.ArrayList");
 
(function(){
var dxc=dojox.collections;
dxc.Set=new (function(){
function conv(arr){
if(arr.constructor==Array){
return new dojox.collections.ArrayList(arr); // dojox.collections.ArrayList
}
return arr; // dojox.collections.ArrayList
}
this.union = function(/* array */setA, /* array */setB){
// summary
// Return the union of the two passed sets.
setA=conv(setA);
setB=conv(setB);
var result = new dojox.collections.ArrayList(setA.toArray());
var e = setB.getIterator();
while(!e.atEnd()){
var item=e.get();
if(!result.contains(item)){
result.add(item);
}
}
return result; // dojox.collections.ArrayList
};
this.intersection = function(/* array */setA, /* array */setB){
// summary
// Return the intersection of the two passed sets.
setA=conv(setA);
setB=conv(setB);
var result = new dojox.collections.ArrayList();
var e = setB.getIterator();
while(!e.atEnd()){
var item=e.get();
if(setA.contains(item)){
result.add(item);
}
}
return result; // dojox.collections.ArrayList
};
this.difference = function(/* array */setA, /* array */setB){
// summary
// Returns everything in setA that is not in setB.
setA=conv(setA);
setB=conv(setB);
var result = new dojox.collections.ArrayList();
var e=setA.getIterator();
while(!e.atEnd()){
var item=e.get();
if(!setB.contains(item)){
result.add(item);
}
}
return result; // dojox.collections.ArrayList
};
this.isSubSet = function(/* array */setA, /* array */setB) {
// summary
// Returns if set B is a subset of set A.
setA=conv(setA);
setB=conv(setB);
var e = setA.getIterator();
while(!e.atEnd()){
if(!setB.contains(e.get())){
return false; // boolean
}
}
return true; // boolean
};
this.isSuperSet = function(/* array */setA, /* array */setB){
// summary
// Returns if set B is a superset of set A.
setA=conv(setA);
setB=conv(setB);
var e = setB.getIterator();
while(!e.atEnd()){
if(!setA.contains(e.get())){
return false; // boolean
}
}
return true; // boolean
};
})();
})();
 
}
/trunk/api/js/dojo1.0/dojox/collections/SortedList.js
New file
0,0 → 1,198
if(!dojo._hasResource["dojox.collections.SortedList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.collections.SortedList"] = true;
dojo.provide("dojox.collections.SortedList");
dojo.require("dojox.collections._base");
 
dojox.collections.SortedList=function(/* object? */ dictionary){
// summary
// creates a collection that acts like a dictionary but is also internally sorted.
// Note that the act of adding any elements forces an internal resort, making this object potentially slow.
var _this=this;
var items={};
var q=[];
var sorter=function(a,b){
if (a.key > b.key) return 1;
if (a.key < b.key) return -1;
return 0;
};
var build=function(){
q=[];
var e=_this.getIterator();
while (!e.atEnd()){
q.push(e.get());
}
q.sort(sorter);
};
var testObject={};
 
this.count=q.length;
this.add=function(/* string */ k,/* object */v){
// summary
// add the passed value to the dictionary at location k
if (!items[k]) {
items[k]=new dojox.collections.DictionaryEntry(k,v);
this.count=q.push(items[k]);
q.sort(sorter);
}
};
this.clear=function(){
// summary
// clear the internal collections
items={};
q=[];
this.count=q.length;
};
this.clone=function(){
// summary
// create a clone of this sorted list
return new dojox.collections.SortedList(this); // dojox.collections.SortedList
};
this.contains=this.containsKey=function(/* string */ k){
// summary
// Check to see if the list has a location k
if(testObject[k]){
return false; // bool
}
return (items[k]!=null); // bool
};
this.containsValue=function(/* object */ o){
// summary
// Check to see if this list contains the passed object
var e=this.getIterator();
while (!e.atEnd()){
var item=e.get();
if(item.value==o){
return true; // bool
}
}
return false; // bool
};
this.copyTo=function(/* array */ arr, /* int */ i){
// summary
// copy the contents of the list into array arr at index i
var e=this.getIterator();
var idx=i;
while(!e.atEnd()){
arr.splice(idx,0,e.get());
idx++;
}
};
this.entry=function(/* string */ k){
// summary
// return the object at location k
return items[k]; // dojox.collections.DictionaryEntry
};
this.forEach=function(/* function */ fn, /* object? */ scope){
// summary
// functional iterator, following the mozilla spec.
dojo.forEach(q, fn, scope);
};
this.getByIndex=function(/* int */ i){
// summary
// return the item at index i
return q[i].valueOf(); // object
};
this.getIterator=function(){
// summary
// get an iterator for this object
return new dojox.collections.DictionaryIterator(items); // dojox.collections.DictionaryIterator
};
this.getKey=function(/* int */ i){
// summary
// return the key of the item at index i
return q[i].key;
};
this.getKeyList=function(){
// summary
// return an array of the keys set in this list
var arr=[];
var e=this.getIterator();
while (!e.atEnd()){
arr.push(e.get().key);
}
return arr; // array
};
this.getValueList=function(){
// summary
// return an array of values in this list
var arr=[];
var e=this.getIterator();
while (!e.atEnd()){
arr.push(e.get().value);
}
return arr; // array
};
this.indexOfKey=function(/* string */ k){
// summary
// return the index of the passed key.
for (var i=0; i<q.length; i++){
if (q[i].key==k){
return i; // int
}
}
return -1; // int
};
this.indexOfValue=function(/* object */ o){
// summary
// return the first index of object o
for (var i=0; i<q.length; i++){
if (q[i].value==o){
return i; // int
}
}
return -1; // int
};
this.item=function(/* string */ k){
// summary
// return the value of the object at location k.
if(k in items && !testObject[k]){
return items[k].valueOf(); // object
}
return undefined; // object
};
this.remove=function(/* string */k){
// summary
// remove the item at location k and rebuild the internal collections.
delete items[k];
build();
this.count=q.length;
};
this.removeAt=function(/* int */ i){
// summary
// remove the item at index i, and rebuild the internal collections.
delete items[q[i].key];
build();
this.count=q.length;
};
this.replace=function(/* string */ k, /* object */ v){
// summary
// Replace an existing item if it's there, and add a new one if not.
if (!items[k]){
// we're adding a new object, return false
this.add(k,v);
return false; // bool
}else{
// we're replacing an object, return true
items[k]=new dojox.collections.DictionaryEntry(k,v);
build();
return true; // bool
}
};
this.setByIndex=function(/* int */ i, /* object */ o){
// summary
// set an item by index
items[q[i].key].value=o;
build();
this.count=q.length;
};
if (dictionary){
var e=dictionary.getIterator();
while (!e.atEnd()){
var item=e.get();
q[q.length]=items[item.key]=new dojox.collections.DictionaryEntry(item.key,item.value);
}
q.sort(sorter);
}
}
 
}