Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -rbcdab8016c59a648b9a9824d0451ac7cd8c55d2e -rb6aefa99414741f15c93b20323fc672ced42ccb3 Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -rbcdab8016c59a648b9a9824d0451ac7cd8c55d2e -rb6aefa99414741f15c93b20323fc672ced42ccb3 Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as =================================================================== diff -u -rbcdab8016c59a648b9a9824d0451ac7cd8c55d2e -rb6aefa99414741f15c93b20323fc672ced42ccb3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision bcdab8016c59a648b9a9824d0451ac7cd8c55d2e) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision b6aefa99414741f15c93b20323fc672ced42ccb3) @@ -65,10 +65,8 @@ } public function activityClick(ca:Object):Void{ - _tempSelectedItem = _canvasModel.selectedItem; - _canvasModel.selectedItem = null; - + Debugger.log('activityClick CanvasActivity:'+ca.activity.activityUIID + ' orderID: ' + ca.activity.orderID,Debugger.GEN,'activityClick','CanvasController'); Debugger.log('Check if transition tool active :'+_canvasModel.isTransitionToolActive(),Debugger.GEN,'activityClick','CanvasController'); @@ -96,7 +94,27 @@ ca.startDrag(false); _canvasModel.isDragging = true; } + + + if(_tempSelectedItem.activity.parentUIID == parentAct.activityUIID && _tempSelectedItem != ca) { + ca.depthHistory = ca.getDepth(); + ca.swapDepths(DepthManager.kTop); + + _tempSelectedItem.swapDepths(_tempSelectedItem.depthHistory); + } else { + ca.depthHistory = ca.getDepth(); + ca.swapDepths(DepthManager.kTop); + } + + var optionalOnCanvas:Array = _canvasModel.findOptionalActivities(); + for (var i=0; i optionalOnCanvas[i].getVisibleWidth() || ca._x < -ca.getVisibleWidth() || @@ -191,18 +193,13 @@ ca.activity.yCoord = (_ymouse - _canvasModel.getPosition().y) - (_canvasModel.getCanvas().taHeight/2); _canvasModel.removeOptionalSequenceCA(ca, optionalOnCanvas[i].activity.activityUIID); - } else { - activitySnapBack(ca); + if(!_canvasModel.moveOptionalSequenceCA(ca, sequenceActivity)) + activitySnapBack(ca); } } - } - - if(selectedParentActivity.parentUIID == optionalOnCanvas[i].activity.activityUIID) { - _tempSelectedItem.swapDepths(_tempSelectedItem.depthHistory); - } } } else { Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -rc865453cba19c7f353a91ba411144403c914703c -rb6aefa99414741f15c93b20323fc672ced42ccb3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision c865453cba19c7f353a91ba411144403c914703c) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision b6aefa99414741f15c93b20323fc672ced42ccb3) @@ -250,7 +250,7 @@ setSelectedItem(_activitiesDisplayed.get(branchingActivity.activityUIID)); } - public function createNewSequenceActivity(parent, orderID){ + public function createNewSequenceActivity(parent, orderID, stopAfterActivity:Boolean){ Debugger.log('Running...',Debugger.GEN,'createNewSequenceActivity','CanvasModel'); var seqAct = new SequenceActivity(_cv.ddm.newUIID()); @@ -259,7 +259,7 @@ seqAct.groupingSupportType = Activity.GROUPING_SUPPORT_OPTIONAL; seqAct.activityCategoryID = Activity.CATEGORY_SYSTEM; seqAct.orderID = (orderID != null || orderID != undefined) ? orderID : 1; - seqAct.stopAfterActivity = true; + seqAct.stopAfterActivity = (stopAfterActivity != null) ? stopAfterActivity : true; if(parent != null) { seqAct.parentActivityID = parent.activityID; @@ -338,8 +338,8 @@ } if(isSequence) { - createNewSequenceActivity(optAct, 0); - createNewSequenceActivity(optAct, 1); + createNewSequenceActivity(optAct, 0, false); + createNewSequenceActivity(optAct, 1, false); optAct.noSequences = 2; } @@ -398,35 +398,132 @@ public function removeOptionalSequenceCA(ca:Object, parentID){ haltRefresh(true); + + ca.activity.parentUIID = (activeView instanceof CanvasBranchView) ? activeView.defaultSequenceActivity.activityUIID : null; + ca.activity.orderID = null; + ca.activity.parentActivityID = (activeView instanceof CanvasBranchView) ? activeView.defaultSequenceActivity.activityID : null; - var sequence:Activity = _cv.ddm.getActivityByUIID(ca.activity.parentUIID); + unhookOptionalSequenceCA(ca); + removeActivity(parentID); + + haltRefresh(false); + setDirty(); + } + + private function unhookOptionalSequenceCA(ca:Object) { var transitionObj:Object = _cv.ddm.getTransitionsForActivityUIID(ca.activity.activityUIID); + var sequence:Activity = _cv.ddm.getActivityByUIID(ca.activity.parentUIID); + var toActivity:Activity = null; var fromActivity:Activity = null; - ca.activity.parentUIID = (activeView instanceof CanvasBranchView) ? activeView.defaultSequenceActivity.activityUIID : null; - ca.activity.orderID = null; - ca.activity.parentActivityID = (activeView instanceof CanvasBranchView) ? activeView.defaultSequenceActivity.activityID : null; - if(transitionObj.into != null && transitionObj.out != null) { toActivity = _cv.ddm.getActivityByUIID(transitionObj.out.toUIID); fromActivity = _cv.ddm.getActivityByUIID(transitionObj.into.fromUIID); } else if(transitionObj.into == null && transitionObj.out != null) { - ComplexActivity(sequence).firstActivityUIID = transitionObj.out.toUIID + ComplexActivity(sequence).firstActivityUIID = transitionObj.out.toUIID; } else if(transitionObj.out == null && transitionObj.into == null) { ComplexActivity(sequence).firstActivityUIID = null; } _cv.ddm.removeTransitionByConnection(ca.activity.activityUIID); + if(toActivity != null && fromActivity != null) createSequenceTransition(fromActivity, toActivity); - if(toActivity != null) createSequenceTransition(fromActivity, toActivity); + } + + public function moveOptionalSequenceCA(ca:Object, parent:Activity):Boolean { + var minDiff:Number = null; + var selectedIndex:Number = null; - _cv.ddm.getComplexActivityChildren(sequence.activityUIID); + var oChildren:Array = _cv.ddm.getComplexActivityChildren(parent.activityUIID); + oChildren.sortOn('orderID', Array.NUMERIC); - removeActivity(parentID); + for(var i=0; i 0 && ca.activity.xCoord > ca._x) { + minDiff = diff; + selectedIndex = i; + } else if((minDiff == null || diff > minDiff) && diff < 0 && ca.activity.xCoord < ca._x) { + minDiff = diff; + selectedIndex = i; + } + } + Debugger.log("selectedIndex: " + selectedIndex, Debugger.CRITICAL, "moveOptionalSequenceCA", "CanvasModel"); + + if(oChildren[selectedIndex] != ca.activity) { + // remove ca from sequence + Debugger.log("selectedIndex order: " + Activity(oChildren[selectedIndex]).orderID, Debugger.CRITICAL, "moveOptionalSequenceCA", "CanvasModel"); + Debugger.log("ca order: " + ca.activity.orderID, Debugger.CRITICAL, "moveOptionalSequenceCA", "CanvasModel"); + + //var _dir:Number = (Activity(oChildren[selectedIndex]).orderID < ca.activity.orderID) ? 0 : 1; + var _dir:Number = (ca.activity.xCoord > ca._x) ? 0 : 1; + + unhookOptionalSequenceCA(ca); + addOptionalSequenceCA(ca, oChildren[selectedIndex], _dir); + + return true; + } + + return false; + } + + private function addOptionalSequenceCA(ca:Object, nextOrPrevActivity:Activity, _dir:Number):Void { + haltRefresh(true); + + Debugger.log("ca: " + ca.activity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + + var sequence:Activity = _cv.ddm.getActivityByUIID(nextOrPrevActivity.parentUIID); + var transitionObj:Object = _cv.ddm.getTransitionsForActivityUIID(nextOrPrevActivity.activityUIID); + + var targetActivity:Activity = null; + + var transition:Transition = (_dir == 0) ? transitionObj.into : transitionObj.out; + Debugger.log("transition length: " + transitionObj.myTransitions.length, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + + if(transition != null) { + targetActivity = (_dir == 0) ? _cv.ddm.getActivityByUIID(transition.fromUIID) : _cv.ddm.getActivityByUIID(transition.toUIID); + } else { + ComplexActivity(sequence).firstActivityUIID = (_dir == 0) ? ca.activity.activityUIID : nextOrPrevActivity.activityUIID; + } + + Debugger.log("targetActivity order: " + targetActivity.orderID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + Debugger.log("transition toUIID: " + transition.toUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + Debugger.log("transition fromUIID: " + transition.fromUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + + Debugger.log("target UIID: " +targetActivity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + Debugger.log("nextOrPrevActivity: " + nextOrPrevActivity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + Debugger.log("direction: " + _dir, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + + //_cv.ddm.removeTransitionByConnection(ca.activity.activityUIID); + + if(targetActivity != null) { + var fromActivity:Activity = (_dir == 0) ? targetActivity : nextOrPrevActivity; + var toActivity:Activity = (_dir == 0) ? nextOrPrevActivity : targetActivity; + + Debugger.log("fromActivity: " + fromActivity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + Debugger.log("toActivity: " + toActivity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + + _cv.ddm.removeTransition(transition.transitionUIID); + createSequenceTransition(fromActivity, ca.activity); + createSequenceTransition(ca.activity, toActivity); + + } else { + var fromActivity:Activity = (_dir == 0) ? ca.activity : nextOrPrevActivity; + var toActivity:Activity = (_dir == 0) ? nextOrPrevActivity : ca.activity; + + Debugger.log("fromActivity: " + fromActivity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + Debugger.log("toActivity: " + toActivity.activityUIID, Debugger.CRITICAL, "addOptionalSequenceCA", "CanvasModel"); + + createSequenceTransition(fromActivity, toActivity); + } + + removeActivity(sequence.parentUIID); haltRefresh(false); + setDirty(); + } /** Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSequenceActivity.as =================================================================== diff -u -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 -rb6aefa99414741f15c93b20323fc672ced42ccb3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSequenceActivity.as (.../CanvasSequenceActivity.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSequenceActivity.as (.../CanvasSequenceActivity.as) (revision b6aefa99414741f15c93b20323fc672ced42ccb3) @@ -169,30 +169,6 @@ drawChildActivity(_children[_children.length-1]); } - - /** - for(var i=0; i<_children.length; i++) { - if(_module == "monitoring") - children_mc[i] = childActivities_mc.attachMovie("CanvasActivityMin", "CanvasActivityMin"+i, childActivities_mc.getNextHighestDepth(), {_activity:_children[i] , _monitorController:_monitorController, _monitorView:_monitorView, _module:"monitoring", learnerContainer:learnerContainer, _sequenceChild:true}); - else - children_mc[i] = childActivities_mc.attachMovie("CanvasActivityMin", "CanvasActivityMin"+i, childActivities_mc.getNextHighestDepth(), {_activity:_children[i] , _canvasController:_canvasController, _canvasView:_canvasView, _sequenceChild:true}); - - if(i == 0) - SequenceActivity(_activity).firstActivityUIID = children_mc[i].activity.activityUIID; - - var transitionObj:Object = _canvasModel.getCanvas().ddm.getTransitionsForActivityUIID(children_mc[i].activity.activityUIID) - if(!transitionObj.hasTrans) - if(i<_children.length-1) - _canvasModel.createSequenceTransition(_activity, children_mc[i].activity.activityUIID); - - //set the positioning co-ords - children_mc[i].activity.xCoord = CHILD_OFFSET_X + (i * CHILD_INCRE); - children_mc[i].activity.yCoord = CHILD_OFFSET_Y; - - children_mc[i]._visible = true; - } - */ - var _newVisibleWidth:Number = (_children.length*CHILD_INCRE) + (CHILD_OFFSET_X*2) + 6; if(_newVisibleWidth > CanvasSequenceActivity.TOOL_ACTIVITY_WIDTH) _visibleWidth = _newVisibleWidth; @@ -215,6 +191,8 @@ childActivity._visible = true; children_mc.push(childActivity); + a.orderID = _children.length; + Debugger.log("children length: " + _children.length, Debugger.CRITICAL, "drawChildActivity", "CanvasSequenceActivity"); var transitionObj:Object = _canvasModel.getCanvas().ddm.getTransitionsForActivityUIID(childActivity.activity.activityUIID) Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspector.as =================================================================== diff -u -r72685d659861b2cc84b109799cc20738ae839fad -rb6aefa99414741f15c93b20323fc672ced42ccb3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspector.as (.../PropertyInspector.as) (revision 72685d659861b2cc84b109799cc20738ae839fad) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspector.as (.../PropertyInspector.as) (revision b6aefa99414741f15c93b20323fc672ced42ccb3) @@ -514,7 +514,7 @@ var o = ComplexActivity(oa); for(var i=0; i