]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Fix various problems with focus management
authorCharles du Jeu <charles.dujeu@gmail.com>
Mon, 26 Jan 2009 09:42:59 +0000 (09:42 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Mon, 26 Jan 2009 09:42:59 +0000 (09:42 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2129 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/Applet.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/TabbedViewPane.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewPane.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewsManager.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/event/CommandsManager.js

index b23d072fc034119651ab70fe3d0862a5288f4832..753fe2578e032cead829b9d0bb272413d26c4ea3 100644 (file)
@@ -58,7 +58,8 @@ qx.Class.define("org.argeo.slc.ria.Applet",
                        "deletetest" : {
                                shared          : true,
                                callback        : function(e){
-                                       alert("Should delete applet selection" + this.getInstanceId());
+                                       //this.debug(this);
+                                       alert("Should delete applet selection in " + this.getInstanceId());
                                },
                                selectionChange : function(viewId, xmlNode){
                                        if(viewId != "applet") return;
@@ -232,11 +233,12 @@ qx.Class.define("org.argeo.slc.ria.Applet",
                        if(nodes.length){
                                viewSelection.addNode(nodes[0]);
                        }
+                       this.getView().focus();
                }, this);
                
                var contextMenu = org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["close"]);
                this.tree.setContextMenu(contextMenu);
-               
+                               
        },
        
        /**
index c5ed23ada0c278b4f9a62b71da8e89c422098e4b..f55a04d0223960a7a1450bf942569b7245840f8e 100644 (file)
@@ -129,10 +129,13 @@ qx.Class.define("org.argeo.ria.components.TabbedViewPane",
                        \r
                },\r
                focus : function(){\r
+                       if(this.hasFocus) return;\r
                        this.fireEvent("changeSelection");\r
                        this.setDecorator(this.focusedDecorator);\r
+                       this.hasFocus = true;\r
                }, \r
                blur : function(){\r
+                       this.hasFocus = false;\r
                        this.setDecorator(this.blurredDecorator);\r
                }\r
        }\r
index bc7c8daa0a82e8cb455a2edabbe06e3678660b9f..174174a7cc6b004f089665b2643bbc5045cba13c 100644 (file)
@@ -207,12 +207,13 @@ qx.Class.define("org.argeo.ria.components.ViewPane",
        },
        
        focus : function(){
+               if(this.hasFocus) return;
                this.setDecorator(new qx.ui.decoration.Single(1,"solid","#065fb2"));
-               qx.event.Timer.once(function(){
-                       this.fireEvent("changeSelection");
-               }, this, 200);
+               this.fireEvent("changeSelection");
+               this.hasFocus = true;
        }, 
        blur : function(){
+               this.hasFocus = false;
                this.setDecorator(new qx.ui.decoration.Single(1,"solid","#000"));
        }
 
index 56420d3b952afef236fc0d0feabf8f8f1949392c..6ac3f2efab485b7e2ef2e3d238e835dd5afaba4d 100644 (file)
@@ -48,7 +48,8 @@ qx.Class.define("org.argeo.ria.components.ViewsManager",
                        viewPane.setCommands(commands);\r
                        org.argeo.ria.event.CommandsManager.getInstance().addCommands(commands, "view:"+viewPaneId, viewPaneId);\r
                }\r
-               viewPane.setContent(iView); \r
+               viewPane.setContent(iView);\r
+               this.setViewPaneFocus(viewPane);\r
                return iView;\r
        },\r
        \r
@@ -64,13 +65,16 @@ qx.Class.define("org.argeo.ria.components.ViewsManager",
                        org.argeo.ria.event.CommandsManager.getInstance().refreshCommands(viewSelection);\r
                });\r
                viewPane.addListener("changeFocus", function(e){\r
-                       for(var key in this.views){\r
-                               this.views[key].blur();\r
-                       }\r
-                       viewPane.focus();\r
-                       this.setCurrentFocus(viewPane);\r
+                       this.setViewPaneFocus(e.getTarget());\r
                }, this);\r
        },\r
+       setViewPaneFocus : function(viewPane){\r
+               for(var key in this.views){\r
+                       this.views[key].blur();\r
+               }\r
+               this.setCurrentFocus(viewPane);\r
+               viewPane.focus();               \r
+       },\r
        /**\r
         * Returns a viewPane by its unique id.\r
         * @param viewPaneId {String} The unique id\r
index 6452a3a87f313761fed6a9bf8670ef52ff2b5f6e..324a13cdf36afa2fb2749046291756e05bbf077a 100644 (file)
@@ -185,6 +185,7 @@ qx.Class.define("org.argeo.ria.event.CommandsManager",
                        if(!definition.selectionChange) continue;\r
                        if(shared[key]){\r
                                var currentFocus = org.argeo.ria.components.ViewsManager.getInstance().getCurrentFocus();\r
+                               //this.debug(currentFocus);\r
                                if(!currentFocus) continue;\r
                                var sharedComm = shared[key][currentFocus.getViewId()];\r
                                if(sharedComm && sharedComm.selectionChange){\r
@@ -409,6 +410,8 @@ qx.Class.define("org.argeo.ria.event.CommandsManager",
                                }\r
                                var currentFocus = org.argeo.ria.components.ViewsManager.getInstance().getCurrentFocus();\r
                                if(currentFocus && currentFocus.getViewId() && callbacks[currentFocus.getViewId()]){\r
+                                       var currentViewId = currentFocus.getViewId();\r
+                                       view = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById(currentViewId).getContent();\r
                                        var binded = qx.lang.Function.bind(callbacks[currentFocus.getViewId()], view);\r
                                        binded(event);\r
                                        return;\r