Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dojox.wire._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.wire._base"] = true;dojo.provide("dojox.wire._base");dojox.wire._defaultWireClass = "dojox.wire.Wire";dojox.wire._wireClasses = {"attribute": "dojox.wire.DataWire","path": "dojox.wire.XmlWire","children": "dojox.wire.CompositeWire","columns": "dojox.wire.TableAdapter","nodes": "dojox.wire.TreeAdapter","segments": "dojox.wire.TextAdapter"};dojox.wire.register = function(/*Function||String*/wireClass, /*String*/key){// summary:// Register a Wire class// desription:// The specified Wire class or a class name is registered with// a key property of arguments to create a Wire// wireClass:// A class or full qualified class name// key:// A key property of arguments to create a Wireif(!wireClass || !key){return; //undefined}if(dojox.wire._wireClasses[key]){ // key already in usereturn; //undefined}dojox.wire._wireClasses[key] = wireClass;};dojox.wire._getClass = function(/*String*/name){// summary:// Returns a class// description:// The class is loaded by dojo.require() and returned// by dojo.getObject().// name:// A class name// returns:// A classdojo["require"](name); // use dojo["require"] instead of dojo.require to avoid a build problemreturn dojo.getObject(name); //Function};dojox.wire.create = function(/*Object*/args){// summary:// Create a Wire from arguments// description:// If 'args' specifies 'wireClass', it is used as a class or full// qualified class name to create a Wire with 'args' as arguments.// Otherwise, a Wire class is determined by other proeprties of 'args'// checking if 'args' specifies a key property for a Wire class.// If no key property found, the default Wire class is used.// args:// Arguments to create a Wire// returns:// A Wireif(!args){args = {};}var wireClass = args.wireClass;if(wireClass){if(dojo.isString(wireClass)){wireClass = dojox.wire._getClass(wireClass);}}else{for(var key in args){if(!args[key]){continue;}wireClass = dojox.wire._wireClasses[key];if(wireClass){if(dojo.isString(wireClass)){wireClass = dojox.wire._getClass(wireClass);dojox.wire._wireClasses[key] = wireClass;}break;}}}if(!wireClass){if(dojo.isString(dojox.wire._defaultWireClass)){dojox.wire._defaultWireClass = dojox.wire._getClass(dojox.wire._defaultWireClass);}wireClass = dojox.wire._defaultWireClass;}return new wireClass(args); //Object};dojox.wire.isWire = function(/*Object*/wire){// summary:// Check if an object is a Wire// description:// If the specified object is a Wire, true is returned.// Otherwise, false is returned.// wire:// An object to check// returns:// True if the object is a Wire, otherwise falsereturn (wire && wire._wireClass); //Boolean};dojox.wire.transfer = function(/*Wire||Object*/source, /*Wire||Object*/target, /*Object?*/defaultObject, /*Object?*/defaultTargetObject){// summary:// Transfer a source value to a target value// description:// If 'source' and/or 'target' are not Wires, Wires are created with// them as arguments.// A value is got through the source Wire and set through the target// Wire.// 'defaultObject' is passed to Wires as a default root object.// If 'defaultTargetObject' is specified, it is passed to the target// Wire as a default root object, instead of 'defaultObject'.// source:// A Wire or arguments to create a Wire for a source value// target:// A Wire or arguments to create a Wire for a target value// defaultObject:// defaultTargetObject;// Optional default root objects passed to Wiresif(!source || !target){return; //undefined}if(!dojox.wire.isWire(source)){source = dojox.wire.create(source);}if(!dojox.wire.isWire(target)){target = dojox.wire.create(target);}var value = source.getValue(defaultObject);target.setValue(value, (defaultTargetObject || defaultObject));};dojox.wire.connect = function(/*Object*/trigger, /*Wire||Object*/source, /*Wire||Object*/target){// summary:// Transfer a source value to a target value on a trigger event or// topic// description:// If 'trigger' specifies 'topic', the topic is subscribed to transer// a value on the topic.// Otherwise, the event specified to 'event' of 'trigger' is listened// to transfer a value.// On the specified event or topic, transfer() is called with// 'source', 'target' and the arguments of the event or topic (as// default root objects).// trigger:// An event or topic to trigger a transfer// source:// A Wire or arguments to create a Wire for a source value// target:// A Wire or arguments to create a Wire for a target value// returns:// A connection handle for disconnect()if(!trigger || !source || !target){return; //undefined}var connection = {topic: trigger.topic};if(trigger.topic){connection.handle = dojo.subscribe(trigger.topic, function(){dojox.wire.transfer(source, target, arguments);});}else if(trigger.event){connection.handle = dojo.connect(trigger.scope, trigger.event, function(){dojox.wire.transfer(source, target, arguments);});}return connection; //Object};dojox.wire.disconnect = function(/*Object*/connection){// summary:// Remove a connection or subscription for transfer// description:// If 'handle' has 'topic', the topic is unsubscribed.// Otherwise, the listener to an event is removed.// connection:// A connection handle returned by connect()if(!connection || !connection.handle){return; //undefined}if(connection.topic){dojo.unsubscribe(connection.handle);}else{dojo.disconnect(connection.handle);}};}