From 5bc630adc380002ccf3fc364e97d74d06b893a07 Mon Sep 17 00:00:00 2001 From: Andrew Mac Date: Thu, 22 Jan 2015 16:45:55 -0400 Subject: [PATCH] Simple system for specifying functions as menu items. Example usage: var mbar = new zebra.ui.Menubar({ "Item 1": { "Subitem 1.1":null, "Subitem 1.2": function() { console.log("Item Pressed!"); }, "Subitem 1.3":null } }); --- src/ui.window.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ui.window.js b/src/ui.window.js index 9aa619b6..09f6d37d 100755 --- a/src/ui.window.js +++ b/src/ui.window.js @@ -1333,7 +1333,8 @@ pkg.Menu = Class(pkg.CompList, [ function () { this.menus = {}; - + this.functions = {}; + /** * Dictionary to keep decorative components * @attribute decoratives @@ -1363,7 +1364,10 @@ pkg.Menu = Class(pkg.CompList, [ var sub = d[k]; this.add(k); if (sub != null) { - this.setMenuAt(this.kids.length-1, zebra.instanceOf(sub, pkg.Menu) ? sub : new pkg.Menu(sub)); + if (typeof(sub) == "function") + this.functions[this.kids.length - 1] = sub; + else + this.setMenuAt(this.kids.length-1, zebra.instanceOf(sub, pkg.Menu) ? sub : new pkg.Menu(sub)); } } } @@ -1479,6 +1483,10 @@ pkg.Menu = Class(pkg.CompList, [ if (k.itemSelected != null) { k.itemSelected(); } + + var func = this.functions[this.selectedIndex]; + if ( func ) + func(); // an atomic menu, what means a menu item has been selected // remove this menu an all parents menus @@ -2141,4 +2149,4 @@ pkg.WindowTitleView = Class(pkg.View, [ * @for */ -})(zebra("ui"), zebra.Class); \ No newline at end of file +})(zebra("ui"), zebra.Class);