123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- ///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);
- })();
|