Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -rc00280fd5bd4810407e1105e5aad52218ff7bf6e -rfac001f56e1427654498b0888139e2dcfff7f6a6 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision c00280fd5bd4810407e1105e5aad52218ff7bf6e) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision fac001f56e1427654498b0888139e2dcfff7f6a6) @@ -862,9 +862,10 @@ var myBranches:Array = new Array(); var hub = null; var target = null; + var sequence = null; for(var i=0; i= 0) ? calcEdgePoint(degs - 180, toOTC.x, toOTC.y, toAct_Deg, _endPoint) @@ -112,13 +104,6 @@ arrow_mc._y = (_startPoint.y + _endPoint.y)/2; } - Debugger.log("startPoint: (" + _startPoint.x + ", " + _startPoint.y + ")", Debugger.CRITICAL, "draw", "CanvasConnection"); - Debugger.log("fromAct edge point: (" + _fromAct_edgePoint.x + ", " + _fromAct_edgePoint.y + ")", Debugger.CRITICAL, "draw", "CanvasConnection"); - Debugger.log("toAct edge point: (" + _toAct_edgePoint.x + ", " + _toAct_edgePoint.y + ")", Debugger.CRITICAL, "draw", "CanvasConnection"); - Debugger.log("endPoint: (" + _endPoint.x + ", " + _endPoint.y + ")", Debugger.CRITICAL, "draw", "CanvasConnection"); - - Debugger.log("mid point: (" + _midPoint.x + ", " + _midPoint.y + ")", Debugger.CRITICAL, "draw", "CanvasConnection"); - arrow_mc._rotation = degs; arrow_mc._visible = true; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as =================================================================== diff -u -rc00280fd5bd4810407e1105e5aad52218ff7bf6e -rfac001f56e1427654498b0888139e2dcfff7f6a6 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision c00280fd5bd4810407e1105e5aad52218ff7bf6e) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision fac001f56e1427654498b0888139e2dcfff7f6a6) @@ -415,7 +415,7 @@ if(_canvasModel.isDragging){ ct.stopDrag(); - if (ct.hitTest(_canvasModel.getCanvas().bin) && !isTransitionTargetReadOnly(ct, Dictionary.getValue("cv_element_readOnly_action_del"))){ + if(ct.hitTest(_canvasModel.getCanvas().bin) && !isTransitionTargetReadOnly(ct, Dictionary.getValue("cv_element_readOnly_action_del"))){ _canvasModel.getCanvas().removeTransition(ct.transition.transitionUIID); } else { if (ct._x != ct.xPosition){ @@ -432,12 +432,15 @@ Debugger.log("branchRelease Transition:" + bc.branch.branchUIID, Debugger.GEN, "branchRelease", "CanvasController"); if(_canvasModel.isDragging){ bc.stopDrag(); - + if(bc.hitTest(_canvasModel.getCanvas().bin) && !isBranchTargetReadOnly(bc, Dictionary.getValue("cv_element_readOnly_action_del"))){ + _canvasModel.getCanvas().removeBranch(bc.branch.branchUIID); + } else { if (bc._x != bc.xPosition){ var t = _canvasModel.branchesDisplayed.remove(bc.branch.branchUIID); t.removeMovieClip(); _canvasModel.setDirty(); } + } } } @@ -567,6 +570,15 @@ } } + private function isBranchTargetReadOnly(bc:BranchConnector, action:String):Boolean { + if(_canvasModel.getActivityMCByUIID(bc.branch.targetUIID).activity.isReadOnly()) { + LFMessage.showMessageAlert(Dictionary.getValue('cv_trans_readOnly', [action])); // TODO: change dictionary message. + return true; + } else { + return false; + } + } + private function isActivityReadOnly(ca:Object, action:String):Boolean { if(Activity(ca.activity).isReadOnly()) { LFMessage.showMessageAlert(Dictionary.getValue('cv_activity_readOnly', [action])); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r5b9f0b150997ca847824b7beba180b2a1006a68c -rfac001f56e1427654498b0888139e2dcfff7f6a6 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 5b9f0b150997ca847824b7beba180b2a1006a68c) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision fac001f56e1427654498b0888139e2dcfff7f6a6) @@ -623,7 +623,8 @@ Debugger.log('No validation errors, creating branch.......' + b,Debugger.GEN,'addActivityToBranch','CanvasModel'); //add it to the DDM - var success:Object = _cv.ddm.addBranch(b); + if(b != null) + var success:Object = _cv.ddm.addBranch(b); //flag the model as dirty and trigger a refresh _cv.stopTransitionTool(); @@ -674,6 +675,11 @@ if(!_cv.ddm.activities.containsKey(toAct)){ return new LFError(Dictionary.getValue('cv_trans_target_act_missing'),"addActivityToTransition",this); } + + var branch = _cv.ddm.getBranchesForActivityUIID(toAct); + if(branch.target != null) { + return new LFError("Can't create transition between activities in different branches", "addActivityToTransition", this); + } //check there is not already a transition to or from this activity: var transitionsArray:Array = _cv.ddm.transitions.values(); @@ -776,8 +782,8 @@ var toAct:Activity = transitionActs[1]; var sequence:Activity = _cv.ddm.getActivityByUIID(fromAct.parentUIID); - var b:Branch = new Branch(_cv.ddm.newUIID(), BranchConnector.DIR_TO_END, fromAct.activityUIID, activeView.endHub.activity.activityUIID, sequence, _cv.ddm.learningDesignID); - + var b:Branch = (_cv.ddm.getBranchesForActivityUIID(sequence.activityUIID).myBranches.length > 0) ? new Branch(_cv.ddm.newUIID(), BranchConnector.DIR_TO_END, fromAct.activityUIID, activeView.endHub.activity.activityUIID, sequence, _cv.ddm.learningDesignID) + : null; return b; }