]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewsManager.js
API DOCUMENTATION
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-src / class / org / argeo / ria / components / ViewsManager.js
index 5a1da280ae5e7bdb710b240a848300b0277f803d..225bc693bca4ee9b6d7b28d1657eb5c3b5dbfe21 100644 (file)
@@ -18,7 +18,11 @@ qx.Class.define("org.argeo.ria.components.ViewsManager",
        /**\r
         * The main container for the org.argeo.ria.components.ViewPane instances. \r
         */\r
-       viewPanesContainer : {init: null}\r
+       viewPanesContainer : {init: null},\r
+       /**\r
+        * Keeps the currently focused viewPane. \r
+        */\r
+       currentFocus : {init :null}\r
   },\r
   construct : function(){\r
        this.views = {};\r
@@ -30,19 +34,26 @@ qx.Class.define("org.argeo.ria.components.ViewsManager",
         * \r
         * @param classObj {Clazz} The class object to instantiate\r
         * @param viewPaneId {String} The unique ID of the view pane\r
+        * @param data {Mixed} Any data provided by the opener.\r
         * @return {org.argeo.ria.components.IView}\r
         */\r
-       initIViewClass: function(classObj, viewPaneId){\r
+       initIViewClass: function(classObj, viewPaneId, data){\r
+               var viewPane = this.getViewPaneById(viewPaneId);                \r
                var iView = new classObj;\r
-               var viewPane = this.getViewPaneById(viewPaneId);\r
-               iView.init(viewPane);           \r
+               iView.init(viewPane, data);\r
+               var existingView = viewPane.contentExists(iView.getInstanceId()); \r
+               if(existingView){\r
+                       delete iView;\r
+                       return existingView;\r
+               }\r
                var commands = iView.getCommands();\r
-               viewPane.empty();\r
+               //viewPane.empty();\r
                if(commands){\r
                        viewPane.setCommands(commands);\r
-                       org.argeo.ria.event.CommandsManager.getInstance().addCommands(commands, iView);\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
@@ -52,9 +63,25 @@ qx.Class.define("org.argeo.ria.components.ViewsManager",
         */\r
        registerViewPane : function(viewPane){\r
                this.views[viewPane.getViewId()] = viewPane;\r
-               viewPane.getViewSelection().addListener("changeSelection", function(e){\r
-                       org.argeo.ria.event.CommandsManager.getInstance().refreshCommands(e.getData());\r
-               });             \r
+               viewPane.addListener("changeSelection", function(e){\r
+                       var viewSelection = e.getTarget().getViewSelection();\r
+                       if(!viewSelection) return;\r
+                       org.argeo.ria.event.CommandsManager.getInstance().refreshCommands(viewSelection);\r
+               });\r
+               viewPane.addListener("changeFocus", function(e){\r
+                       this.setViewPaneFocus(e.getTarget());\r
+               }, this);\r
+       },\r
+       /**\r
+        * Sets a given viewPane as the currently focused one. Blur the others.\r
+        * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane (or TabbedViewPane) to focus on.\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