text: ///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',
          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
              });
              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);
  })();
  