Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -rdf3d8611396b8ee2f7af23a08ab07c7dcd7746d3 -r289092d9f07c88e637c6b93ac76dc40c6ef42310 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision df3d8611396b8ee2f7af23a08ab07c7dcd7746d3) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 289092d9f07c88e637c6b93ac76dc40c6ef42310) @@ -20,7 +20,7 @@ * http://www.gnu.org/licenses/gpl.txt * ************************************************************************ */ - +import org.lamsfoundation.lams.common.Dialog; import org.lamsfoundation.lams.common.util.*; import org.lamsfoundation.lams.common.ui.*; import org.lamsfoundation.lams.common.style.*; @@ -30,53 +30,33 @@ import org.lamsfoundation.lams.common.mvc.*; import org.lamsfoundation.lams.common.CommonCanvasView; -import com.polymercode.Draw; import mx.controls.*; import mx.managers.*; -import mx.containers.*; -import mx.events.*; import mx.utils.*; - /** *Authoring view for the canvas * Relects changes in the CanvasModel */ -class org.lamsfoundation.lams.authoring.br.CanvasBranchView extends CommonCanvasView { - //constants: - private var GRID_HEIGHT:Number; - private var GRID_WIDTH:Number; - private var H_GAP:Number; - private var V_GAP:Number; +class org.lamsfoundation.lams.authoring.br.CanvasBranchView extends CommonCanvasView { private var _tm:ThemeManager; + + private var _container:MovieClip; //The container window that holds the dialog + private var _cm:CanvasModel; + private var _canvasBranchView:CanvasBranchView; - //Canvas Branch clip - private var _canvas_branch_mc:MovieClip; - private var canvas_scp:ScrollPane; - - private var bkg_pnl:Panel; - - private var _gridLayer_mc:MovieClip; - private var _transitionLayer_mc:MovieClip; - private var _activityLayerComplex_mc:MovieClip; - private var _activityLayer_mc:MovieClip; - private var startTransX:Number; private var startTransY:Number; - private var lastScreenWidth:Number = 512; - private var lastScreenHeight:Number = 389; - private var _transitionPropertiesOK:Function; - private var _canvasBranchView:CanvasBranchView; - - //Defined so compiler can 'see' events added at runtime by EventDispatcher - private var dispatchEvent:Function; - public var addEventListener:Function; - public var removeEventListener:Function; - + private var lastScreenWidth:Number = 500; + private var lastScreenHeight:Number = 300; + + private var grid_mc:Object; + private var hSpace:Number = 100; + private var vSpace:Number = 100; /** * Constructor */ @@ -86,26 +66,37 @@ //Init for event delegation mx.events.EventDispatcher.initialize(this); + + this._visible = false; + } /** * Called to initialise Canvas . CAlled by the Canvas container */ public function init(m:Observable,c:Controller){ - + super (m, c); //Set up parameters for the grid H_GAP = 10; V_GAP = 10; _cm = CanvasModel(m) - + + //register to recive updates form the model _cm.addEventListener('viewUpdate',this); - + MovieClipUtils.doLater(Proxy.create(this,draw)); - } + } + + /** + * set the container refernce to the window holding the dialog + */ + function set container(value:MovieClip){ + _container = value; + } /** * Recieved update events from the CanvasModel. Dispatches to relevent handler depending on update.Type @@ -116,8 +107,8 @@ Debugger.log('Recived an Event dispather UPDATE!, updateType:'+event.updateType+', target'+event.target,4,'viewUpdate','CanvasView'); var cm:CanvasModel = event.target; - switch (event.updateType){ - case 'POSITION' : + switch (event.updateType){ + case 'POSITION' : setPosition(cm); break; case 'SIZE' : @@ -155,20 +146,17 @@ */ private function draw(){ - // hide for the moment - this._visible = false; - //get the content path for the sp - _canvas_branch_mc = canvas_scp.content; + content = this; - bkg_pnl = _canvas_branch_mc.createClassObject(Panel, "bkg_pnl", getNextHighestDepth()); + bkg_pnl = content.createClassObject(Panel, "bkg_pnl", getNextHighestDepth()); //set up the layers - _gridLayer_mc = _canvas_branch_mc.createEmptyMovieClip("_gridLayer_mc", _canvas_branch_mc.getNextHighestDepth()); - _transitionLayer_mc = _canvas_branch_mc.createEmptyMovieClip("_transitionLayer_mc", _canvas_branch_mc.getNextHighestDepth()); + gridLayer = content.createEmptyMovieClip("_gridLayer_mc", content.getNextHighestDepth()); + transitionLayer = content.createEmptyMovieClip("_transitionLayer_mc", content.getNextHighestDepth()); - _activityLayerComplex_mc = _canvas_branch_mc.createEmptyMovieClip("_activityLayerComplex_mc", _canvas_branch_mc.getNextHighestDepth()); - _activityLayer_mc = _canvas_branch_mc.createEmptyMovieClip("_activityLayer_mc", _canvas_branch_mc.getNextHighestDepth()); + activityComplexLayer = content.createEmptyMovieClip("_activityComplexLayer_mc", content.getNextHighestDepth()); + activityLayer = content.createEmptyMovieClip("_activityLayer_mc", content.getNextHighestDepth()); bkg_pnl.onRelease = function(){ Application.getInstance().getCanvas().getCanvasView().getController().canvasRelease(this); @@ -178,50 +166,16 @@ setStyles(); + setSize(_cm); + setPosition(_cm); + + this._visible = true; + //Dispatch load event dispatchEvent({type:'load',target:this}); } - - public function initDrawTempTrans(){ - Debugger.log("Initialising drawing temp. Transition", Debugger.GEN, "initDrawTempTrans", "CanvasView"); - _activityLayer_mc.createEmptyMovieClip("tempTrans", _activityLayer_mc.getNextHighestDepth()); - _activityLayer_mc.attachMovie("squareHandle", "h1", _activityLayer_mc.getNextHighestDepth()); - _activityLayer_mc.attachMovie("squareHandle", "h2", _activityLayer_mc.getNextHighestDepth()); - - _activityLayer_mc.h1._x = _canvas_branch_mc._xmouse - _activityLayer_mc.h1._y = _canvas_branch_mc._ymouse - - _activityLayer_mc.tempTrans.onEnterFrame = drawTempTrans; - - } /** - * used to draw temp dotted transtion. - * @usage - * @return - */ - private function drawTempTrans(){ - Debugger.log("Started drawing temp. Transition", Debugger.GEN, "drawTempTrans", "CanvasView"); - - this.clear(); - - Debugger.log("Runtime movieclips cleared from CanvasView: clear()", Debugger.GEN, "drawTempTrans", "CanvasView"); - - Draw.dashTo(this, _parent.h1._x, _parent.h1._y, _parent._parent._xmouse - 3, _parent._parent._ymouse - 3, 7, 4); - _parent.h2._x = _parent._parent._xmouse - 3; - _parent.h2._y = _parent._parent._ymouse - 3; - } - - public function removeTempTrans(){ - Debugger.log("Stopped drawing temp. Transition", Debugger.GEN, "removeTempTrans", "CanvasView"); - delete _activityLayer_mc.tempTrans.onEnterFrame; - _activityLayer_mc.tempTrans.removeMovieClip(); - _activityLayer_mc.h1.removeMovieClip(); - _activityLayer_mc.h2.removeMovieClip(); - } - - - /** * Draws new or replaces existing activity to canvas stage. * @usage * @param a - Activity to be drawn @@ -236,30 +190,30 @@ Debugger.log('I am in drawActivity and Activity typeID :'+a.activityTypeID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); //take action depending on act type if(a.activityTypeID==Activity.TOOL_ACTIVITY_TYPE || a.isGroupActivity()){ - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Tool or gate activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable:'+newActivity_mc,4,'drawActivity','CanvasView'); } else if (a.isGateActivity()){ - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasGateActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasGateActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Gate activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable:'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.PARALLEL_ACTIVITY_TYPE){ //get the children var children:Array = cm.getCanvas().ddm.getComplexActivityChildren(a.activityUIID); - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasParallelActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasView:cbv, _locked:a.isReadOnly()}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasParallelActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasView:cbv, _locked:a.isReadOnly()}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Parallel activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.OPTIONAL_ACTIVITY_TYPE){ var children:Array = cm.getCanvas().ddm.getComplexActivityChildren(a.activityUIID); - var newActivity_mc = _activityLayerComplex_mc.createChildAtDepth("CanvasOptionalActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasView:cbv,_locked:a.isReadOnly()}); + var newActivity_mc = activityComplexLayer.createChildAtDepth("CanvasOptionalActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasView:cbv,_locked:a.isReadOnly()}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Optional activity Type a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.BRANCHING_ACTIVITY_TYPE){ - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Branching activity Type a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); @@ -303,7 +257,6 @@ * @return Boolean - successfull */ private function removeActivity(a:Activity,cm:CanvasModel):Boolean{ - //Debugger.log('a.title:'+a.title,4,'removeActivity','CanvasView'); var r = cm.activitiesDisplayed.remove(a.activityUIID); r.removeMovieClip(); var s:Boolean = (r==null) ? false : true; @@ -320,7 +273,7 @@ private function drawTransition(t:Transition,cm:CanvasModel):Boolean{ var cbv = CanvasBranchView(this); var cbc = getController(); - var newTransition_mc:MovieClip = _transitionLayer_mc.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasView:cbv}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasView:cbv}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasView'); @@ -340,7 +293,7 @@ private function hideTransition(t:Transition, cm:CanvasModel):Boolean{ var cbv = CanvasBranchView(this); var cbc = getController(); - var newTransition_mc:MovieClip = _transitionLayer_mc.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasView:cbv, _visible:false}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasView:cbv, _visible:false}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn (hidden) a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'hideTransition','CanvasView'); @@ -356,73 +309,52 @@ * @return */ private function removeTransition(t:Transition,cm:CanvasModel){ - //Debugger.log('t.uiID:'+t.transitionUIID,Debugger.CRITICAL,'removeTransition','CanvasView'); var r = cm.transitionsDisplayed.remove(t.transitionUIID); r.removeMovieClip(); var s:Boolean = (r==null) ? false : true; return s; } - - + /** - * Create a popup dialog to set transition parameters - * @param pos - Position, either 'centre' or an object containing x + y coordinates - */ - public function createTransitionPropertiesDialog(pos:Object,callBack:Function){ - var dialog:MovieClip; - _transitionPropertiesOK = callBack; - - //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('trans_dlg_title'),closeButton:true,scrollContentPath:"TransitionProperties"}); - } else { - dialog = PopUpManager.createPopUp(Application.root, LFWindow, true,{title:Dictionary.getValue('trans_dlg_title'),closeButton:true,scrollContentPath:"TransitionProperties",_x:pos.x,_y:pos.y}); - } - - //Assign dialog load handler - dialog.addEventListener('contentLoaded',Delegate.create(this,transitionDialogLoaded)); - - } - - /** - * called when the transitionDialogLoaded is loaded - */ - public function transitionDialogLoaded(evt:Object) { - //Check type is correct - if(evt.type == 'contentLoaded'){ - evt.target.scrollContent.addEventListener('okClicked',_transitionPropertiesOK); - }else { - //TODO DI 25/05/05 raise wrong event type error - } - } - - - /** * Sets the size of the canvas on stage, called from update */ private function setSize(cm:CanvasModel):Void{ + var ba = cm.currentBranchingActivity; + var s:Object = cm.getSize(); - var newWidth:Number = Math.max(s.w, lastScreenWidth) - var newHeight:Number = Math.max(s.h, lastScreenHeight) + var cx:Number = ba._x + ba.getVisibleWidth()/2; + var cy:Number = ba._y + ba.getVisibleHeight()/2; - canvas_scp.setSize(s.w,s.h); - bkg_pnl.setSize(newWidth,newHeight); + s.w -= 2*hSpace; + s.h -= 2*vSpace; + bkg_pnl.setSize(s.w, s.h); + //Create the grid. The gris is re-drawn each time the canvas is resized. - var grid_mc = Grid.drawGrid(_gridLayer_mc,Math.round(newWidth),Math.round(newHeight),V_GAP,H_GAP); + grid_mc = Grid.drawGrid(gridLayer,Math.round(s.w),Math.round(s.h),V_GAP,H_GAP); - //position bin in canvas. - // TODO: new indep. bin? - //var bin = cm.getCanvas().bin; - //bin._x = (s.w - bin._width) - 20; - //bin._y = (s.h - bin._height) - 20; - canvas_scp.redraw(true); - lastScreenWidth = newWidth - lastScreenHeight = newHeight + setPosition(cm); } /** + * Sets the position of the canvas on stage, called from update + * @param cm Canvas model object + */ + private function setPosition(cm:CanvasModel):Void{ + var ba = cm.currentBranchingActivity; + + var cx:Number = ba._x + ba.getVisibleWidth()/2; + var cy:Number = ba._y + ba.getVisibleHeight()/2; + + bkg_pnl._x = -cx+hSpace; + bkg_pnl._y = -cy+vSpace; + grid_mc._x = -cx+hSpace; + grid_mc._y = -cy+vSpace; + + } + + /** * Get the CSSStyleDeclaration objects for each component and apply them * directly to the instance * @usage @@ -435,24 +367,10 @@ } - /** - * Sets the position of the canvas on stage, called from update - * @param cm Canvas model object - */ - private function setPosition(cm:CanvasModel):Void{ - var p:Object = cm.getPosition(); - this._x = p.x; - this._y = p.y; - } - public function getTransitionLayer():MovieClip{ - return _transitionLayer_mc; + return transitionLayer; } - public function get activityLayer():MovieClip{ - return _activityLayer_mc; - } - public function closeView():Void { this.removeMovieClip(); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as =================================================================== diff -u -r30b7641a18c8c83b3722fc22bb936d54f4eaa18b -r289092d9f07c88e637c6b93ac76dc40c6ef42310 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 30b7641a18c8c83b3722fc22bb936d54f4eaa18b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 289092d9f07c88e637c6b93ac76dc40c6ef42310) @@ -29,11 +29,14 @@ import org.lamsfoundation.lams.authoring.* import org.lamsfoundation.lams.common.ui.* import org.lamsfoundation.lams.common.dict.* +import org.lamsfoundation.lams.common.style.* import org.lamsfoundation.lams.common.ws.Workspace import org.lamsfoundation.lams.common.ApplicationParent import org.lamsfoundation.lams.common.* import mx.managers.* import mx.utils.* +import mx.transitions.Tween; +import mx.transitions.easing.*; /** * The canvas is the main screen area of the LAMS application where activies are added and sequenced @@ -79,7 +82,6 @@ private var dispatchEvent:Function; public var addEventListener:Function; public var removeEventListener:Function; - /** * Canvas Constructor @@ -147,36 +149,32 @@ */ public function viewLoaded(evt:Object) { if(evt.type=='load') { - var autosave_config_interval = Config.getInstance().getItem(AUTOSAVE_CONFIG); - if(autosave_config_interval > 0) { - if(CookieMonster.cookieExists(AUTOSAVE_TAG + _root.userID)) { - canvasModel.autoSaveWait = true; + if(evt.target instanceof CanvasBranchView) { + mx.transitions.TransitionManager.start(evt.target, + {type:mx.transitions.Zoom, + direction:0, duration:1, easing:mx.transitions.easing.Bounce.easeOut}); + + } else { + + var autosave_config_interval = Config.getInstance().getItem(AUTOSAVE_CONFIG); + if(autosave_config_interval > 0) { + if(CookieMonster.cookieExists(AUTOSAVE_TAG + _root.userID)) { + canvasModel.autoSaveWait = true; + } + setInterval(Proxy.create(this,autoSave), autosave_config_interval); } - setInterval(Proxy.create(this,autoSave), autosave_config_interval); + + clearCanvas(true); + + dispatchEvent({type:'load',target:this}); } - clearCanvas(true); - - dispatchEvent({type:'load',target:this}); - - }else { + } else { Debugger.log('Event type not recognised : ' + evt.type,Debugger.CRITICAL,'viewLoaded','Canvas'); } } /** - * Event dispatched from the view once it's loaded - */ - public function branchViewLoaded(evt:Object) { - if(evt.type=='load') { - Debugger.log('Successful load: ' + evt.type,Debugger.CRITICAL,'branchViewLoaded','Canvas'); - }else { - Debugger.log('Event type not recognised : ' + evt.type,Debugger.CRITICAL,'viewLoaded','Canvas'); - } - } - - - /** * Opens the help->about dialog */ public function openAboutLams() { @@ -254,20 +252,34 @@ } - public function openBranchView(ba:BranchingActivity){ + public function openBranchView(ba){ - //Create the view - _canvasBranchView_mc = _target_mc.createChildAtDepth("canvasBranchView",DepthManager.kTop); - - //Cast toolkit view clip as ToolkitView and initialise passing in model - canvasBranchView = CanvasBranchView(_canvasBranchView_mc); - canvasBranchView.init(canvasModel,undefined); + fadeOtherOnCanvas(ba); + var cx:Number = ba._x + ba.getVisibleWidth()/2; + var cy:Number = ba._y + ba.getVisibleHeight()/2; + + var _branchView_mc:MovieClip = _canvasView_mc.content.createChildAtDepth("canvasBrView", DepthManager.kTop, {_x: cx, _y: cy}); + var branchView:CanvasBranchView = CanvasBranchView(_branchView_mc); + branchView.init(canvasModel,undefined); + //Add listener to view so that we know when it's loaded - canvasBranchView.addEventListener('load',Proxy.create(this,branchViewLoaded)); + branchView.addEventListener('load', Proxy.create(this,viewLoaded)); - Application.getInstance().onResize(); + canvasModel.addObserver(branchView); + } + + private function fadeOtherOnCanvas(ba) { + + var k:Array = canvasModel.activitiesDisplayed.values(); + for (var i=0; i"+Dictionary.getValue('cv_readonly_lbl')+")" titleToCheck = cm.getCanvas().ddm.title + Dictionary.getValue('cv_readonly_lbl') @@ -221,8 +199,10 @@ } private function setSizeTitleBar(dTitle:String):Void{ + dTitle = StringUtils.replace(dTitle, " ", "") _canvasView.createTextField("designTitle", _canvasView.getNextHighestDepth(), -10000, -10000, 20, 20) + var nameTextFormat = new TextFormat(); nameTextFormat.bold = true; nameTextFormat.font = "Verdana"; @@ -243,12 +223,10 @@ } - private function positionTitleBar(cm:CanvasModel):Void{ titleBar._y = canvas_scp._y; titleBar._x = (canvas_scp.width/2)-(titleBar._width/2) read_only._x = titleBar._x + 5; - } private function styleTitleBar():Void { @@ -270,45 +248,7 @@ rightCurveShadowColor.setRGB(bgShadowColor); } - - public function initDrawTempTrans(){ - Debugger.log("Initialising drawing temp. Transition", Debugger.GEN, "initDrawTempTrans", "CanvasView"); - _activityLayer_mc.createEmptyMovieClip("tempTrans", _activityLayer_mc.getNextHighestDepth()); - _activityLayer_mc.attachMovie("squareHandle", "h1", _activityLayer_mc.getNextHighestDepth()); - _activityLayer_mc.attachMovie("squareHandle", "h2", _activityLayer_mc.getNextHighestDepth()); - _activityLayer_mc.h1._x = _canvas_mc._xmouse - _activityLayer_mc.h1._y = _canvas_mc._ymouse - _activityLayer_mc.tempTrans.onEnterFrame = drawTempTrans; - } - - /** - * used to draw temp dotted transtion. - * @usage - * @return - */ - private function drawTempTrans(){ - Debugger.log("Started drawing temp. Transition", Debugger.GEN, "drawTempTrans", "CanvasView"); - this.clear(); - - Debugger.log("Runtime movieclips cleared from CanvasView: clear()", Debugger.GEN, "drawTempTrans", "CanvasView"); - - Draw.dashTo(this, _parent.h1._x, _parent.h1._y, _parent._parent._xmouse - 3, _parent._parent._ymouse - 3, 7, 4); - _parent.h2._x = _parent._parent._xmouse - 3 - _parent.h2._y = _parent._parent._ymouse - 3 - } - - public function removeTempTrans(){ - Debugger.log("Stopped drawing temp. Transition", Debugger.GEN, "removeTempTrans", "CanvasView"); - - delete _activityLayer_mc.tempTrans.onEnterFrame; - - _activityLayer_mc.tempTrans.removeMovieClip(); - _activityLayer_mc.h1.removeMovieClip(); - _activityLayer_mc.h2.removeMovieClip(); - } - - /** * Draws new or replaces existing activity to canvas stage. * @usage @@ -324,30 +264,30 @@ Debugger.log('I am in drawActivity and Activity typeID :'+a.activityTypeID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); //take action depending on act type if(a.activityTypeID==Activity.TOOL_ACTIVITY_TYPE || a.isGroupActivity()){ - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cvc,_canvasView:cvv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cvc,_canvasView:cvv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Tool or gate activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable:'+newActivity_mc,4,'drawActivity','CanvasView'); } else if (a.isGateActivity()){ - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasGateActivity",DepthManager.kTop,{_activity:a,_canvasController:cvc,_canvasView:cvv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasGateActivity",DepthManager.kTop,{_activity:a,_canvasController:cvc,_canvasView:cvv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Gate activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable:'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.PARALLEL_ACTIVITY_TYPE){ //get the children var children:Array = cm.getCanvas().ddm.getComplexActivityChildren(a.activityUIID); - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasParallelActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cvc,_canvasView:cvv, _locked:a.isReadOnly()}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasParallelActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cvc,_canvasView:cvv, _locked:a.isReadOnly()}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Parallel activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.OPTIONAL_ACTIVITY_TYPE){ var children:Array = cm.getCanvas().ddm.getComplexActivityChildren(a.activityUIID); - var newActivity_mc = _activityLayerComplex_mc.createChildAtDepth("CanvasOptionalActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cvc,_canvasView:cvv,_locked:a.isReadOnly()}); + var newActivity_mc = activityComplexLayer.createChildAtDepth("CanvasOptionalActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cvc,_canvasView:cvv,_locked:a.isReadOnly()}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Optional activity Type a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.BRANCHING_ACTIVITY_TYPE){ - var newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cvc,_canvasView:cvv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cvc,_canvasView:cvv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Branching activity Type a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); @@ -407,7 +347,7 @@ private function drawTransition(t:Transition,cm:CanvasModel):Boolean{ var cvv = CanvasView(this); var cvc = getController(); - var newTransition_mc:MovieClip = _transitionLayer_mc.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cvc,_canvasView:cvv}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cvc,_canvasView:cvv}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasView'); @@ -427,7 +367,7 @@ private function hideTransition(t:Transition, cm:CanvasModel):Boolean{ var cvv = CanvasView(this); var cvc = getController(); - var newTransition_mc:MovieClip = _transitionLayer_mc.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cvc,_canvasView:cvv, _visible:false}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cvc,_canvasView:cvv, _visible:false}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn (hidden) a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'hideTransition','CanvasView'); @@ -449,59 +389,29 @@ return s; } - - /** - * Create a popup dialog to set transition parameters - * @param pos - Position, either 'centre' or an object containing x + y coordinates - */ - public function createTransitionPropertiesDialog(pos:Object,callBack:Function){ - var dialog:MovieClip; - _transitionPropertiesOK = callBack; - - //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('trans_dlg_title'),closeButton:true,scrollContentPath:"TransitionProperties"}); - } else { - dialog = PopUpManager.createPopUp(Application.root, LFWindow, true,{title:Dictionary.getValue('trans_dlg_title'),closeButton:true,scrollContentPath:"TransitionProperties",_x:pos.x,_y:pos.y}); - } - //Assign dialog load handler - dialog.addEventListener('contentLoaded',Delegate.create(this,transitionDialogLoaded)); - } - - /** - * called when the transitionDialogLoaded is loaded - */ - public function transitionDialogLoaded(evt:Object) { - //Check type is correct - if(evt.type == 'contentLoaded'){ - //Set up callback for ok button click - evt.target.scrollContent.addEventListener('okClicked',_transitionPropertiesOK); - }else { - //TODO DI 25/05/05 raise wrong event type error - } - } - - /** * Sets the size of the canvas on stage, called from update */ private function setSize(cm:CanvasModel):Void{ var s:Object = cm.getSize(); - var newWidth:Number = Math.max(s.w, lastScreenWidth) - var newHeight:Number = Math.max(s.h, lastScreenHeight) + var newWidth:Number = Math.max(s.w, lastScreenWidth); + var newHeight:Number = Math.max(s.h, lastScreenHeight); + canvas_scp.setSize(s.w,s.h); bkg_pnl.setSize(newWidth,newHeight); //Create the grid. The gris is re-drawn each time the canvas is resized. - var grid_mc = Grid.drawGrid(_gridLayer_mc,Math.round(newWidth),Math.round(newHeight),V_GAP,H_GAP); + var grid_mc = Grid.drawGrid(gridLayer,Math.round(newWidth),Math.round(newHeight),V_GAP,H_GAP); //position bin in canvas. var bin = cm.getCanvas().bin; bin._x = (s.w - bin._width) - 20; bin._y = (s.h - bin._height) - 20; + canvas_scp.redraw(true); - lastScreenWidth = newWidth - lastScreenHeight = newHeight + + lastScreenWidth = newWidth; + lastScreenHeight = newHeight; } /** @@ -511,10 +421,8 @@ * @return */ private function setStyles() { - var styleObj = _tm.getStyleObject('CanvasPanel'); bkg_pnl.setStyle('styleName',styleObj); - } /** @@ -527,27 +435,22 @@ this._y = p.y; } - public function getViewMc(testString:String):MovieClip{ - trace("passed on argument is "+testString) - return _canvas_mc; - } + /**public function getViewMc(testString:String):MovieClip{ + return content; + }*/ public function getTransitionLayer():MovieClip{ - return _transitionLayer_mc; + return transitionLayer; } - - public function get activityLayer():MovieClip{ - return _activityLayer_mc; - } - + public function showReadOnly(b:Boolean){ isRread_only = b; } public function showEditOnFly(b:Boolean){ isRedit_on_fly = b; } - + /** * Overrides method in abstract view to ensure cortect type of controller is returned * @usage Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tk/ToolkitController.as =================================================================== diff -u -rd7823922f404944822957e6c051bc0f1335a76de -r289092d9f07c88e637c6b93ac76dc40c6ef42310 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tk/ToolkitController.as (.../ToolkitController.as) (revision d7823922f404944822957e6c051bc0f1335a76de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tk/ToolkitController.as (.../ToolkitController.as) (revision 289092d9f07c88e637c6b93ac76dc40c6ef42310) @@ -61,7 +61,7 @@ public function iconDrop(dragIcon_mc:MovieClip):Void{ //lets do a test to see if we got the canvas var cv:Canvas = Application.getInstance().getCanvas(); - var canvasView:MovieClip = cv.getCanvasView().getViewMc(); + var canvasView:MovieClip = cv.getCanvasView().content; var iconMouseX = _xmouse - cv.model.getPosition().x; var iconMouseY = _ymouse - cv.model.getPosition().y; trace("iconMouseX: "+iconMouseX+" and iconMouseY: "+iconMouseY) Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/MonitorTabView.as =================================================================== diff -u -rd7823922f404944822957e6c051bc0f1335a76de -r289092d9f07c88e637c6b93ac76dc40c6ef42310 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/MonitorTabView.as (.../MonitorTabView.as) (revision d7823922f404944822957e6c051bc0f1335a76de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/MonitorTabView.as (.../MonitorTabView.as) (revision 289092d9f07c88e637c6b93ac76dc40c6ef42310) @@ -49,25 +49,23 @@ */ class org.lamsfoundation.lams.monitoring.mv.tabviews.MonitorTabView extends CommonCanvasView { + public static var _tabID:Number = 1; - private var _className = "MonitorTabView"; - //constants: - private var GRID_HEIGHT:Number; - private var GRID_WIDTH:Number; - private var H_GAP:Number; - private var V_GAP:Number; + private var _className = "MonitorTabView"; + + private var _tm:ThemeManager; + + private var mm:MonitorModel; + private var _monitorTabView:MonitorTabView; + + private var _tip:ToolTip; + private var endGateOffset:Number = 60; private var learner_X:Number = 22; private var learner_Y:Number = 19; private var drawDesignCalled:String; - private var _tm:ThemeManager; - private var mm:MonitorModel; - private var _monitorTabView:MonitorTabView; - private var _tip:ToolTip; - //Canvas clip - //private var _monitor_mc:MovieClip; private var lessonEnd_lbl:Label; private var finishedLearnersList:Array; private var bg_pnl:MovieClip; @@ -77,30 +75,22 @@ private var learnerMenuBar:MovieClip; private var monitorTabs_tb:MovieClip; private var _monitorTabViewContainer_mc:MovieClip; - private var bkg_pnl:MovieClip; - private var _gridLayer_mc:MovieClip; - private var _transitionLayer_mc:MovieClip; - private var _activityLayerComplex_mc:MovieClip; - private var _activityLayer_mc:MovieClip; + + private var bkg_pnl:MovieClip; + private var _learnerContainer_mc:MovieClip; private var endGate_mc:MovieClip; - //private var _transitionPropertiesOK:Function; - //Defined so compiler can 'see' events added at runtime by EventDispatcher - private var dispatchEvent:Function; - public var addEventListener:Function; - public var removeEventListener:Function; - //public var menu:ContextMenu; - - /** * Constructor */ function MonitorTabView(){ _monitorTabView = this; - _monitorTabViewContainer_mc = this; + _monitorTabViewContainer_mc = this; + _tm = ThemeManager.getInstance(); - _tip = new ToolTip(); + _tip = new ToolTip(); + //Init for event delegation mx.events.EventDispatcher.initialize(this); } @@ -111,11 +101,12 @@ public function init(m:Observable,c:Controller){ //Invoke superconstructor, which sets up MVC relationships. super (m, c); - mm = MonitorModel(model) + mm = MonitorModel(model) + //Set up parameters for the grid H_GAP = 10; V_GAP = 10; - //drawDesignCalled = false; + MovieClipUtils.doLater(Proxy.create(this,draw)); mm.getMonitor().getMV().getMonitorSequenceScp()._visible = false; @@ -241,16 +232,16 @@ bkg_pnl = this.attachMovie("Panel", "bkg_pnl", this.getNextHighestDepth()); - _gridLayer_mc = this.createEmptyMovieClip("_gridLayer_mc", this.getNextHighestDepth()); + gridLayer = this.createEmptyMovieClip("_gridLayer_mc", this.getNextHighestDepth()); - _transitionLayer_mc = this.createEmptyMovieClip("_transitionLayer_mc", this.getNextHighestDepth()); - _activityLayerComplex_mc = this.createEmptyMovieClip("_activityLayerComplex_mc", this.getNextHighestDepth()); - _activityLayer_mc = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); + transitionLayer = this.createEmptyMovieClip("_transitionLayer_mc", this.getNextHighestDepth()); + activityComplexLayer = this.createEmptyMovieClip("_activityComplexLayer_mc", this.getNextHighestDepth()); + activityLayer = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); _learnerContainer_mc = this.createEmptyMovieClip("_learnerContainer_mc", this.getNextHighestDepth()); var s:Object = mm.getSize(); - endGate_mc = _activityLayer_mc.createChildAtDepth("endGate",DepthManager.kTop, {_x:0, _y:s.h-endGateOffset}); + endGate_mc = activityLayer.createChildAtDepth("endGate",DepthManager.kTop, {_x:0, _y:s.h-endGateOffset}); mm.endGate(endGate_mc); mm.endGate = endGate_mc; endGate_mc.tt_btn.onRollOver = Proxy.create(this,this['showToolTip'], "finish_learner_tooltip"); @@ -261,11 +252,13 @@ } private function showEndGateData(mm:MonitorModel):Void{ - endGate_mc.doorClosed._visible = true - var mc = getController(); - var finishedLearners:Number = 0; - finishedLearnersList = new Array(); - var totalLearners:Number = mm.allLearnersProgress.length; + var mc = getController(); + var finishedLearners:Number = 0; + var totalLearners:Number = mm.allLearnersProgress.length; + + endGate_mc.doorClosed._visible = true; + finishedLearnersList = new Array(); + for (var i=0; i "+finishedLearners+" of "+ totalLearners; - //setSize(mm); + } + + endGate_mc.lessonEnd_lbl.text = ""+Dictionary.getValue('title_sequencetab_endGate')+" "+finishedLearners+" of "+ totalLearners; + } public function showToolTip(btnTT:String):Void{ var Xpos = Application.MONITOR_X+ 5; var Ypos = Application.MONITOR_Y+ endGate_mc._y; var ttHolder = Application.tooltip; - //var ttMessage = btnObj.label; var ttMessage = Dictionary.getValue(btnTT); //param "true" is to specify that tooltip needs to be shown above the component @@ -303,7 +296,6 @@ } private function hideMainExp(mm:MonitorModel):Void{ - //var mcontroller = getController(); mm.broadcastViewUpdate("EXPORTSHOWHIDE", true); mm.broadcastViewUpdate("EDITFLYSHOWHIDE", true); } @@ -321,15 +313,15 @@ //Remove all the movies drawn on the transition and activity movieclip holder this._learnerContainer_mc.removeMovieClip(); - this._transitionLayer_mc.removeMovieClip(); - this._activityLayer_mc.removeMovieClip(); + this.transitionLayer.removeMovieClip(); + this.activityLayer.removeMovieClip(); this.endGate_mc.removeMovieClip(); //Recreate both Transition holder and Activity holder Movieclips - _transitionLayer_mc = this.createEmptyMovieClip("_transitionLayer_mc", this.getNextHighestDepth()); - _activityLayer_mc = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); + transitionLayer = this.createEmptyMovieClip("_transitionLayer_mc", this.getNextHighestDepth()); + activityLayer = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); _learnerContainer_mc = this.createEmptyMovieClip("_learnerContainer_mc", this.getNextHighestDepth()); - endGate_mc = _activityLayer_mc.createChildAtDepth("endGate",DepthManager.kTop, {_x:0, _y:s.h-endGateOffset}); + endGate_mc = activityLayer.createChildAtDepth("endGate",DepthManager.kTop, {_x:0, _y:s.h-endGateOffset}); if (isChanged == false){ mm.setIsProgressChangedSequence(false); @@ -368,7 +360,6 @@ * @return */ private function removeTransition(t:Transition,mm:MonitorModel){ - //Debugger.log('t.uiID:'+t.transitionUIID,Debugger.CRITICAL,'removeTransition','CanvasView'); var r = mm.transitionsDisplayed.remove(t.transitionUIID); r.removeMovieClip(); var s:Boolean = (r==null) ? false : true; @@ -393,15 +384,15 @@ //take action depending on act type if(a.activityTypeID==Activity.TOOL_ACTIVITY_TYPE || a.isGroupActivity() ){ - newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasActivity",DepthManager.kBottom,{_activity:a,_monitorController:mc,_monitorTabView:mtv, _module:"monitoring", learnerContainer:_learnerContainer_mc}); + newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kBottom,{_activity:a,_monitorController:mc,_monitorTabView:mtv, _module:"monitoring", learnerContainer:_learnerContainer_mc}); } else if (a.isGateActivity()){ - newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasGateActivity",DepthManager.kBottom,{_activity:a,_monitorController:mc,_monitorTabView:mtv, _module:"monitoring"}); + newActivity_mc = activityLayer.createChildAtDepth("CanvasGateActivity",DepthManager.kBottom,{_activity:a,_monitorController:mc,_monitorTabView:mtv, _module:"monitoring"}); } else if(a.activityTypeID==Activity.PARALLEL_ACTIVITY_TYPE){ var children:Array = mm.getMonitor().ddm.getComplexActivityChildren(a.activityUIID); - newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasParallelActivity",DepthManager.kBottom,{_activity:a,_children:children,_monitorController:mc,_monitorTabView:mtv,fromModuleTab:"monitorMonitorTab",learnerContainer:_learnerContainer_mc}); + newActivity_mc = activityLayer.createChildAtDepth("CanvasParallelActivity",DepthManager.kBottom,{_activity:a,_children:children,_monitorController:mc,_monitorTabView:mtv,fromModuleTab:"monitorMonitorTab",learnerContainer:_learnerContainer_mc}); } else if(a.activityTypeID==Activity.OPTIONAL_ACTIVITY_TYPE){ var children:Array = mm.getMonitor().ddm.getComplexActivityChildren(a.activityUIID); - newActivity_mc = _activityLayer_mc.createChildAtDepth("CanvasOptionalActivity",DepthManager.kBottom,{_activity:a,_children:children,_monitorController:mc,_monitorTabView:mtv,fromModuleTab:"monitorMonitorTab",learnerContainer:_learnerContainer_mc}); + newActivity_mc = activityComplexLayer.createChildAtDepth("CanvasOptionalActivity",DepthManager.kBottom,{_activity:a,_children:children,_monitorController:mc,_monitorTabView:mtv,fromModuleTab:"monitorMonitorTab",learnerContainer:_learnerContainer_mc}); } else{ Debugger.log('The activity:'+a.title+','+a.activityUIID+' is of unknown type, it cannot be drawn',Debugger.CRITICAL,'drawActivity','MonitorTabView'); } @@ -412,10 +403,6 @@ mm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); } - if (actItems == mm.getActivityKeys().length){ - //setSize(mm); - } - mm.getMonitor().getMV().getMonitorSequenceScp().redraw(true); return true; @@ -454,7 +441,7 @@ var mtv = MonitorTabView(this); var mc = getController(); - var newTransition_mc:MovieClip = _transitionLayer_mc.createChildAtDepth("MonitorTransition",DepthManager.kTop,{_transition:t,_monitorController:mc,_monitorTabView:mtv}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("MonitorTransition",DepthManager.kTop,{_transition:t,_monitorController:mc,_monitorTabView:mtv}); var trnsItems:Number = mm.transitionsDisplayed.size() if (trnsItems < mm.getTransitionKeys().length){ @@ -479,7 +466,7 @@ var mtv = MonitorTabView(this); var mc = getController(); - var newTransition_mc:MovieClip = _transitionLayer_mc.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_monitorController:mc,_monitorTabView:mtv, _visible:false}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_monitorController:mc,_monitorTabView:mtv, _visible:false}); mm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn (hidden) a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'hideTransition','CanvasView'); @@ -507,20 +494,23 @@ * Sets the size of the canvas on stage, called from update */ private function setSize(mm:MonitorModel):Void{ - var s:Object = mm.getSize(); - trace("Monitor Tab Grid Width: "+s.w+" Monitor Tab Grid Height: "+s.h); - //monitor_scp.setSize(s.w,s.h); + var s:Object = mm.getSize(); + bkg_pnl.setSize(s.w,s.h); + endGate_mc._y = s.h-endGateOffset; endGate_mc.bg_pnl.setSize(s.w,endGate_mc.bg_pnl.height); endGate_mc.bar_pnl.setSize(s.w-20,endGate_mc.bar_pnl.height); endGate_mc.tt_btn.setSize(s.w,endGate_mc.bg_pnl.height); + for (var i=0; i