///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( '
' ) ); popup.getDom().className += " " + this.className; }, this) ); this.popup = popup; }, _onPopupShow: function() { this.addState("opened"); }, _onPopupHide: function() { this.removeState("opened"); }, getHtmlTpl: function() { return ( '
' + "
' + '
' + '
' + "
" + '
' + '
' + "
" ); }, 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); })();