Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

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);
                }
        }
};

}