X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.webapp%2Fsrc%2Fmain%2Fwebapp%2Fargeo-ria-src%2Fclass%2Forg%2Fargeo%2Fria%2Fcomponents%2FViewsManager.js;h=56420d3b952afef236fc0d0feabf8f8f1949392c;hb=81d7470df58e4d921fea676145b6fd7a477f7248;hp=2b0815d5ecddc7b94857d0cb2c6bafc5e1867a67;hpb=a10c083ba5bde2d7ebb466153c99858247ddb0aa;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewsManager.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewsManager.js index 2b0815d5e..56420d3b9 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewsManager.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewsManager.js @@ -18,7 +18,8 @@ qx.Class.define("org.argeo.ria.components.ViewsManager", /** * The main container for the org.argeo.ria.components.ViewPane instances. */ - viewPanesContainer : {init: null} + viewPanesContainer : {init: null}, + currentFocus : {init :null} }, construct : function(){ this.views = {}; @@ -32,17 +33,20 @@ qx.Class.define("org.argeo.ria.components.ViewsManager", * @param viewPaneId {String} The unique ID of the view pane * @return {org.argeo.ria.components.IView} */ - initIViewClass: function(classObj, viewPaneId){ - //var iView = eval("new "+iViewClass+"()"); - //var classObj = qx.Class.getByName(iViewClass); + initIViewClass: function(classObj, viewPaneId, data){ + var viewPane = this.getViewPaneById(viewPaneId); var iView = new classObj; - var viewPane = this.getViewPaneById(viewPaneId); - iView.init(viewPane); + iView.init(viewPane, data); + var existingView = viewPane.contentExists(iView.getInstanceId()); + if(existingView){ + delete iView; + return existingView; + } var commands = iView.getCommands(); - viewPane.empty(); + //viewPane.empty(); if(commands){ viewPane.setCommands(commands); - org.argeo.ria.event.CommandsManager.getInstance().addCommands(commands, iView); + org.argeo.ria.event.CommandsManager.getInstance().addCommands(commands, "view:"+viewPaneId, viewPaneId); } viewPane.setContent(iView); return iView; @@ -54,9 +58,18 @@ qx.Class.define("org.argeo.ria.components.ViewsManager", */ registerViewPane : function(viewPane){ this.views[viewPane.getViewId()] = viewPane; - viewPane.getViewSelection().addListener("changeSelection", function(e){ - org.argeo.ria.event.CommandsManager.getInstance().refreshCommands(e.getData()); - }); + viewPane.addListener("changeSelection", function(e){ + var viewSelection = e.getTarget().getViewSelection(); + if(!viewSelection) return; + org.argeo.ria.event.CommandsManager.getInstance().refreshCommands(viewSelection); + }); + viewPane.addListener("changeFocus", function(e){ + for(var key in this.views){ + this.views[key].blur(); + } + viewPane.focus(); + this.setCurrentFocus(viewPane); + }, this); }, /** * Returns a viewPane by its unique id.