|
|
- define(["sugar-web/graphics/palette",
- "text!sugar-web/graphics/menupalette.html", "mustache"], function (palette, template, mustache) {
-
- 'use strict';
-
- var menupalette = {};
-
- menupalette.MenuPalette = function (invoker, primaryText, menuData) {
- palette.Palette.call(this, invoker, primaryText);
-
- this.selectItemEvent = document.createEvent("CustomEvent");
- this.selectItemEvent.initCustomEvent('selectItem', true, true, {
- 'item': undefined
- });
-
- var menuElem = document.createElement('ul');
- menuElem.className = "menu";
- menuElem.innerHTML = mustache.render(template, menuData);
- this.setContent([menuElem]);
-
- // Pop-down the palette when a item in the menu is clicked.
-
- this.buttons = menuElem.querySelectorAll('button');
-
- var that = this;
-
- function popDownOnButtonClick(event) {
- that.selectItemEvent.detail.target = event.target;
- that.getPalette().dispatchEvent(that.selectItemEvent);
- that.popDown();
- }
-
- for (var i = 0; i < this.buttons.length; i++) {
- this.buttons[i].addEventListener('click', popDownOnButtonClick);
- }
- };
-
- var addEventListener = function (type, listener, useCapture) {
- return this.getPalette().addEventListener(type, listener, useCapture);
- };
-
- menupalette.MenuPalette.prototype =
- Object.create(palette.Palette.prototype, {
- addEventListener: {
- value: addEventListener,
- enumerable: true,
- configurable: true,
- writable: true
- }
- });
-
- return menupalette;
- });
|