/**\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
* \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
- //var iView = eval("new "+iViewClass+"()");\r
- //var classObj = qx.Class.getByName(iViewClass);\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
*/\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