/* 实现下拉框逻辑,trigger图标 1.combobox: grid 2.date: datepicker 3.lov: 弹出url,弹出窗体 popupWindow 4.tree 实现autoComplete功能: popupCt:是一个box容器. */ /** @name Edo.controls.Trigger @class @typeName trigger @description 下拉弹出框 @extend Edo.controls.TextInput */ Edo.controls.Trigger = function(){ /** @name Edo.controls.Trigger#beforetrigger @event @domevent @description trigger图标点击前事件 */ /** @name Edo.controls.Trigger#trigger @event @domevent @description trigger图标点击事件 */ Edo.controls.Trigger.superclass.constructor.call(this); }; Edo.controls.Trigger.extend(Edo.controls.TextInput,{ enableResizePopup: true, /** @name Edo.controls.Trigger#maxHeight @property @default 500 */ maxHeight: 500, /** @name Edo.controls.Trigger#triggerPopup @property @type Boolean @default false @description 为true在按trigger图片的时候,自动显示 */ triggerPopup: false, triggerCls: 'e-trigger', triggerOverCls: 'e-trigger-over', triggerPressedCls: 'e-trigger-pressed', triggerVisible: true, initEvents: function(){ Edo.controls.Trigger.superclass.initEvents.call(this); if(!this.design){ Edo.util.Dom.on(this.el, 'mousedown', this._onTriggerMousedown, this); var el = this.trigger; Edo.util.Dom.addClassOnClick(el, this.triggerPressedCls); Edo.util.Dom.addClassOnOver(el, this.triggerOverCls); } }, _onTriggerMousedown: function(e){ if(this.readOnly || e.within(this.trigger)){ this._onTrigger.defer(1, this, [e]); } }, _onTrigger: function(e){ e.stopDefault(); if(!this.isEnable()) return; if(e.button != Edo.util.MouseButton.left) return; e.type = 'beforetrigger'; e.source = this; if(this.fireEvent('beforetrigger', e) === false) return; if(this.triggerPopup){ if(this.popupDisplayed){ this.hidePopup(); }else{ this.showPopup(); } } //this.focus(); this.focus.defer(50, this);//这行代码真恶心.. //this.field.focus(); // var sf = this; // setTimeout(function(){ // sf.field.focus(); // }, 100); e.type = 'trigger'; this.fireEvent('trigger', { type: 'trigger', source: this }); }, // setEnable: function(value){ // Edo.controls.Trigger.superclass.setEnable.call(this, value); // if(this.trigger){ // if(this.isEnable()){ // Edo.util.Dom.removeClass(this.trigger, "e-disabled"); // }else{ // Edo.util.Dom.addClass(this.trigger, "e-disabled"); // } // } // }, getTriggerHtml: function(){ return '
'; }, getInnerHtml: function(sb){ Edo.controls.Trigger.superclass.getInnerHtml.call(this, sb); sb[sb.length] = '
'; sb[sb.length] = this.getTriggerHtml(); sb[sb.length] = '
'; }, createChildren: function(el){ Edo.controls.Trigger.superclass.createChildren.call(this, el); this.trigger = this.field.nextSibling; }, syncSize: function(){ //设置组件尺寸,并设置容器子元素的所有尺寸! Edo.controls.Trigger.superclass.syncSize.call(this); if(this.triggerVisible){ this.trigger.style.display = 'block'; Edo.util.Dom.setHeight(this.trigger, this.realHeight - 4); }else{ this.trigger.style.display = 'none'; } }, triggerWidth: 19, getFieldWidth: function(){ return this.realWidth - (this.triggerVisible ? this.triggerWidth : 0); }, destroy : function(){ Edo.util.Dom.clearEvent(this.trigger); Edo.util.Dom.remove(this.trigger); this.trigger = null; Edo.controls.Trigger.superclass.destroy.call(this); } }); Edo.controls.Trigger.regType('trigger');