diff options
Diffstat (limited to 'framework/Web/Javascripts')
| -rw-r--r-- | framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js | 748 | 
1 files changed, 386 insertions, 362 deletions
diff --git a/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js b/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js index 7ee4c0e6..aa1fd99b 100644 --- a/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js @@ -1,362 +1,386 @@ -/**
 - * Generic postback control.
 - */
 -Prado.WebUI.CallbackControl = Class.extend(Prado.WebUI.PostBackControl,
 -{
 -	onPostBack : function(event, options)
 -	{
 -		var request = new Prado.CallbackRequest(options.EventTarget, options);
 -		request.dispatch();
 -		Event.stop(event);
 -	}
 -});
 -
 -/**
 - * TActiveButton control.
 - */
 -Prado.WebUI.TActiveButton = Class.extend(Prado.WebUI.CallbackControl);
 -/**
 - * TActiveLinkButton control.
 - */
 -Prado.WebUI.TActiveLinkButton = Class.extend(Prado.WebUI.CallbackControl);
 -
 -Prado.WebUI.TActiveImageButton = Class.extend(Prado.WebUI.TImageButton,
 -{
 -	onPostBack : function(event, options)
 -	{
 -		this.addXYInput(event,options);
 -		var request = new Prado.CallbackRequest(options.EventTarget, options);
 -		request.dispatch();
 -		Event.stop(event);
 -	}
 -});
 -/**
 - * Active check box.
 - */
 -Prado.WebUI.TActiveCheckBox = Class.extend(Prado.WebUI.CallbackControl,
 -{
 -	onPostBack : function(event, options)
 -	{
 -		var request = new Prado.CallbackRequest(options.EventTarget, options);
 -		if(request.dispatch()==false)
 -			Event.stop(event);
 -	}
 -});
 -
 -/**
 - * TActiveRadioButton control.
 - */
 -Prado.WebUI.TActiveRadioButton = Class.extend(Prado.WebUI.TActiveCheckBox);
 -
 -
 -Prado.WebUI.TActiveCheckBoxList = Base.extend(
 -{
 -	constructor : function(options)
 -	{
 -		for(var i = 0; i<options.ItemCount; i++)
 -		{
 -			var checkBoxOptions = Object.extend(
 -			{
 -				ID : options.ListID+"_c"+i,
 -				EventTarget : options.ListName+"$c"+i
 -			}, options);
 -			new Prado.WebUI.TActiveCheckBox(checkBoxOptions);
 -		}
 -	}
 -});
 -
 -Prado.WebUI.TActiveRadioButtonList = Prado.WebUI.TActiveCheckBoxList;
 -
 -/**
 - * TActiveTextBox control, handles onchange event.
 - */
 -Prado.WebUI.TActiveTextBox = Class.extend(Prado.WebUI.TTextBox,
 -{
 -	onInit : function(options)
 -	{
 -		this.options=options;
 -		if(options['TextMode'] != 'MultiLine')
 -			Event.observe(this.element, "keydown", this.handleReturnKey.bind(this));
 -		if(this.options['AutoPostBack']==true)
 -			Event.observe(this.element, "change", this.doCallback.bindEvent(this,options));
 -	},
 -
 -	doCallback : function(event, options)
 -	{
 -		var request = new Prado.CallbackRequest(options.EventTarget, options);
 -		request.dispatch();
 -        if (!Prototype.Browser.IE)
 -		    Event.stop(event);
 -	}
 -});
 -
 -/**
 - * TAutoComplete control.
 - */
 -Prado.WebUI.TAutoComplete = Class.extend(Autocompleter.Base, Prado.WebUI.TActiveTextBox.prototype);
 -Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete,
 -{
 -	initialize : function(options)
 -	{
 -		this.options = options;
 -		this.hasResults = false;
 -		this.baseInitialize(options.ID, options.ResultPanel, options);
 -		Object.extend(this.options,
 -		{
 -			onSuccess : this.onComplete.bind(this)
 -		});
 -
 -		if(options.AutoPostBack)
 -			this.onInit(options);
 -	},
 -
 -	doCallback : function(event, options)
 -	{
 -		if(!this.active)
 -		{
 -			var request = new Prado.CallbackRequest(this.options.EventTarget, options);
 -			request.dispatch();
 -			Event.stop(event);
 -		}
 -	},
 -
 -	 //Overrides parent implementation, fires onchange event.
 -	onClick: function(event)
 -	{
 -	    var element = Event.findElement(event, 'LI');
 -	    this.index = element.autocompleteIndex;
 -	    this.selectEntry();
 -	    this.hide();
 -		Event.fireEvent(this.element, "change");
 -	},
 -
 -	getUpdatedChoices : function()
 -	{
 -		var options = new Array(this.getToken(),"__TAutoComplete_onSuggest__");
 -		Prado.Callback(this.options.EventTarget, options, null, this.options);
 -	},
 -
 -	/**
 -	 * Overrides parent implements, don't update if no results.
 -	 */
 -	selectEntry: function()
 -	{
 -		if(this.hasResults)
 -		{
 -			this.active = false;
 -			this.updateElement(this.getCurrentEntry());
 -			var options = [this.index, "__TAutoComplete_onSuggestionSelected__"];
 -			Prado.Callback(this.options.EventTarget, options, null, this.options);
 -		}
 -	},
 -
 -	onComplete : function(request, boundary)
 -  	{
 -  		var result = Prado.Element.extractContent(request.transport.responseText, boundary);
 -  		if(typeof(result) == "string")
 -		{
 -			if(result.length > 0)
 -			{
 -				this.hasResults = true;
 -				this.updateChoices(result);
 -			}
 -			else
 -			{
 -				this.active = false;
 -				this.hasResults = false;
 -				this.hide();
 -			}
 -		}
 -	}
 -});
 -
 -/**
 - * Time Triggered Callback class.
 - */
 -Prado.WebUI.TTimeTriggeredCallback = Base.extend(
 -{
 -	constructor : function(options)
 -	{
 -		this.options = Object.extend({ Interval : 1	}, options || {});
 -		Prado.WebUI.TTimeTriggeredCallback.register(this);
 -	},
 -
 -	startTimer : function()
 -	{
 -		setTimeout(this.onTimerEvent.bind(this), 100);
 -		if(typeof(this.timer) == 'undefined' || this.timer == null)
 -			this.timer = setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000);
 -	},
 -
 -	stopTimer : function()
 -	{
 -		if(typeof(this.timer) != 'undefined')
 -		{
 -			clearInterval(this.timer);
 -			this.timer = null;
 -		}
 -	},
 -
 -	onTimerEvent : function()
 -	{
 -		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options);
 -		request.dispatch();
 -	}
 -},
 -//class methods
 -{
 -	timers : {},
 -
 -	register : function(timer)
 -	{
 -		Prado.WebUI.TTimeTriggeredCallback.timers[timer.options.ID] = timer;
 -	},
 -
 -	start : function(id)
 -	{
 -		if(Prado.WebUI.TTimeTriggeredCallback.timers[id])
 -			Prado.WebUI.TTimeTriggeredCallback.timers[id].startTimer();
 -	},
 -
 -	stop : function(id)
 -	{
 -		if(Prado.WebUI.TTimeTriggeredCallback.timers[id])
 -			Prado.WebUI.TTimeTriggeredCallback.timers[id].stopTimer();
 -	}
 -});
 -
 -Prado.WebUI.ActiveListControl = Base.extend(
 -{
 -	constructor : function(options)
 -	{
 -		this.element = $(options.ID);
 -		if(this.element)
 -		{
 -			this.options = options;
 -			Event.observe(this.element, "change", this.doCallback.bind(this));
 -		}
 -	},
 -
 -	doCallback : function(event)
 -	{
 -		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options);
 -		request.dispatch();
 -		Event.stop(event);
 -	}
 -});
 -
 -Prado.WebUI.TActiveDropDownList = Prado.WebUI.ActiveListControl;
 -Prado.WebUI.TActiveListBox = Prado.WebUI.ActiveListControl;
 -
 -/**
 - * Observe event of a particular control to trigger a callback request.
 - */
 -Prado.WebUI.TEventTriggeredCallback = Base.extend(
 -{
 -	constructor : function(options)
 -	{
 -		this.options = options;
 -		var element = $(options['ControlID']);
 -		if(element)
 -			Event.observe(element, this.getEventName(element), this.doCallback.bind(this));
 -	},
 -
 -	getEventName : function(element)
 -	{
 -		var name = this.options.EventName;
 -   		if(typeof(name) == "undefined" && element.type)
 -		{
 -      		switch (element.type.toLowerCase())
 -			{
 -          		case 'password':
 -		        case 'text':
 -		        case 'textarea':
 -		        case 'select-one':
 -		        case 'select-multiple':
 -          			return 'change';
 -      		}
 -		}
 -		return typeof(name) == "undefined"  || name == "undefined" ? 'click' : name;
 -    },
 -
 -	doCallback : function(event)
 -	{
 -		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options);
 -		request.dispatch();
 -		if(this.options.StopEvent == true)
 -			Event.stop(event);
 -	}
 -});
 -
 -/**
 - * Observe changes to a property of a particular control to trigger a callback.
 - */
 -Prado.WebUI.TValueTriggeredCallback = Base.extend(
 -{
 -	count : 1,
 -
 -	observing : true,
 -
 -	constructor : function(options)
 -	{
 -		this.options = options;
 -		this.options.PropertyName = this.options.PropertyName || 'value';
 -		var element = $(options['ControlID']);
 -		this.value = element ? element[this.options.PropertyName] : undefined;
 -		Prado.WebUI.TValueTriggeredCallback.register(this);
 -		this.startObserving();
 -	},
 -
 -	stopObserving : function()
 -	{
 -		clearTimeout(this.timer);
 -		this.observing = false;
 -	},
 -
 -	startObserving : function()
 -	{
 -		this.timer = setTimeout(this.checkChanges.bind(this), this.options.Interval*1000);
 -	},
 -
 -	checkChanges : function()
 -	{
 -		var element = $(this.options.ControlID);
 -		if(element)
 -		{
 -			var value = element[this.options.PropertyName];
 -			if(this.value != value)
 -			{
 -				this.doCallback(this.value, value);
 -				this.value = value;
 -				this.count=1;
 -			}
 -			else
 -				this.count = this.count + this.options.Decay;
 -			if(this.observing)
 -				this.time = setTimeout(this.checkChanges.bind(this),
 -					parseInt(this.options.Interval*1000*this.count));
 -		}
 -	},
 -
 -	doCallback : function(oldValue, newValue)
 -	{
 -		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options);
 -		var param = {'OldValue' : oldValue, 'NewValue' : newValue};
 -		request.setCallbackParameter(param);
 -		request.dispatch();
 -	}
 -},
 -//class methods
 -{
 -	timers : {},
 -
 -	register : function(timer)
 -	{
 -		Prado.WebUI.TValueTriggeredCallback.timers[timer.options.ID] = timer;
 -	},
 -
 -	stop : function(id)
 -	{
 -		Prado.WebUI.TValueTriggeredCallback.timers[id].stopObserving();
 -	}
 -});
 +/** + * Generic postback control. + */ +Prado.WebUI.CallbackControl = Class.extend(Prado.WebUI.PostBackControl, +{ +	onPostBack : function(event, options) +	{ +		var request = new Prado.CallbackRequest(options.EventTarget, options); +		request.dispatch(); +		Event.stop(event); +	} +}); + +/** + * TActiveButton control. + */ +Prado.WebUI.TActiveButton = Class.extend(Prado.WebUI.CallbackControl); +/** + * TActiveLinkButton control. + */ +Prado.WebUI.TActiveLinkButton = Class.extend(Prado.WebUI.CallbackControl); + +Prado.WebUI.TActiveImageButton = Class.extend(Prado.WebUI.TImageButton, +{ +	onPostBack : function(event, options) +	{ +		this.addXYInput(event,options); +		var request = new Prado.CallbackRequest(options.EventTarget, options); +		request.dispatch(); +		Event.stop(event); +	} +}); +/** + * Active check box. + */ +Prado.WebUI.TActiveCheckBox = Class.extend(Prado.WebUI.CallbackControl, +{ +	onPostBack : function(event, options) +	{ +		var request = new Prado.CallbackRequest(options.EventTarget, options); +		if(request.dispatch()==false) +			Event.stop(event); +	} +}); + +/** + * TActiveRadioButton control. + */ +Prado.WebUI.TActiveRadioButton = Class.extend(Prado.WebUI.TActiveCheckBox); + + +Prado.WebUI.TActiveCheckBoxList = Base.extend( +{ +	constructor : function(options) +	{ +		for(var i = 0; i<options.ItemCount; i++) +		{ +			var checkBoxOptions = Object.extend( +			{ +				ID : options.ListID+"_c"+i, +				EventTarget : options.ListName+"$c"+i +			}, options); +			new Prado.WebUI.TActiveCheckBox(checkBoxOptions); +		} +	} +}); + +Prado.WebUI.TActiveRadioButtonList = Prado.WebUI.TActiveCheckBoxList; + +/** + * TActiveTextBox control, handles onchange event. + */ +Prado.WebUI.TActiveTextBox = Class.extend(Prado.WebUI.TTextBox, +{ +	onInit : function(options) +	{ +		this.options=options; +		if(options['TextMode'] != 'MultiLine') +			Event.observe(this.element, "keydown", this.handleReturnKey.bind(this)); +		if(this.options['AutoPostBack']==true) +			Event.observe(this.element, "change", this.doCallback.bindEvent(this,options)); +	}, + +	doCallback : function(event, options) +	{ +		var request = new Prado.CallbackRequest(options.EventTarget, options); +		request.dispatch(); +        if (!Prototype.Browser.IE) +		    Event.stop(event); +	} +}); + +/** + * TAutoComplete control. + */ +Prado.WebUI.TAutoComplete = Class.extend(Autocompleter.Base, Prado.WebUI.TActiveTextBox.prototype); +Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete, +{ +	initialize : function(options) +	{ +		this.options = options; +		this.hasResults = false; +		this.baseInitialize(options.ID, options.ResultPanel, options); +		Object.extend(this.options, +		{ +			onSuccess : this.onComplete.bind(this) +		}); + +		if(options.AutoPostBack) +			this.onInit(options); +	}, + +	doCallback : function(event, options) +	{ +		if(!this.active) +		{ +			var request = new Prado.CallbackRequest(this.options.EventTarget, options); +			request.dispatch(); +			Event.stop(event); +		} +	}, + +	 //Overrides parent implementation, fires onchange event. +	onClick: function(event) +	{ +	    var element = Event.findElement(event, 'LI'); +	    this.index = element.autocompleteIndex; +	    this.selectEntry(); +	    this.hide(); +		Event.fireEvent(this.element, "change"); +	}, + +	getUpdatedChoices : function() +	{ +		var options = new Array(this.getToken(),"__TAutoComplete_onSuggest__"); +		Prado.Callback(this.options.EventTarget, options, null, this.options); +	}, + +	/** +	 * Overrides parent implements, don't update if no results. +	 */ +	selectEntry: function() +	{ +		if(this.hasResults) +		{ +			this.active = false; +			this.updateElement(this.getCurrentEntry()); +			var options = [this.index, "__TAutoComplete_onSuggestionSelected__"]; +			Prado.Callback(this.options.EventTarget, options, null, this.options); +		} +	}, + +	onComplete : function(request, boundary) +  	{ +  		var result = Prado.Element.extractContent(request.transport.responseText, boundary); +  		if(typeof(result) == "string") +		{ +			if(result.length > 0) +			{ +				this.hasResults = true; +				this.updateChoices(result); +			} +			else +			{ +				this.active = false; +				this.hasResults = false; +				this.hide(); +			} +		} +	} +}); + +/** + * Time Triggered Callback class. + */ +Prado.WebUI.TTimeTriggeredCallback = Base.extend( +{ +	constructor : function(options) +	{ +		this.options = Object.extend({ Interval : 1	}, options || {}); +		Prado.WebUI.TTimeTriggeredCallback.register(this); +	}, + +	startTimer : function() +	{ +		setTimeout(this.onTimerEvent.bind(this), 100); +		if(typeof(this.timer) == 'undefined' || this.timer == null) +			this.timer = setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000); +	}, + +	stopTimer : function() +	{ +		if(typeof(this.timer) != 'undefined') +		{ +			clearInterval(this.timer); +			this.timer = null; +		} +	}, +	 +	resetTimer : function() +	{ +		if(typeof(this.timer) != 'undefined') +		{ +			clearInterval(this.timer); +			this.timer = null; +			this.timer = setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000); +		} +	}, + +	onTimerEvent : function() +	{ +		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options); +		request.dispatch(); +	}, +	 +	setInterval : function(value) +	{ +		if (this.options.Interval != value){ +			this.options.Interval = value; +			this.resetTimer(); +		} +	} +}, +//class methods +{ +	timers : {}, + +	register : function(timer) +	{ +		Prado.WebUI.TTimeTriggeredCallback.timers[timer.options.ID] = timer; +	}, + +	start : function(id) +	{ +		if(Prado.WebUI.TTimeTriggeredCallback.timers[id]) +			Prado.WebUI.TTimeTriggeredCallback.timers[id].startTimer(); +	}, + +	stop : function(id) +	{ +		if(Prado.WebUI.TTimeTriggeredCallback.timers[id]) +			Prado.WebUI.TTimeTriggeredCallback.timers[id].stopTimer(); +	}, +	 +	setInterval : function (id,value) +	{ +		if(Prado.WebUI.TTimeTriggeredCallback.timers[id]) +			Prado.WebUI.TTimeTriggeredCallback.timers[id].setInterval(value); +	} +}); + +Prado.WebUI.ActiveListControl = Base.extend( +{ +	constructor : function(options) +	{ +		this.element = $(options.ID); +		if(this.element) +		{ +			this.options = options; +			Event.observe(this.element, "change", this.doCallback.bind(this)); +		} +	}, + +	doCallback : function(event) +	{ +		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options); +		request.dispatch(); +		Event.stop(event); +	} +}); + +Prado.WebUI.TActiveDropDownList = Prado.WebUI.ActiveListControl; +Prado.WebUI.TActiveListBox = Prado.WebUI.ActiveListControl; + +/** + * Observe event of a particular control to trigger a callback request. + */ +Prado.WebUI.TEventTriggeredCallback = Base.extend( +{ +	constructor : function(options) +	{ +		this.options = options; +		var element = $(options['ControlID']); +		if(element) +			Event.observe(element, this.getEventName(element), this.doCallback.bind(this)); +	}, + +	getEventName : function(element) +	{ +		var name = this.options.EventName; +   		if(typeof(name) == "undefined" && element.type) +		{ +      		switch (element.type.toLowerCase()) +			{ +          		case 'password': +		        case 'text': +		        case 'textarea': +		        case 'select-one': +		        case 'select-multiple': +          			return 'change'; +      		} +		} +		return typeof(name) == "undefined"  || name == "undefined" ? 'click' : name; +    }, + +	doCallback : function(event) +	{ +		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options); +		request.dispatch(); +		if(this.options.StopEvent == true) +			Event.stop(event); +	} +}); + +/** + * Observe changes to a property of a particular control to trigger a callback. + */ +Prado.WebUI.TValueTriggeredCallback = Base.extend( +{ +	count : 1, + +	observing : true, + +	constructor : function(options) +	{ +		this.options = options; +		this.options.PropertyName = this.options.PropertyName || 'value'; +		var element = $(options['ControlID']); +		this.value = element ? element[this.options.PropertyName] : undefined; +		Prado.WebUI.TValueTriggeredCallback.register(this); +		this.startObserving(); +	}, + +	stopObserving : function() +	{ +		clearTimeout(this.timer); +		this.observing = false; +	}, + +	startObserving : function() +	{ +		this.timer = setTimeout(this.checkChanges.bind(this), this.options.Interval*1000); +	}, + +	checkChanges : function() +	{ +		var element = $(this.options.ControlID); +		if(element) +		{ +			var value = element[this.options.PropertyName]; +			if(this.value != value) +			{ +				this.doCallback(this.value, value); +				this.value = value; +				this.count=1; +			} +			else +				this.count = this.count + this.options.Decay; +			if(this.observing) +				this.time = setTimeout(this.checkChanges.bind(this), +					parseInt(this.options.Interval*1000*this.count)); +		} +	}, + +	doCallback : function(oldValue, newValue) +	{ +		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options); +		var param = {'OldValue' : oldValue, 'NewValue' : newValue}; +		request.setCallbackParameter(param); +		request.dispatch(); +	} +}, +//class methods +{ +	timers : {}, + +	register : function(timer) +	{ +		Prado.WebUI.TValueTriggeredCallback.timers[timer.options.ID] = timer; +	}, + +	stop : function(id) +	{ +		Prado.WebUI.TValueTriggeredCallback.timers[id].stopObserving(); +	} +});  | 
