Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r0379c3c050496e1bd6fc6406ae13221ff11bc937 -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r0379c3c050496e1bd6fc6406ae13221ff11bc937 -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r72685d659861b2cc84b109799cc20738ae839fad -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 72685d659861b2cc84b109799cc20738ae839fad) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -1594,11 +1594,12 @@ public function getNextSequenceOrderID(activityUIID:Number):Number { var _children:Array = getComplexActivityChildren(activityUIID); _children.sortOn('orderID', Array.NUMERIC | Array.DESCENDING); + Debugger.log("children length: " + _children.length, Debugger.CRITICAL, "getNextSequenceOrderID", "DDM"); if(_children.length > 0) return _children[0].orderID+1; else - return 0; + return 1; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as =================================================================== diff -u -r72685d659861b2cc84b109799cc20738ae839fad -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 72685d659861b2cc84b109799cc20738ae839fad) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -297,7 +297,7 @@ * @param ta TemplateActivity * @return */ - public function setDroppedTemplateActivity(ta:TemplateActivity, taParent:Number):Void{ + public function setDroppedTemplateActivity(ta:TemplateActivity, taParent:Number, sequence:CanvasSequenceActivity):Void{ var actToCopy:Activity = ta.mainActivity; //loosly typed this var as it might be any type of activity @@ -385,10 +385,12 @@ //select the new thing if (taParent != undefined || taParent != null){ var sequenceAct:Activity = canvasModel.getCanvas().ddm.getActivityByUIID(taParent); - if(sequenceAct.isSequenceActivity()) { + if(sequenceAct.isSequenceActivity() && sequence != null) { actToAdd.orderID = canvasModel.getCanvas().ddm.getNextSequenceOrderID(sequenceAct.activityUIID); - if(actToAdd.orderID > 1) canvasModel.createSequenceTransition(sequenceAct, actToAdd); - + + if(actToAdd.orderID > 1) canvasModel.createSequenceTransition(sequence.lastActivity, actToAdd); + else ComplexActivity(sequenceAct).firstActivityUIID = actToAdd.activityUIID; + canvasModel.removeActivity(sequenceAct.parentUIID); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as =================================================================== diff -u -r0379c3c050496e1bd6fc6406ae13221ff11bc937 -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision 0379c3c050496e1bd6fc6406ae13221ff11bc937) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -255,13 +255,23 @@ } if(selectedSequence != null) { + Debugger.log("ca " + ca.activity.activityUIID, Debugger.CRITICAL, "activityRelease", "CanvasController"); + ca.activity.orderID = _canvasModel.getCanvas().ddm.getNextSequenceOrderID(selectedSequence.activity.activityUIID); + Debugger.log("orderID " + _canvasModel.getCanvas().ddm.getNextSequenceOrderID(selectedSequence.activity.activityUIID), Debugger.CRITICAL, "activityRelease", "CanvasController"); + + if(ca.activity.orderID > 1) _canvasModel.createSequenceTransition(CanvasSequenceActivity(selectedSequence).lastActivity, ca.activity); + else ComplexActivity(selectedSequence.activity).firstActivityUIID = ca.activity.activityUIID; + _canvasModel.addParentToActivity(selectedSequence.activity.activityUIID, ca, false); + - if(ca.activity.orderID > 1) _canvasModel.createSequenceTransition(selectedSequence.activity, ca.activity); + Debugger.log("ca " + ca.activity.activityUIID, Debugger.CRITICAL, "activityRelease", "CanvasController"); + Debugger.log("orderID " + ca.activity.orderID, Debugger.CRITICAL, "activityRelease", "CanvasController"); CanvasSequenceActivity(selectedSequence).updateChildren(); CanvasOptionalActivity(_canvasModel.activitiesDisplayed.get(selectedSequence.activity.parentUIID)).updateChildren(); + } else { activitySnapBack(ca); var msg:String = Dictionary.getValue('activityDrop_optSequence_error_msg'); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r0379c3c050496e1bd6fc6406ae13221ff11bc937 -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 0379c3c050496e1bd6fc6406ae13221ff11bc937) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -63,6 +63,10 @@ } + public function haltRefresh(a:Boolean):Void { + _doRefresh = !a; + } + public function setDirty(){ _isDirty = true; @@ -72,7 +76,7 @@ LFMenuBar.getInstance().enableExport(true); } - refreshDesign(); + if(_doRefresh) refreshDesign(); } public function lockAllComplexActivities():Void{ @@ -159,22 +163,24 @@ * @return */ - public function createSequenceTransition(sequence:Activity, toActivity:Activity):Void { - var fromActivity:Activity + public function createSequenceTransition(fromActivity:Activity, toActivity:Activity):Void { + /** var fromActivity:Activity; var _children:Array = _cv.ddm.getComplexActivityChildren(sequence.activityUIID); _children.sortOn('orderID', Array.NUMERIC); + Debugger.log("toActivity orderID " + toActivity.orderID, Debugger.CRITICAL, "createSequenceTransition", "CanvasModel"); var _index:Number = toActivity.orderID - 2; if(_index >= 0) { fromActivity = _children[_index]; - + Debugger.log("fromActivity " + fromActivity.activityUIID, Debugger.CRITICAL, "createSequenceTransition", "CanvasModel"); + */ addActivityToTransition(fromActivity); addActivityToTransition(toActivity); resetTransitionTool(); - } + //} setDirty(); - } + } /** * Creates a new gate activity at the specified location @@ -376,6 +382,7 @@ public function removeOptionalCA(ca:Object, parentID){ //lets do a test to see if we got the canvas Debugger.log('Removed Child '+ca.activity.activityUIID+ 'from : '+ca.activity.parentUIID,Debugger.GEN,'removeOptionalCA','CanvasModel'); + haltRefresh(true); ca.activity.parentUIID = (activeView instanceof CanvasBranchView) ? activeView.defaultSequenceActivity.activityUIID : null; ca.activity.orderID = null; @@ -384,20 +391,39 @@ removeActivity(ca.activity.activityUIID); removeActivity(parentID); + haltRefresh(false); setDirty(); } public function removeOptionalSequenceCA(ca:Object, parentID){ + haltRefresh(true); + var sequence:Activity = _cv.ddm.getActivityByUIID(ca.activity.parentUIID); + var transitionObj:Object = _cv.ddm.getTransitionsForActivityUIID(ca.activity.activityUIID); + 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; - getCanvas().ddm.removeTransitionByConnection(ca.activity.activityUIID); + 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 + } + _cv.ddm.removeTransitionByConnection(ca.activity.activityUIID); + + if(toActivity != null) createSequenceTransition(fromActivity, toActivity); + + _cv.ddm.getComplexActivityChildren(sequence.activityUIID); + removeActivity(parentID); + haltRefresh(false); setDirty(); } @@ -406,11 +432,13 @@ */ public function removeComplexActivity(ca){ Debugger.log('Removing Complex Activity: ' + ca.activity.activityUIID,Debugger.GEN,'removeComplexActivity','CanvasModel'); + haltRefresh(true); // recursively remove all children removeComplexActivityChildren(ca.actChildren); removeActivityOnBin(ca.activity.activityUIID); + haltRefresh(false); setDirty(); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSequenceActivity.as =================================================================== diff -u -r0379c3c050496e1bd6fc6406ae13221ff11bc937 -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSequenceActivity.as (.../CanvasSequenceActivity.as) (revision 0379c3c050496e1bd6fc6406ae13221ff11bc937) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSequenceActivity.as (.../CanvasSequenceActivity.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -110,6 +110,7 @@ _tm = ThemeManager.getInstance(); _ccm = CustomContextMenu.getInstance(); _ddm = getDDM(); + _children = new Array(); //Get reference to application and design data model app = ApplicationParent.getInstance(); @@ -149,22 +150,27 @@ } _canvasModel = CanvasModel(_canvasController.getModel()); - _children = _ddm.getComplexActivityChildren(_activity.activityUIID); + if(ComplexActivity(_activity).firstActivityUIID != null) + _children.push(_ddm.getActivityByUIID(ComplexActivity(_activity).firstActivityUIID)); + showAssets(false); if (_activity.selectActivity == "false"){ _isSelected = false; refresh(); } - if(_children.length > 0) - SequenceActivity(_activity).empty = false; - removeAllChildren(); - children_mc = new Array(); + if(_children.length > 0) { + SequenceActivity(_activity).empty = false; + 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}); @@ -185,6 +191,7 @@ children_mc[i]._visible = true; } + */ var _newVisibleWidth:Number = (_children.length*CHILD_INCRE) + (CHILD_OFFSET_X*2) + 6; if(_newVisibleWidth > CanvasSequenceActivity.TOOL_ACTIVITY_WIDTH) @@ -195,10 +202,33 @@ MovieClipUtils.doLater(Proxy.create(this, draw)); } + private function drawChildActivity(a:Activity):Void { + var childActivity:MovieClip; + if(_module == "monitoring") + childActivity = childActivities_mc.attachMovie("CanvasActivityMin", "CanvasActivityMin"+a.activityUIID, childActivities_mc.getNextHighestDepth(), {_activity:a , _monitorController:_monitorController, _monitorView:_monitorView, _module:"monitoring", learnerContainer:learnerContainer, _sequenceChild:true}); + else + childActivity = childActivities_mc.attachMovie("CanvasActivityMin", "CanvasActivityMin"+a.activityUIID, childActivities_mc.getNextHighestDepth(), {_activity:a , _canvasController:_canvasController, _canvasView:_canvasView, _sequenceChild:true}); + + //set the positioning co-ords + childActivity.activity.xCoord = CHILD_OFFSET_X + ((_children.length-1) * CHILD_INCRE); + childActivity.activity.yCoord = CHILD_OFFSET_Y; + childActivity._visible = true; + + children_mc.push(childActivity); + Debugger.log("children length: " + _children.length, Debugger.CRITICAL, "drawChildActivity", "CanvasSequenceActivity"); + + var transitionObj:Object = _canvasModel.getCanvas().ddm.getTransitionsForActivityUIID(childActivity.activity.activityUIID) + if(transitionObj.hasTrans && transitionObj.out != null) { + _children.push(_canvasModel.getCanvas().ddm.getActivityByUIID(transitionObj.out.toUIID)) + drawChildActivity(_children[_children.length-1]); + } + } public function updateChildren():Void { _visible = false; _visibleWidth = CanvasSequenceActivity.TOOL_ACTIVITY_HEIGHT; + _children = new Array(); + init(); } @@ -459,5 +489,8 @@ public function get container():MovieClip { return childActivities_mc; } - + + public function get lastActivity():Activity { + return _children[_children.length-1]; + } } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSuperModel.as =================================================================== diff -u -r1aa870575978de0fbe4b5ab485f47d85d9b3c0be -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSuperModel.as (.../CanvasSuperModel.as) (revision 1aa870575978de0fbe4b5ab485f47d85d9b3c0be) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasSuperModel.as (.../CanvasSuperModel.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -72,7 +72,9 @@ private var _currentBranchingActivity:Object; private var _activeView:Object; - private var _lastBranchActionType:Number; + private var _lastBranchActionType:Number; + + private var _doRefresh:Boolean; //These are defined so that the compiler can 'see' the events that are added at runtime by EventDispatcher private var dispatchEvent:Function; @@ -95,6 +97,8 @@ _autoSaveWait = false; _connectionActivities = new Array(); _defaultGroupingTypeID = Grouping.RANDOM_GROUPING; + + _doRefresh = true; //Set up this class to use the Flash event delegation model EventDispatcher.initialize(this); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tk/ToolkitController.as =================================================================== diff -u -rd25e9238849c5bd874163f8433c94b6d606c3433 -rc41b98701f4bbfe9e71e5653ac295ea5c1edf5c3 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tk/ToolkitController.as (.../ToolkitController.as) (revision d25e9238849c5bd874163f8433c94b6d606c3433) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tk/ToolkitController.as (.../ToolkitController.as) (revision c41b98701f4bbfe9e71e5653ac295ea5c1edf5c3) @@ -99,19 +99,23 @@ // test mouse ptr var _children:Array = optionalOnCanvas[i].children; var sequenceDropUIID:Number = null; + var sequence = null; var mouseX = iconMouseX - optionalX; var mouseY = iconMouseY - optionalY; for(var j=0; j<_children.length; j++) { if(mouseX >= _children[j].activity.xCoord && mouseX <= (_children[j].activity.xCoord + _children[j]._width) && mouseY >= _children[j].activity.yCoord && - mouseY <= (_children[j].activity.yCoord + _children[j]._height)) + mouseY <= (_children[j].activity.yCoord + _children[j]._height)) { sequenceDropUIID = _children[j].activity.activityUIID; + sequence = _children[j]; + break; + } } - if(sequenceDropUIID != null) { - cv.setDroppedTemplateActivity(ta, sequenceDropUIID); + if(sequenceDropUIID != null && sequence != null) { + cv.setDroppedTemplateActivity(ta, sequenceDropUIID, sequence); } else { var msg:String = Dictionary.getValue('activityDrop_optSequence_error_msg'); LFMessage.showMessageAlert(msg);