]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/event/Command.js
Make modal window optionally "persistent" (not destroied when hidden, and accumulate...
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-src / class / org / argeo / ria / event / Command.js
index 7516db5367194fb2c7c303a25f99d219a76cb6dc..77abef851b132498c7de63304894f156e2091d12 100644 (file)
         * 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
@@ -54,6 +58,7 @@
        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