| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | ///import core///import uicore///import ui/menu.js///import ui/splitbutton.js(function (){    // todo: menu和item提成通用list    var utils = baidu.editor.utils,        uiUtils = baidu.editor.ui.uiUtils,        Menu = baidu.editor.ui.Menu,        SplitButton = baidu.editor.ui.SplitButton,        Combox = baidu.editor.ui.Combox = function (options){            this.initOptions(options);            this.initCombox();        };    Combox.prototype = {        uiName: 'combox',        onbuttonclick:function () {            this.showPopup();        },        initCombox: function (){            var me = this;            this.items = this.items || [];            for (var i=0; i<this.items.length; i++) {                var item = this.items[i];                item.uiName = 'listitem';                item.index = i;                item.onclick = function (){                    me.selectByIndex(this.index);                };            }            this.popup = new Menu({                items: this.items,                uiName: 'list',                editor:this.editor,                captureWheel: true,                combox: this            });            this.initSplitButton();        },        _SplitButton_postRender: SplitButton.prototype.postRender,        postRender: function (){            this._SplitButton_postRender();            this.setLabel(this.label || '');            this.setValue(this.initValue || '');        },        showPopup: function (){            var rect = uiUtils.getClientRect(this.getDom());            rect.top += 1;            rect.bottom -= 1;            rect.height -= 2;            this.popup.showAnchorRect(rect);        },        getValue: function (){            return this.value;        },        setValue: function (value){            var index = this.indexByValue(value);            if (index != -1) {                this.selectedIndex = index;                this.setLabel(this.items[index].label);                this.value = this.items[index].value;            } else {                this.selectedIndex = -1;                this.setLabel(this.getLabelForUnknowValue(value));                this.value = value;            }        },        setLabel: function (label){            this.getDom('button_body').innerHTML = label;            this.label = label;        },        getLabelForUnknowValue: function (value){            return value;        },        indexByValue: function (value){            for (var i=0; i<this.items.length; i++) {                if (value == this.items[i].value) {                    return i;                }            }            return -1;        },        getItem: function (index){            return this.items[index];        },        selectByIndex: function (index){            if (index < this.items.length && this.fireEvent('select', index) !== false) {                this.selectedIndex = index;                this.value = this.items[index].value;                this.setLabel(this.items[index].label);            }        }    };    utils.inherits(Combox, SplitButton);})();
 |