function _selectToolbar(name, fn) { var self = this, knode = self.get(name); if (knode) { if (knode.hasClass('ke-disabled')) { return; } fn(knode); } } // create KToolbar class function KToolbar(options) { this.init(options); } _extend(KToolbar, KWidget, { init : function(options) { var self = this; KToolbar.parent.init.call(self, options); self.disableMode = _undef(options.disableMode, false); self.noDisableItemMap = _toMap(_undef(options.noDisableItems, [])); self._itemMap = {}; self.div.addClass('ke-toolbar').bind('contextmenu,mousedown,mousemove', function(e) { e.preventDefault(); }).attr('unselectable', 'on'); function find(target) { var knode = K(target); if (knode.hasClass('ke-outline')) { return knode; } if (knode.hasClass('ke-toolbar-icon')) { return knode.parent(); } } function hover(e, method) { var knode = find(e.target); if (knode) { if (knode.hasClass('ke-disabled')) { return; } if (knode.hasClass('ke-selected')) { return; } knode[method]('ke-on'); } } self.div.mouseover(function(e) { hover(e, 'addClass'); }) .mouseout(function(e) { hover(e, 'removeClass'); }) .click(function(e) { var knode = find(e.target); if (knode) { if (knode.hasClass('ke-disabled')) { return; } self.options.click.call(this, e, knode.attr('data-name')); } }); }, get : function(name) { // cache if (this._itemMap[name]) { return this._itemMap[name]; } return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent()); }, select : function(name) { _selectToolbar.call(this, name, function(knode) { knode.addClass('ke-selected'); }); return self; }, unselect : function(name) { _selectToolbar.call(this, name, function(knode) { knode.removeClass('ke-selected').removeClass('ke-on'); }); return self; }, enable : function(name) { var self = this, knode = name.get ? name : self.get(name); if (knode) { knode.removeClass('ke-disabled'); knode.opacity(1); } return self; }, disable : function(name) { var self = this, knode = name.get ? name : self.get(name); if (knode) { knode.removeClass('ke-selected').addClass('ke-disabled'); knode.opacity(0.5); } return self; }, disableAll : function(bool, noDisableItems) { var self = this, map = self.noDisableItemMap, item; if (noDisableItems) { map = _toMap(noDisableItems); } // disable toolbar if (bool === undefined ? !self.disableMode : bool) { K('span.ke-outline', self.div).each(function() { var knode = K(this), name = knode[0].getAttribute('data-name', 2); if (!map[name]) { self.disable(knode); } }); self.disableMode = true; // enable toolbar } else { K('span.ke-outline', self.div).each(function() { var knode = K(this), name = knode[0].getAttribute('data-name', 2); if (!map[name]) { self.enable(knode); } }); self.disableMode = false; } return self; } }); function _toolbar(options) { return new KToolbar(options); } K.ToolbarClass = KToolbar; K.toolbar = _toolbar;