* Weather this command is a true/false state \r
*/\r
toggle : {init:false},\r
+ /**\r
+ * It toggle button, initial state \r
+ */\r
+ toggleInitialState : {init : false},\r
/**\r
* Sub menu if needed \r
*/\r
this.setLabel(label);\r
this.setIcon(icon); \r
this.menuClones = [];\r
+ this.callbacks = {};\r
},\r
\r
members :\r
button.setEnabled(this.getEnabled());\r
}else if(this.getToggle()){\r
button = new qx.ui.toolbar.CheckBox(this.getLabel(), this.getIcon());\r
+ if(this.getToggleInitialState()){\r
+ button.setChecked(true);\r
+ }\r
this._registerToggleButtonListeners(button);\r
}else{\r
button = new qx.ui.toolbar.Button(\r
this.addTooltip(button);\r
return button;\r
},\r
- \r
+ \r
+ /**\r
+ * Register a given callback to be shared by one or more focusable part.\r
+ * @param callback {Function} A callback function\r
+ * @param focusablePartId {String} A string identifiing a focusable part. At the moment, it can only be "view:viewId"\r
+ */\r
+ registerCallback : function(callback, focusablePartId){\r
+ this.callbacks[focusablePartId] = callback;\r
+ },\r
+ /**\r
+ * Return all the registered callbacks for this command.\r
+ * @return {Map} A map of callback, viewId => callBack.\r
+ */\r
+ getCallbacks : function(){\r
+ return this.callbacks;\r
+ },\r
+ /**\r
+ * Remove a callback for a given focusable part.\r
+ * @param focusablePartId {String} A id like "view:viewId".\r
+ */\r
+ removeCallback : function(focusablePartId){\r
+ if(this.callbacks[focusablePartId]){\r
+ delete this.callbacks[focusablePartId];\r
+ }\r
+ }, \r
+ \r
/**\r
* Special tricks using UserData to enable/disable listeners to avoid loops...\r
* @param button {qx.ui.core.Widget} toolbar Checkbox or menu Checkbox button.\r
this.fireEvent("execute");\r
}, this);\r
this.addListener("execute", function(event){\r
- if(this.getUserData("slc;command.toggleStateSource") == button) return;\r
+ if(this.getUserData("slc.command.toggleStateSource") == button) return;\r
button.setUserData("disableListener", true);\r
button.setChecked(this.getUserData("slc.command.toggleState"));\r
button.setUserData("disableListener", false);\r
executeSubMenuCallback : function(event){\r
var button = event.getTarget();\r
var callback = this.getMenuCallback();\r
- callback = qx.lang.Function.bind(callback, this.getMenuContext() || this);\r
+ var context;\r
+ if(this.getMenuContext()){\r
+ if(typeof(this.getMenuContext()) == "object") context = this.getMenuContext();\r
+ else if(typeof(this.getMenuContext()) == "string"){\r
+ if(this.getMenuContext().split(":")[0] == "view"){\r
+ var viewId = this.getMenuContext().split(":")[1];\r
+ context = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById(viewId).getContent();\r
+ }\r
+ }\r
+ }\r
+ callback = qx.lang.Function.bind(callback, context || this);\r
callback(button.getUserData("commandId")); \r
}, \r
/**\r