Index: lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceView.as =================================================================== diff -u -rd6b2de6d50c508a7c2724532926a792df607b4d9 -r1d1b5774f2bc85d3312f020b8d8f534e73dd88d7 --- lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceView.as (.../WorkspaceView.as) (revision d6b2de6d50c508a7c2724532926a792df607b4d9) +++ lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceView.as (.../WorkspaceView.as) (revision 1d1b5774f2bc85d3312f020b8d8f534e73dd88d7) @@ -5,82 +5,121 @@ import org.lamsfoundation.lams.common.dict.* import org.lamsfoundation.lams.authoring.* import mx.managers.* +import mx.events.* import mx.utils.* /** * Authoring view for the canvas * @author DI */ -class org.lamsfoundation.lams.common.ws.WorkspaceView extends AbstractView -{ +class org.lamsfoundation.lams.common.ws.WorkspaceView extends AbstractView { //Canvas clip private var _workspace_mc:MovieClip; - private var workspaceDialog:MovieClip; + private var _workspaceDialog:MovieClip; private var _popup:MovieClip; private var okClickedCallback:Function; + private var _workspaceController:WorkspaceController; /* * Constructor */ public function WorkspaceView (m:Observable, c:Controller){ // Invoke superconstructor, which sets up MVC relationships. // This view has no user inputs, so no controller is required. - super (m, c); + super (m, c); + //register to recive updates form the model + WorkspaceModel(m).addEventListener('viewUpdate',this); + //_workspaceController = getController(); } - - /* - * Updates state of the canvas, called by Canvas Model - * - * @param o The model object that is broadcasting an update. - * @param infoObj object with details of changes to model - */ - public function update (o:Observable,infoObj:Object):Void { - //Go through update object and update mc with visual changes required + + /** + * 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) + _workspaceController = getController(); + switch (event.updateType){ + case 'CREATE_DIALOG' : + createWorkspaceDialogOpen(event.data.pos,event.data.callBack); + break; + + default : + Debugger.log('unknown update type :' + event.updateType,Debugger.CRITICAL,'update','org.lamsfoundation.lams.WorkspaceView'); + } + } - + /** * Create a popup dialog containing workspace * @param pos - Position, either 'centre' or an object containing x + y coordinates + * @param callback - The function to call and pass the selectedID to */ - public function createWorkspaceDialog(pos:Object,callBack:Function){ + public function createWorkspaceDialogOpen(pos:Object,callBack:Function){ var dialog:MovieClip; //Check to see whether this should be a centered or positioned dialog if(typeof(pos)=='string'){ dialog = PopUpManager.createPopUp(Application.root, LFWindow, true,{title:Dictionary.getValue('ws_dlg_title'),closeButton:true,scrollContentPath:'workspaceDialog'}); } else { dialog = PopUpManager.createPopUp(Application.root, LFWindow, true,{title:Dictionary.getValue('ws_dlg_title'),closeButton:true,scrollContentPath:'workspaceDialog',_x:pos.x,_y:pos.y}); } + + Debugger.log('_workspaceController:'+_workspaceController,4,'createWorkspaceDialogOpen','WorkspaceView'); //Assign dialog load handler - dialog.addEventListener('contentLoaded',Delegate.create(this,dialogLoaded)); - okClickedCallback = callBack; + dialog.addEventListener('contentLoaded',Delegate.create(_workspaceController,_workspaceController.openDialogLoaded)); + okClickedCallback = callBack; } - - /** - * called when the dialog is loaded + + + + + /** + * + * @usage + * @param newworkspaceDialog + * @return + */ + public function set workspaceDialog (newworkspaceDialog:MovieClip):Void { + _workspaceDialog = newworkspaceDialog; + } + /** + * + * @usage + * @return + */ + public function get workspaceDialog ():MovieClip { + return _workspaceDialog; + } + + + + /** + * Overrides method in abstract view to ensure cortect type of controller is returned + * @usage + * @return CanvasController + */ + public function getController():WorkspaceController{ + trace('getController in wsv'); + var c:Controller = super.getController(); + return WorkspaceController(c); + } + + /** + * Returns the default controller for this view . + * Overrides AbstractView.defaultController() */ - public function dialogLoaded(evt:Object) { - Debugger.log('!evt.type:'+evt.type,Debugger.GEN,'dialogLoaded','org.lamsfoundation.lams.WorkspaceView'); - //Check type is correct - if(evt.type == 'contentLoaded'){ - //Set up callback for ok button click - Debugger.log('!evt.target.scrollContent:'+evt.target.scrollContent,Debugger.GEN,'dialogLoaded','org.lamsfoundation.lams.WorkspaceView'); - evt.target.scrollContent.addEventListener('okClicked',Delegate.create(this,okClicked)); - }else { - //TODO DI 25/05/05 raise wrong event type error - } + public function defaultController (model:Observable):Controller { + trace('default controller in wsv'); + return new WorkspaceController(model); } + + + - /** - * Workspace dialog OK button clicked handler - */ - private function okClicked(evt:Object) { - Debugger.log('!okClicked:',Debugger.GEN,'okClicked','org.lamsfoundation.lams.WorkspaceView'); - //Check type is correct - if(evt.type == 'okClicked'){ - //Call the callback, passing in the design selected designId - okClickedCallback(evt.target.selectedDesignId); - }else { - //TODO DI 25/05/05 raise wrong event type error - } - } + }