Index: lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceDialog.as =================================================================== diff -u -r89e44dc270cefcca4b388db0e9555177977ff8e5 -rd3e9c67bfdf5bd6928933d858c23a6bd7941115e --- lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceDialog.as (.../WorkspaceDialog.as) (revision 89e44dc270cefcca4b388db0e9555177977ff8e5) +++ lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceDialog.as (.../WorkspaceDialog.as) (revision d3e9c67bfdf5bd6928933d858c23a6bd7941115e) @@ -6,6 +6,7 @@ import org.lamsfoundation.lams.common.util.* import org.lamsfoundation.lams.common.dict.* import org.lamsfoundation.lams.common.style.* +import it.sephiroth.XML2Object /** * @author DI @@ -28,6 +29,10 @@ private var fm:FocusManager; //Reference to focus manager private var themeManager:ThemeManager; //Theme manager + + private var _workspaceView:WorkspaceView; + + //Dimensions for resizing private var xOkOffset:Number; @@ -59,15 +64,14 @@ /** * Called a frame after movie attached to allow components to initialise */ - private function init(){ + private function init(){ //Delete the enterframe dispatcher delete this.onEnterFrame; //TODO DI 25/05/05 ID set as 1 is just a stub, selected id from dialog should replace //_selectedDesignId = 1; - //Set up the treeview - setUpTreeview(); + //set the reference to the StyleManager themeManager = ThemeManager.getInstance(); @@ -97,8 +101,10 @@ _container.addEventListener('click',this); //Register for LFWindow size events _container.addEventListener('size',this); + + - Debugger.log('setting offsets',Debugger.GEN,'init','org.lamsfoundation.lams.common.ws.WorkspaceDialog'); + //Debugger.log('setting offsets',Debugger.GEN,'init','org.lamsfoundation.lams.common.ws.WorkspaceDialog'); //work out offsets from bottom RHS of panel xOkOffset = panel._width - ok_btn._x; @@ -108,11 +114,71 @@ //Register as listener with StyleManager and set Styles themeManager.addEventListener('themeChanged',this); - setStyles(); + //TODO: Make setStyles more efficient + //setStyles(); //Fire contentLoaded event, this is required by all dialogs so that creator of LFWindow can know content loaded _container.contentLoaded(); } + + /** + * Called by the worspaceView after the content has loaded + * @usage + * @return + */ + public function setUpContent():Void{ + + + //register to recive updates form the model + WorkspaceModel(_workspaceView.getModel()).addEventListener('viewUpdate',this); + + //Set up the treeview + setUpTreeview(); + + } + + /** + * Recieved update events from the WorkspaceModel. Dispatches to relevent handler depending on update.Type + * @usage + * @param event + */ + public function viewUpdate(event:Object):Void{ + Debugger.log('Recived an Event dispather UPDATE!, updateType:'+event.updateType+', target'+event.target,4,'viewUpdate','WorkspaceView'); + //Update view from info object + //Debugger.log('Recived an UPDATE!, updateType:'+infoObj.updateType,4,'update','CanvasView'); + var wm:WorkspaceModel = event.target; + //set a ref to the controller for ease (sorry mvc guru) + + switch (event.updateType){ + + case 'REFRESH_TREE' : + refreshTree(event.data,wm); + break; + + default : + Debugger.log('unknown update type :' + event.updateType,Debugger.GEN,'viewUpdate','org.lamsfoundation.lams.WorkspaceDialog'); + } + + } + + public function refreshTree(changedNode:XMLNode,wm:WorkspaceModel){ + Debugger.log('Refreshing tree....:' ,Debugger.GEN,'refreshTree','org.lamsfoundation.lams.WorkspaceDialog'); + //we have to set the new nodes to be branches, if they are branches + if(changedNode.attributes.isBranch){ + treeview.setIsBranch(changedNode,true); + //do its kids + for(var i=0; i