| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | ///import core///import uicore///import ui/stateful.js(function (){    var utils = baidu.editor.utils,        uiUtils = baidu.editor.ui.uiUtils,        domUtils = baidu.editor.dom.domUtils,        UIBase = baidu.editor.ui.UIBase,        Stateful = baidu.editor.ui.Stateful,        SplitButton = baidu.editor.ui.SplitButton = function (options){            this.initOptions(options);            this.initSplitButton();        };    SplitButton.prototype = {        popup: null,        uiName: 'splitbutton',        title: '',        initSplitButton: function (){            this.initUIBase();            this.Stateful_init();            var me = this;            if (this.popup != null) {                var popup = this.popup;                this.popup = null;                this.setPopup(popup);            }        },        _UIBase_postRender: UIBase.prototype.postRender,        postRender: function (){            this.Stateful_postRender();            this._UIBase_postRender();        },        setPopup: function (popup){            if (this.popup === popup) return;            if (this.popup != null) {                this.popup.dispose();            }            popup.addListener('show', utils.bind(this._onPopupShow, this));            popup.addListener('hide', utils.bind(this._onPopupHide, this));            popup.addListener('postrender', utils.bind(function (){                popup.getDom('body').appendChild(                    uiUtils.createElementByHtml('<div id="' +                        this.popup.id + '_bordereraser" class="edui-bordereraser edui-background" style="width:' +                        (uiUtils.getClientRect(this.getDom()).width + 20) + 'px"></div>')                    );                popup.getDom().className += ' ' + this.className;            }, this));            this.popup = popup;        },        _onPopupShow: function (){            this.addState('opened');        },        _onPopupHide: function (){            this.removeState('opened');        },        getHtmlTpl: function (){            return '<div id="##" class="edui-box %%">' +                '<div '+ (this.title ? 'title="' + this.title + '"' : '') +' id="##_state" stateful><div class="%%-body">' +                '<div id="##_button_body" class="edui-box edui-button-body" onclick="$$._onButtonClick(event, this);">' +                '<div class="edui-box edui-icon"></div>' +                '</div>' +                '<div class="edui-box edui-splitborder"></div>' +                '<div class="edui-box edui-arrow" onclick="$$._onArrowClick();"></div>' +                '</div></div></div>';        },        showPopup: function (){            // 当popup往上弹出的时候,做特殊处理            var rect = uiUtils.getClientRect(this.getDom());            rect.top -= this.popup.SHADOW_RADIUS;            rect.height += this.popup.SHADOW_RADIUS;            this.popup.showAnchorRect(rect);        },        _onArrowClick: function (event, el){            if (!this.isDisabled()) {                this.showPopup();            }        },        _onButtonClick: function (){            if (!this.isDisabled()) {                this.fireEvent('buttonclick');            }        }    };    utils.inherits(SplitButton, UIBase);    utils.extend(SplitButton.prototype, Stateful, true);})();
 |