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;
|
|
});
|