]> 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
Changed architecture to enable TabViewPane and sharing actions in the toolbar, depend...
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-src / class / org / argeo / ria / components / ViewsManager.js
index 689e61b356f8ee9460fbb71d933a34521498e21c..56420d3b952afef236fc0d0feabf8f8f1949392c 100644 (file)
@@ -18,7 +18,8 @@ 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
+       currentFocus : {init :null}\r
   },\r
   construct : function(){\r
        this.views = {};\r
@@ -32,15 +33,20 @@ qx.Class.define("org.argeo.ria.components.ViewsManager",
         * @param viewPaneId {String} The unique ID of the view pane\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, "view:"+viewPaneId);\r
+                       org.argeo.ria.event.CommandsManager.getInstance().addCommands(commands, "view:"+viewPaneId, viewPaneId);\r
                }\r
                viewPane.setContent(iView); \r
                return iView;\r
@@ -52,9 +58,18 @@ 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
+                       for(var key in this.views){\r
+                               this.views[key].blur();\r
+                       }\r
+                       viewPane.focus();\r
+                       this.setCurrentFocus(viewPane);\r
+               }, this);\r
        },\r
        /**\r
         * Returns a viewPane by its unique id.\r