/** * 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 0) this.updateChoices(result); } }); /** * 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) { Prado.WebUI.TTimeTriggeredCallback.timers[id].startTimer(); }, stop : function(id) { Prado.WebUI.TTimeTriggeredCallback.timers[id].stopTimer(); } }); Prado.WebUI.ActiveListControl = Base.extend( { constructor : function(options) { this.element = $(options.ID); 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(); } });