Source: form/Button.js

/**
 * Created with IntelliJ IDEA.
 * User: seeker910
 * Date: 13-10-24
 * Time: 下午10:22
 * To change this template use File | Settings | File Templates.
 *  
 * button 有两种方案:
 * 1 - <input type="button" value='点击我'></input>
 * 2 - <button>点击我</button>
 * */
Rsd.define('Rsd.form.Button', {
    extend: 'Rsd.control.Component',
    xtype: 'button',
    domTagName:'div', 
    ctrlTagName:'button', 
    labelTagName:'svg',
    height: 30,
    margin:'1 3 1 3',
    width: 80,
    label:{visible:false},
    ctrlCls: 'x-control-button',
    /*
    * 延时执行的时间,毫秒
    * */
    delayMS:0,
    type:'button',
    /*
    * */
    constructor: function constructor(config) {
        config = config || {};
        this.apply(config);
    },
    /**
     * 
     */
    initComponentEx: function initComponentEx() {
        this.callParent();
        if(this.text)
        {
            this.ctrl.element.appendChild(document.createTextNode(this.text));
        }
       
        this.ctrl.element.setAttribute('type',this.type||'button');
    },
    /*
    *
    * */
    beforeClick:function beforeClick(args) {

        var me = this;

        var _timer = me.delayMS;

        if(_timer > 0)
        {
            var _ctrl = this.ctrl.element;
            var __old_value = _ctrl.value;

            _ctrl.value = __old_value + '('+_timer/1000+')';
            me.setDisabled(true);

            var _id = setInterval(function () {
                _timer-= 1000;
                if(_timer > 0)
                {
                    _ctrl.value = __old_value + '('+_timer/1000+')';

                }else
                {
                    _ctrl.value = __old_value;
                    me.setDisabled(false);
                    clearInterval(_id);
                    return ;
                }


            },1000);
        }


        return true;
    },
    /*
    *
    * */
    makeControl:function makeControl(config,row)
    {           //debugger;
        var _config = config ||{};
        var _editable = _config.editable;
        var _value = row[config.dataIndex||config.name] || config.text;

        var _ctrl = null;
        if(_editable)
        {
            _ctrl = document.createElement('input');//表格中 使用 input.type = button
            _ctrl.type= 'button';
            _ctrl.style.width = '80%';
            _ctrl.value = _value || 'Click';
            _ctrl.onclick = function _onClick()
            {

                if(Rsd.isFunction(config.handler))
                {
                    config.handler.call(_ctrl,row);

                }else
                {
                    Rsd.log('handler value is not function.');
                }
            }
        }
        else
        {
            if(_value== null || _value == undefined || _value == '')
            {
                return _ctrl;
            }
            _ctrl = document.createElement('label');
            _ctrl.appendChild(document.createTextNode(_value));
            _ctrl.style.position = 'relative';
            _ctrl.style.width = '100%';
            _ctrl.style.height = '100%';
        }
        return _ctrl;
    }

},function (type) {

    var _textGetter = function () {
        return  this.__text;
    };

    var _textSetter = function (value) {
        this.__text = value;
        if(this.ctrl.element)
        {
            this.ctrl.element.appendChild(document.createTextNode(value));
        }
        
    };
    this.defineProperty(type,"text", _textGetter, _textSetter,true);

    var _valueGetter = function () {
        return this.ctrl.element.value||this.__text;
    };

    var _valueSetter = function (value) {

        this.__value = value; 
        if(Rsd.isEmpty(this.text))
        { 
                this.text = value;
        }
        
    };
    this.defineProperty(type,"value", _valueGetter, _valueSetter,true);

});