define(["sugar-web/graphics/palette"], function (palette) { 'use strict'; var listpalette = {}; listpalette.Listpalette = function (invoker, primaryText, menuData) { palette.Palette.call(this, invoker, primaryText); this.listEvent = document.createEvent("CustomEvent"); this.listEvent.initCustomEvent('list', true, true, {}); this.remoteEvent = document.createEvent("CustomEvent"); this.remoteEvent.initCustomEvent('remote', true, true, {}); var that = this; that.categories = []; that.buttons = []; this.setCategories = function( newcategories) { this.categories = newcategories; this.buttons = []; var div = document.createElement('div'); for (var i = 0 ; i < newcategories.length ; i++) { var newbutton = document.createElement('button'); newbutton.className = 'toolbutton palette-button palette-button-notselected'; newbutton.setAttribute('id', newcategories[i].id); newbutton.setAttribute('title', newcategories[i].title); var url = "url(icons/"+newcategories[i].cmd+".svg)"; newbutton.style.backgroundImage = url; var newid = newcategories[i].id; newbutton.onclick = function() { that.setList(this.id); } this.buttons.push(newbutton); div.appendChild(newbutton); } this.setContent([div]); } this.setList = function(newlist) { var currentList = this.getList(); var noList = (currentList.length != 0 && currentList == newlist); var listIndex = -1; for (var i = 0 ; i < this.categories.length ; i++) { if (this.categories[i].id == newlist) { listIndex = i; break; } } if (listIndex == -1) { return; } for (var i = 0 ; i < this.buttons.length ; i++) { this.buttons[i].className = 'toolbutton palette-button palette-button-notselected'; } if (noList) { this.getPalette().dispatchEvent(this.listEvent); return; } this.buttons[listIndex].className = 'toolbutton palette-button palette-button-selected'; that.getPalette().dispatchEvent(that.listEvent); } }; var addEventListener = function (type, listener, useCapture) { return this.getPalette().addEventListener(type, listener, useCapture); }; listpalette.Listpalette.prototype = Object.create(palette.Palette.prototype, { addEventListener: { value: addEventListener, enumerable: true, configurable: true, writable: true } }); listpalette.Listpalette.prototype.setCategories = function(newcategories) { this.setCategories(newcategories); } listpalette.Listpalette.prototype.setList = function(newlist) { this.setList(newlist); } listpalette.Listpalette.prototype.getList = function() { for (var i = 0 ; i < this.buttons.length ; i++) { if (this.buttons[i].className == 'toolbutton palette-button palette-button-selected') return this.categories[i].id; } return ""; } return listpalette; });