Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r434299dda2df6be5bd2f7dff51ed8872a3469058 -r6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 434299dda2df6be5bd2f7dff51ed8872a3469058) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3) @@ -96,6 +96,10 @@ private var _isBranchChild:Boolean; private var _eventsEnabled:Boolean; + private var tm:TransitionManager; + private var openTransition:mx.transitions.Transition; + private var closeTransition:mx.transitions.Transition; + /** * Constructor */ @@ -112,6 +116,8 @@ fingerprint = null; _eventsEnabled = true; + tm = new TransitionManager(this); + //Init for event delegation mx.events.EventDispatcher.initialize(this); @@ -286,22 +292,23 @@ binLayer = content.createEmptyMovieClip("_binLayer_mc", content.getNextHighestDepth()); - complexViewer = content.createEmptyMovieClip("_complex_viewer_mc", content.getNextHighestDepth()); - branchContent = content.createEmptyMovieClip("_branch_content_mc", DepthManager.kTopmost); - bkg_pnl.onRelease = function(){ Application.getInstance().getCanvas().getCanvasView().getController().canvasRelease(this); } bkg_pnl.useHandCursor = false; - close_mc = content.attachMovie("collapse_mc", "close_mc", DepthManager.kTop); + close_mc = content.attachMovie("collapse_mc", "close_mc", content.getNextHighestDepth()); close_mc.onRelease = Proxy.create(this, localOnRelease); close_mc.onReleaseOutside = Proxy.create(this, localOnReleaseOutside); close_mc.onRollOver = Proxy.create(this, this['showToolTip'], close_mc, "close_mc_tooltip"); close_mc.onRollOut = Proxy.create(this,this['hideToolTip']); + complexViewer = content.createEmptyMovieClip("_complex_viewer_mc", DepthManager.kTop); + branchContent = content.createEmptyMovieClip("_branch_content_mc", DepthManager.kTopmost); + + setupConnectorHubs(); loadSequenceActivities(); @@ -392,12 +399,14 @@ public function open(doTransition:Boolean):Void { Debugger.log("calling open: " + _open, Debugger.CRITICAL, "open", " CanvasBranchView"); if(model instanceof CanvasModel) model.getCanvas().addBin(this.binLayer); + //if(_prevActiveView instanceof CanvasComplexView && _prevActiveView.prevActiveView instanceof CanvasBranchView) + // _prevActiveView.prevActiveView.complexViewer.swapDepths(_prevActiveView.prevActiveView.closeButton); setSize(model); if(doTransition || doTransition == null) { - var tm:TransitionManager = new TransitionManager(this); - tm.startTransition({type:mx.transitions.Zoom, + + openTransition = tm.startTransition({type:mx.transitions.Zoom, direction:0, duration:1, easing:mx.transitions.easing.Bounce.easeOut}); tm.addEventListener("allTransitionsInDone", finishedOpen); } @@ -411,6 +420,10 @@ evt.target.content.loadLabels(); } + public function finishedClose(evt:Object):Void { + evt.target.content.clearBranching(); + } + public function loadLabels():Void { var bkeys:Array = model.branchesDisplayed.keys(); @@ -426,6 +439,8 @@ private function close():Void { if(model instanceof CanvasModel) model.getCanvas().hideBin(); //typo + // if(_prevActiveView instanceof CanvasComplexView && _prevActiveView.prevActiveView instanceof CanvasBranchView) + // _prevActiveView.prevActiveView.complexViewer.swapDepths(_prevActiveView.prevActiveView.closeButton); this.activity.clear = false; @@ -460,14 +475,15 @@ Debugger.log("model.activeView : " + model.activeView, Debugger.CRITICAL, "finishedClose", "CanvasBranchView"); var targetView = findBinTargetView(_prevActiveView); + Debugger.log("model.activeView : " + targetView, Debugger.CRITICAL, "finishedClose", "CanvasBranchView"); + if(model instanceof CanvasModel && targetView != null) { if(targetView instanceof CanvasBranchView) model.getCanvas().addBin(targetView.binLayer); else model.getCanvas().addBin(targetView); } model.broadcastViewUpdate("SIZE"); - _isOpen = false; Debugger.log("closing branch view... : " + model.activeView.activity.activityUIID, Debugger.CRITICAL, "close", "CanvasBranchView"); @@ -477,6 +493,8 @@ private function findBinTargetView(targetView):MovieClip { if(targetView instanceof CanvasComplexView) { return findBinTargetView(targetView.prevActiveView); + } else if(targetView == null) { + } else { return targetView; } @@ -795,9 +813,13 @@ var s:Object = model.getSize(); - var cx:Number = thisCA._x + thisCA.getVisibleWidth()/2; - var cy:Number = thisCA._y + thisCA.getVisibleHeight()/2; + var pos:Object = getXYPos(thisCA, true, 0, 0); + Debugger.log("pos x: " + pos.x, Debugger.CRITICAL, "setSize", "CanvasBranchView"); + Debugger.log("pos y: " + pos.y, Debugger.CRITICAL, "setSize", "CanvasBranchView"); + var cx:Number = pos.x; //thisCA._x + thisCA.getVisibleWidth()/2; + var cy:Number = pos.y; // thisCA._y + thisCA.getVisibleHeight()/2; + s.w -= 2*hSpace; s.h -= 2*vSpace; @@ -816,8 +838,46 @@ } //canvas_scp.redraw(true); + if(model.activeView == this) + setPosition(model, cx, cy); + } + + private function getXYPos(ca, centerPos:Boolean, xOffset:Number, yOffset:Number):Object { + var pos = new Object(); + Debugger.log("ca: " + ca, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + Debugger.log("xoffset: " + xOffset, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + Debugger.log("yoffset: " + yOffset, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); - setPosition(model, cx, cy); + pos.x = (!centerPos) ? ca._x + xOffset : (ca._x + ca.getVisibleWidth()/2) + xOffset; + pos.y = (!centerPos) ? ca._y + yOffset : (ca._y + ca.getVisibleHeight()/2) + yOffset; + + var parentAct:MovieClip = model.activitiesDisplayed.get(ca.activity.parentUIID); + if(parentAct._parent == model.activeView.activityLayer || parentAct._parent == model.activeView.activityComplexLayer) + return pos; + + Debugger.log("complexActivity.activity.activityUIID: " + CanvasComplexView(_prevActiveView).openActivity.activity.activityUIID, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + Debugger.log("ca.activity.parentUIID: " + ca.activity.parentUIID, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + Debugger.log("parentAct: " + parentAct, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + + if(_prevActiveView instanceof CanvasComplexView && ca.activity.parentUIID == CanvasComplexView(_prevActiveView).openActivity.activity.activityUIID) { + Debugger.log("complex inst: " + _prevActiveView.complexActivity.activity.activityUIID, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + + return getXYPos(_prevActiveView.openActivity, false, pos.x, pos.y); + } else if(ca == _prevActiveView.openActivity) { + return pos; + } else if(parentAct instanceof CanvasActivity || parentAct instanceof CanvasOptionalActivity) { + Debugger.log("canvas/optional par: " + parentAct, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + + return getXYPos(parentAct, false, pos.x, pos.y); + } else if(ca.isSequenceChild) { + Debugger.log("seq par: " + ca._parent._parent, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + + return getXYPos(ca._parent._parent, false, pos.x, pos.y); + } else { + Debugger.log("returning normal: " + pos, Debugger.CRITICAL, "getXYPos", "CanvasBranchView"); + + return pos; + } } /** @@ -837,22 +897,45 @@ //var cy:Number = ba._y + ba.getVisibleHeight()/2; //Debugger.log("current: " + ba.activity.activityUIID, Debugger.CRITICAL, "setPosition", "CanvasBranchView"); + _x = cx; + _y = cy; if(_isBranchChild) Debugger.log("bc cx: " + cx + " // bc cy: " + cy, Debugger.CRITICAL, "setPosition", "CanvasBranchView"); var hPosition:Number = (model instanceof CanvasModel) ? model.getCanvas().view.getScrollPaneHPosition() : model.getMonitor().getMV().getMonitorSequenceScp().hPosition; var vPosition:Number = (model instanceof CanvasModel) ? model.getCanvas().view.getScrollPaneVPosition() : model.getMonitor().getMV().getMonitorSequenceScp().vPosition; + Debugger.log(" hPosition: " + hPosition, Debugger.CRITICAL, "setPosition", "CanvasBranchView"); + Debugger.log(" vPosition: " + vPosition, Debugger.CRITICAL, "setPosition", "CanvasBranchView"); + canvas_scp._x = (_isBranchChild) ? -cx : -cx + hSpace + hPosition; canvas_scp._y = (_isBranchChild) ? -cy : -cy + vSpace + vPosition; + if(_prevActiveView instanceof CanvasComplexView) + adjustCanvasPosition(_prevActiveView); + close_mc._x = bkg_pnl._x + bkg_pnl.width - close_mc._width - 10; close_mc._y = bkg_pnl._y + 10; } } + private function adjustCanvasPosition(view:CanvasComplexView):Void { + var hPosition:Number = (model instanceof CanvasModel) ? model.getCanvas().view.getScrollPaneHPosition() : model.getMonitor().getMV().getMonitorSequenceScp().hPosition; + var vPosition:Number = (model instanceof CanvasModel) ? model.getCanvas().view.getScrollPaneVPosition() : model.getMonitor().getMV().getMonitorSequenceScp().vPosition; + + canvas_scp._x -= view._x; + canvas_scp._y -= view._y; + + if(view.prevActiveView instanceof CanvasComplexView) { + adjustCanvasPosition(view.prevActiveView); + } else if(view.prevActiveView instanceof CanvasBranchView) { + canvas_scp._x -= (hSpace + hPosition); + canvas_scp._y -= (hSpace + vPosition); + } + } + /** * Get the CSSStyleDeclaration objects for each component and apply them * directly to the instance @@ -1005,4 +1088,16 @@ public function set prevActiveView(a:MovieClip):Void { _prevActiveView = a; } + + public function get prevActiveView():MovieClip { + return _prevActiveView; + } + + public function get scrollpane():MovieClip { + return canvas_scp; + } + + public function get closeButton():MovieClip { + return close_mc; + } } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as =================================================================== diff -u -rb67f799fb4c81cd50dbcb8a5d85546ecd4852f98 -r6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as (.../CanvasActivity.as) (revision b67f799fb4c81cd50dbcb8a5d85546ecd4852f98) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as (.../CanvasActivity.as) (revision 6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3) @@ -709,6 +709,10 @@ _isSelected = v; } + public function get isSequenceChild():Boolean{ + return _sequenceChild; + } + public function get activity():Activity{ return getActivity(); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasComplexView.as =================================================================== diff -u -r434299dda2df6be5bd2f7dff51ed8872a3469058 -r6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasComplexView.as (.../CanvasComplexView.as) (revision 434299dda2df6be5bd2f7dff51ed8872a3469058) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasComplexView.as (.../CanvasComplexView.as) (revision 6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3) @@ -66,14 +66,15 @@ private var lastScreenHeight:Number = 300; private var activitiesDisplayed:Hashtable; + private var _branchingToClear:Array; /** * Constructor */ function CanvasComplexView(){ _canvasComplexView = this; _tm = ThemeManager.getInstance(); - + _branchingToClear = new Array(); //activitiesDisplayed = new Hashtable("activitiesDisplayed"); //Init for event delegation @@ -198,11 +199,23 @@ public function close():Void { removeActivity(_complexActivity.activity, model); + Debugger.log("setting new activeview: " + _prevActiveView, Debugger.CRITICAL, "close", "CanvasComplexView"); + model.activeView = _prevActiveView; model.currentBranchingActivity = (_prevActiveView.activity.isBranchingActivity()) ? _prevActiveView.activity : null; model.removeObserver(this); + for(var i=0; i 0) ? CanvasActivity(canvasModel.openBranchingActivities[canvasModel.openBranchingActivities.length-1]) : null; if(prevActiveView != null) canvasModel.activeView = prevActiveView; else canvasModel.activeView = (parentBranching.activity.isBranchingActivity()) ? parentBranching.activity.branchView : canvasView; + canvasModel.currentBranchingActivity = (parentBranching.activity.isBranchingActivity()) ? parentBranching : null; + if(canvasModel.activeView instanceof CanvasComplexView) + CanvasComplexView(canvasModel.activeView).branchingToClear.push(branchingAct); + Debugger.log("activeView: " + canvasModel.activeView, Debugger.CRITICAL, "closeBranchView", "CanvasHelper"); Debugger.log("currentBranchingActivity: " + canvasModel.currentBranchingActivity, Debugger.CRITICAL, "closeBranchView", "CanvasHelper"); @@ -563,7 +567,7 @@ var cy:Number = ba._y + ba.getVisibleHeight()/2; var isVisible:Boolean = (visible == null) ? true : visible; - var target:MovieClip = (canvasModel.activeView instanceof CanvasBranchView) ? canvasModel.activeView.branchContent : _canvasView_mc.branchContent; + var target:MovieClip = canvasModel.activeView.branchContent; //(canvasModel.activeView instanceof CanvasBranchView) ? canvasModel.activeView.branchContent : _canvasView_mc.branchContent; Debugger.log("canvasModel.activeView: "+ canvasModel.activeView, Debugger.CRITICAL, "openBranchView", "CanvasHelper"); @@ -584,7 +588,7 @@ public function openComplexView(ca:Object):Void { - var target:MovieClip = (canvasModel.activeView instanceof CanvasBranchView) ? canvasModel.activeView.complexViewer : _canvasView_mc.complexViewer; + var target:MovieClip = canvasModel.activeView.complexViewer; // (canvasModel.activeView instanceof CanvasBranchView || canvasModel) ? canvasModel.activeView.complexViewer : _canvasView_mc.complexViewer; var cx:Number; var cy:Number; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r26439593198fe66ffa48fe8aa5356edd7c20653a -r6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 26439593198fe66ffa48fe8aa5356edd7c20653a) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3) @@ -1098,20 +1098,21 @@ Debugger.log("currentBranchingActivity UIID: " + currentBranchingActivity.activity.activityUIID, Debugger.CRITICAL, "openBranchActivityContent", "CanvasModel"); Debugger.log("branchView: " + ba.activity.branchView, Debugger.CRITICAL, "openBranchActivityContent", "CanvasModel"); - if(BranchingActivity(ba.activity).clear) { + if(BranchingActivity(ba.activity).clear) clearBranchingActivity(ba); - MovieClipUtils.doLater(Proxy.create(_cv, _cv.openBranchView, currentBranchingActivity, visible)); - } else if(ba.activity.branchView != null) { + + if(ba.activity.branchView != null) { ba.activity.branchView.prevActiveView = activeView; activeView = (visible) ? ba.activity.branchView : activeView; ba.activity.branchView.setOpen(visible); ba.activity.branchView.open(); openBranchingActivities.push(ba); } else { - _cv.openBranchView(currentBranchingActivity, visible); } + _cv.openBranchView(currentBranchingActivity, visible); + } - _lastBranchActionType = null; + _lastBranchActionType = null; } } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasOptionalActivity.as =================================================================== diff -u -r9f7654858183353bddf5f412a2f23b386a9862cb -r6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasOptionalActivity.as (.../CanvasOptionalActivity.as) (revision 9f7654858183353bddf5f412a2f23b386a9862cb) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasOptionalActivity.as (.../CanvasOptionalActivity.as) (revision 6b6d09c3963a2e944c0cb122c85479fb1f5f5ae3) @@ -250,12 +250,12 @@ MovieClipUtils.doLater(Proxy.create(this, draw)); } - public function removeAllChildren():Void { + public function removeAllChildren(removeBranchView:Boolean):Void { for(var j=0; j '+ca.activity.parentUIID,Debugger.GEN,'addParentToActivity','CanvasModel'); - if(ca.activity.isBranchingActivity()) + if(ca.activity.isBranchingActivity()) { ca.activity.clear = true; + } else if(ca.activity.isOptionalActivity() || ca.activity.isOptionsWithSequencesActivity()) { + Debugger.log("clearing sub branching acts: " + ca.actChildren.length, Debugger.CRITICAL, "addParentToActivity", "CanvasSuperModel"); + for(var i=0; i