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