Index: lams_flash/src/central/flash/lams_authoring.fla =================================================================== diff -u -r5ffdfb896de13994030991c7634bb54a7c862404 -rc00280fd5bd4810407e1105e5aad52218ff7bf6e Binary files differ Index: lams_flash/src/central/flash/lams_authoring_main.fla =================================================================== diff -u -r454f3bf280f1ecf3fece8deed5091c50de660fd1 -rc00280fd5bd4810407e1105e5aad52218ff7bf6e Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Branch.as =================================================================== diff -u -r5ffdfb896de13994030991c7634bb54a7c862404 -rc00280fd5bd4810407e1105e5aad52218ff7bf6e --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Branch.as (.../Branch.as) (revision 5ffdfb896de13994030991c7634bb54a7c862404) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Branch.as (.../Branch.as) (revision c00280fd5bd4810407e1105e5aad52218ff7bf6e) @@ -34,19 +34,21 @@ private var _direction:Number; private var _targetUIID:Number; + private var _hubUIID:Number; // TODO: add learningDesignID - public function Branch(activityUIID:Number, _dir:Number, targetUIID:Number, sequenceActivity:Activity, learningDesignID:Number){ + public function Branch(activityUIID:Number, _dir:Number, targetUIID:Number, hubUIID:Number, sequenceActivity:Activity, learningDesignID:Number){ if(_dir == BranchConnector.DIR_FROM_START) - super(null, null, targetUIID, learningDesignID); + super(null, hubUIID, targetUIID, learningDesignID); else - super(null, targetUIID, null, learningDesignID); + super(null, targetUIID, hubUIID, learningDesignID); UIID = activityUIID; _direction = _dir; _targetUIID = targetUIID; + _hubUIID = hubUIID; _sequenceActivity = sequenceActivity; } @@ -73,5 +75,9 @@ public function get targetUIID():Number { return _targetUIID; } + + public function get hubUIID():Number { + return _hubUIID; + } } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r5ffdfb896de13994030991c7634bb54a7c862404 -rc00280fd5bd4810407e1105e5aad52218ff7bf6e --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 5ffdfb896de13994030991c7634bb54a7c862404) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision c00280fd5bd4810407e1105e5aad52218ff7bf6e) @@ -420,7 +420,7 @@ Debugger.log("creating linked Branch for seq: " + newSequenceActivity.activityUIID, Debugger.CRITICAL, "setDesign", "DesignDataModel"); // create linked branch - // var sb:Branch = new Branch(newUIID(), BranchConnector.DIR_FROM_START, newSequenceActivity.firstActivity, newSequenceActivity, learningDesignID); + // var sb:Branch = new Branch(newUIID(), BranchConnector.DIR_FROM_START, hubUIID, newSequenceActivity.firstActivity, newSequenceActivity, learningDesignID); } @@ -860,27 +860,27 @@ var br:Array = _branches.values(); var branchObj = new Object(); var myBranches:Array = new Array(); - var into = null; - var out = null; + var hub = null; + var target = null; for(var i=0; i= 2){ + if(_connectionActivities.length > 0) { + if(_connectionActivities[0].activityUIID == activeView.startHub.activity.activityUIID) { + return addActivityToBranch(activity); + } else { + return addActivityToTransition(activity); + } + } + + _connectionActivities.push(activity); + return true; + } + + private function addActivityToBranch(activity:Activity):Object{ + + if(_connectionActivities.length >= 2){ //TODO: show an error + return new LFError("Too many activities in the Branch","addActivityToBranch",this); + } + + Debugger.log('Adding Activity.UIID:'+activity.activityUIID,Debugger.GEN,'addActivityToBranch','CanvasModel'); + _connectionActivities.push(activity); + + var fromAct = _connectionActivities[0].activityUIID + var toAct = _connectionActivities[1].activityUIID + + //check we have 2 valid acts to create the transition. + if(fromAct == toAct){ + return new LFError("You cannot create a Branch between the same Activities","addActivityToTransition",this); + } + + + if(_connectionActivities.length == 2){ + /********************************************* + * TODO: REQUIRE NORMAL BRANCH CLIENT_SIDE VALIDATION + *********************************************/ + Debugger.log('fromAct: ' + fromAct + " toAct:" + toAct, Debugger.GEN,'addActivityToBranch','CanvasModel'); + + if(!_cv.ddm.activities.containsKey(toAct)){ + return new LFError(Dictionary.getValue('cv_trans_target_act_missing'),"addActivityToBranch",this); + } + + //lets make the connection + var b:Branch = createBranchStartConnector(_connectionActivities); + + Debugger.log('No validation errors, creating branch.......' + b,Debugger.GEN,'addActivityToBranch','CanvasModel'); + + //add it to the DDM + var success:Object = _cv.ddm.addBranch(b); + + //flag the model as dirty and trigger a refresh + _cv.stopTransitionTool(); + + setDirty(); + } + + return true; + } + + /** + * Adds another Canvas Activity to the transition. + * Only 2 may be added, adding the 2nd one triggers the creation of the transition. + * @usage + * @param ca (Canvas or data Activity) + * @return + */ + private function addActivityToTransition(activity:Activity):Object{ + + if(_connectionActivities.length >= 2){ + //TODO: show an error return new LFError("Too many activities in the Transition","addActivityToTransition",this); } Debugger.log('Adding Activity.UIID:'+activity.activityUIID,Debugger.GEN,'addActivityToTransition','CanvasModel'); - _transitionActivities.push(activity); + _connectionActivities.push(activity); - var fromAct = _transitionActivities[0].activityUIID - var toAct = _transitionActivities[1].activityUIID + var fromAct = _connectionActivities[0].activityUIID + var toAct = _connectionActivities[1].activityUIID - if(_transitionActivities.length == 2){ + if(_connectionActivities.length == 2){ - // check if either end is a connector point for Branching - if(activeView.startHub.activity.activityUIID == fromAct || - activeView.endHub.activity.activityUIID == toAct) { + var t:Transition; + + /********************************************* + * BELOW: NORMAL TRANSITION CLIENT_SIDE VALIDATION + *********************************************/ - /********************************************* - * TODO: REQUIRE NORMAL BRANCH CLIENT_SIDE VALIDATION - *********************************************/ + //check we have 2 valid acts to create the transition. + if(fromAct == toAct){ + return new LFError("You cannot create a Transition between the same Activities","addActivityToTransition",this); + } - //check we have 2 valid acts to create the transition. - if(fromAct == toAct){ - return new LFError("You cannot create a Branch between the same Activities","addActivityToTransition",this); - } - - //lets make the connection - var b:Branch = createBranchConnector(_transitionActivities); - Debugger.log('No validation errors, creating branch.......' + b,Debugger.GEN,'addActivityToTransition','CanvasModel'); + if(!_cv.ddm.activities.containsKey(fromAct)){ + return new LFError("First activity of the Transition is missing, UIID:"+_connectionActivities[0].activityUIID,"addActivityToTransition",this); + } - //add it to the DDM - var success:Object = _cv.ddm.addBranch(b); + if(!_cv.ddm.activities.containsKey(toAct)){ + return new LFError(Dictionary.getValue('cv_trans_target_act_missing'),"addActivityToTransition",this); + } - } else { - var t:Transition; - - /********************************************* - * BELOW: NORMAL TRANSITION CLIENT_SIDE VALIDATION - *********************************************/ + //check there is not already a transition to or from this activity: + var transitionsArray:Array = _cv.ddm.transitions.values(); - //check we have 2 valid acts to create the transition. - if(fromAct == toAct){ - return new LFError("You cannot create a Transition between the same Activities","addActivityToTransition",this); + /**/ + for(var i=0;i