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 - 2) + '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);
- })();
|