this.base(arguments, shortcut);\r
this.setId(id);\r
this.setLabel(label);\r
- this.setIcon(icon); \r
+ this.setIcon(icon); \r
},\r
\r
members :\r
this.addTooltip(button);\r
if(this.getMenu()){\r
this.addListener("changeMenu", function(event){\r
- this.setMenu(event.getData());\r
- }, button);\r
+ button.setMenu(this.getMenuClone());\r
+ }, this);\r
+ this.menuClones = [];\r
}\r
return button;\r
},\r
* @return {qx.ui.menu.Menu}\r
*/\r
getMenuClone : function(){\r
- if(!this.menuClone){\r
- this.menuClone = new qx.ui.menu.Menu();\r
- this.menuClone.setMinWidth(110);\r
+ var menuClone = new qx.ui.menu.Menu();\r
+ var submenus = this.getMenu();\r
+ for(var i=0;i<submenus.length;i++){\r
+ var button = new qx.ui.menu.Button(submenus[i].label, submenus[i].icon);\r
+ button.setUserData("commandId", submenus[i].commandId);\r
+ button.addListener("execute", this.executeSubMenuCallback, this);\r
+ menuClone.add(button);\r
}\r
- return this.menuClone;\r
+ this.menuClones.push(menuClone);\r
+ return menuClone;\r
},\r
\r
/**\r
* Remove all existing menus and their clones.\r
*/\r
clearMenus : function(){\r
- this.getMenu().removeAll();\r
- this.getMenuClone().removeAll();\r
+ if(!this.getMenu()) return;\r
+ for(var i=0;i<this.menuClones.length;i++){\r
+ this.menuClones[i].destroy();\r
+ }\r
+ this.menuClones = [];\r
},\r
\r
/**\r
menu.add(button);\r
}else{\r
this.getMenu().add(button);\r
- this.addSubMenuButton(label, icon, commandId, this.menuClone);\r
}\r
},\r
\r
if(!definition.command){\r
command = new org.argeo.ria.event.Command(key, definition.label, definition.icon, definition.shortcut);\r
if(definition.submenu){\r
- var menu = new qx.ui.menu.Menu();\r
- command.setMenu(menu);\r
+ command.setMenu(definition.submenu);\r
if(definition.submenuCallback){\r
command.setMenuCallback(definition.submenuCallback);\r
command.setMenuContext((definition.callbackContext?definition.callbackContext:null));\r
}\r
command.setEnabled(definition.enabled);\r
command.addListener("execute", definition.callback, (definition.callbackContext?definition.callbackContext:this));\r
+ if(definition.init){\r
+ var binded = qx.lang.Function.bind(definition.init, command);\r
+ binded();\r
+ }\r
definition.command = command;\r
}else{\r
command = definition.command;\r