Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r52ec15b45f4a95d5b34fc5117f4271b8ebdbecd8 -rb0054257349ffef3a3cd82ecd30eb6e5b48ad953 Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r52ec15b45f4a95d5b34fc5117f4271b8ebdbecd8 -rb0054257349ffef3a3cd82ecd30eb6e5b48ad953 Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r52ec15b45f4a95d5b34fc5117f4271b8ebdbecd8 -rb0054257349ffef3a3cd82ecd30eb6e5b48ad953 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 52ec15b45f4a95d5b34fc5117f4271b8ebdbecd8) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision b0054257349ffef3a3cd82ecd30eb6e5b48ad953) @@ -65,8 +65,8 @@ private var lastScreenHeight:Number = 300; private var grid_mc:Object; - private var hSpace:Number = 30; - private var vSpace:Number = 30; + public static var hSpace:Number = 30; + public static var vSpace:Number = 30; private var currentActivity_x:Number; private var currentActivity_y:Number; @@ -775,4 +775,10 @@ if(_mm != null) return _mm; return null; } + + public function get ddm():DesignDataModel { + if(model instanceof CanvasModel) return CanvasModel(model).ddm + else return MonitorModel(model).ddm; + } + } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as =================================================================== diff -u -rfc0f0136963cabbd4cad612035c80dc35c5717ff -rb0054257349ffef3a3cd82ecd30eb6e5b48ad953 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision fc0f0136963cabbd4cad612035c80dc35c5717ff) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision b0054257349ffef3a3cd82ecd30eb6e5b48ad953) @@ -152,6 +152,7 @@ } _canvasModel.getCanvas().stopActiveTool(); + var optionalOnCanvas:Array = _canvasModel.findOptionalActivities(); var parallelOnCanvas:Array = _canvasModel.findParallelActivities(); @@ -161,7 +162,15 @@ var sequenceActivity:Activity = _canvasModel.getCanvas().ddm.getActivityByUIID(ca.activity.parentUIID); var selectedParentActivity:Activity = _canvasModel.getCanvas().ddm.getActivityByUIID(_tempSelectedItem.activity.parentUIID); - + + var iconMouseX = _xmouse - _canvasModel.getPosition().x; + var iconMouseY = _ymouse - _canvasModel.getPosition().y; + + if(_canvasModel.activeView instanceof CanvasBranchView) { + iconMouseX -= CanvasBranchView.hSpace; + iconMouseY -= CanvasBranchView.vSpace; + } + if (ca.activity.parentUIID != null && sequenceActivity.activityTypeID != Activity.SEQUENCE_ACTIVITY_TYPE){ @@ -172,9 +181,11 @@ ca._x < -129 || ca._y < -55 || ca._y > optionalOnCanvas[i].panelHeight) { + //give it the new co-ords and 'drop' it - ca.activity.xCoord = (_xmouse - _canvasModel.getPosition().x) - (_canvasModel.getCanvas().taWidth/2); - ca.activity.yCoord = (_ymouse - _canvasModel.getPosition().y) - (_canvasModel.getCanvas().taHeight/2); + ca.activity.xCoord = iconMouseX - (_canvasModel.getCanvas().taWidth/2); + ca.activity.yCoord = iconMouseY - (_canvasModel.getCanvas().taHeight/2); + _canvasModel.removeOptionalCA(ca, optionalOnCanvas[i].activity.activityUIID); } else { activitySnapBack(ca); @@ -185,7 +196,7 @@ } } else if(ca.activity.parentUIID != null && - sequenceActivity.isSequenceActivity()) { + sequenceActivity.isOptionalSequenceActivity(_canvasModel.getCanvas().ddm.getActivityByUIID(sequenceActivity.parentUIID))) { for (var i=0; i optionalOnCanvas[i].getVisibleHeight() - sequenceActivity.yCoord) { - ca.activity.xCoord = (_xmouse - _canvasModel.getPosition().x) - (_canvasModel.getCanvas().taWidth/2); - ca.activity.yCoord = (_ymouse - _canvasModel.getPosition().y) - (_canvasModel.getCanvas().taHeight/2); + ca.activity.xCoord = iconMouseX - (_canvasModel.getCanvas().taWidth/2); + ca.activity.yCoord = iconMouseY - (_canvasModel.getCanvas().taHeight/2); _canvasModel.removeOptionalSequenceCA(ca, optionalOnCanvas[i].activity.activityUIID); } else { @@ -210,7 +221,8 @@ } } else { - + Debugger.log("normal optional case", Debugger.CRITICAL, "activityRelease", "CanvasController"); + //if we are on the optional Activity remove this activity from canvas and assign it a parentID of optional activity and place it in the optional activity window. for (var i=0; i 1) _canvasModel.createSequenceTransition(CanvasSequenceActivity(selectedSequence).lastActivity, ca.activity); else ComplexActivity(selectedSequence.activity).firstActivityUIID = ca.activity.activityUIID; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r52ec15b45f4a95d5b34fc5117f4271b8ebdbecd8 -rb0054257349ffef3a3cd82ecd30eb6e5b48ad953 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 52ec15b45f4a95d5b34fc5117f4271b8ebdbecd8) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision b0054257349ffef3a3cd82ecd30eb6e5b48ad953) @@ -62,44 +62,7 @@ EventDispatcher.initialize(this); } - - public function haltRefresh(a:Boolean):Void { - _doRefresh = !a; - } - - public function setDirty(){ - _isDirty = true; - - if(getCanvas().ddm.learningDesignID == undefined){ - LFMenuBar.getInstance().enableExport(false); - } else { - LFMenuBar.getInstance().enableExport(true); - } - if(_doRefresh) refreshDesign(); - } - - public function lockAllComplexActivities():Void{ - Debugger.log("Locking all Complex Activities", Debugger.GEN, "lockAllComplexActivities", "CanvasModel"); - var k:Array = _activitiesDisplayed.values(); - for (var i=0; i 0 || ddm_activity.parentUIID > 0){ - var parentAct; - if((parentAct = _cv.ddm.activities.get(ddm_activity.parentUIID)) != null) - if(parentAct.activityTypeID == Activity.SEQUENCE_ACTIVITY_TYPE && !parentAct.isOptionalSequenceActivity(_cv.ddm.activities.get(parentAct.parentUIID))) { - SequenceActivity(parentAct).empty = false; - return r = "NEW_SEQ_CHILD"; - } - - return r = "CHILD"; - } - - //check for a new act in the dmm - if(cm_activity == null || cm_activity == undefined){ - return r = "NEW"; - } - } - - /** - * Compares 2 transitions, decides if they are new, the same or to be deleted - * @usage - * @param ddm_transition - * @param cm_transition - * @return - */ - private function compareTransitions(ddm_transition:Transition, cm_transition:Transition):Object{ - Debugger.log('Comparing ddm_transition:'+ddm_transition.title + '(' +ddm_transition.transitionUIID+') WITH cm_transition:' + cm_transition.title + '(' + cm_transition.transitionUIID +')' ,Debugger.GEN,'compareTransitions','CanvasModel'); - return compareConnections(ddm_transition, cm_transition); - } - - private function compareBranches(ddm_branch:Branch, cm_branch:Branch):Object{ - Debugger.log('Comparing ddm_branch:'+ddm_branch.title + '(' +ddm_branch.branchUIID+') WITH cm_branch:' + cm_branch.title + '(' + cm_branch.branchUIID +')' ,Debugger.GEN,'compareBranches','CanvasModel'); - return compareConnections(ddm_branch, cm_branch); - } - - private function compareConnections(ddm_connect, cm_connect):Object{ - var r:Object = new Object(); - if(ddm_connect === cm_connect){ - return r = "SAME"; - } - - //check for a new connection in the dmm - if(cm_connect == null){ - return r = "NEW"; - } - - //check if connection has been removed from canvas - if(ddm_connect == null){ - return r = "DELETE"; - } - } - - /** - * Compares the design in the CanvasModel (what is displayed on the screen) - * against the design in the DesignDataModel and updates the Canvas Model accordingly. - * NOTE: Design elements are added to the DDM here, but removed in the View - * - * @usage - * @return - */ - private function refreshDesign(){ - - Debugger.log('Running',Debugger.GEN,'refreshDesign','CanvasModel'); - - //go through the design and see what has changed, compare DDM to canvasModel - var ddmActivity_keys:Array = _cv.ddm.activities.keys(); - Debugger.log('ddmActivity_keys.length:'+ddmActivity_keys.length,Debugger.GEN,'refreshDesign','CanvasModel'); - - var cmActivity_keys:Array = _activitiesDisplayed.keys(); - Debugger.log('cmActivity_keys.length:'+cmActivity_keys.length,Debugger.GEN,'refreshDesign','CanvasModel'); - - var longest = Math.max(ddmActivity_keys.length, cmActivity_keys.length); - - //chose which array we are going to loop over - var indexArray:Array; - - if(ddmActivity_keys.length == longest){ - indexArray = ddmActivity_keys; - }else{ - indexArray = cmActivity_keys; - } - - //loop through and do comparison - for(var i=0;i 0 || ddm_activity.parentUIID > 0){ + var parentAct; + if((parentAct = _cv.ddm.activities.get(ddm_activity.parentUIID)) != null) + if(parentAct.activityTypeID == Activity.SEQUENCE_ACTIVITY_TYPE && !parentAct.isOptionalSequenceActivity(_cv.ddm.activities.get(parentAct.parentUIID))) { + SequenceActivity(parentAct).empty = false; + return r = "NEW_SEQ_CHILD"; + } + + return r = "CHILD"; + } + + //check for a new act in the dmm + if(cm_activity == null || cm_activity == undefined){ + return r = "NEW"; + } + } + + /** + * Compares 2 transitions, decides if they are new, the same or to be deleted + * @usage + * @param ddm_transition + * @param cm_transition + * @return + */ + private function compareTransitions(ddm_transition:Transition, cm_transition:Transition):Object{ + Debugger.log('Comparing ddm_transition:'+ddm_transition.title + '(' +ddm_transition.transitionUIID+') WITH cm_transition:' + cm_transition.title + '(' + cm_transition.transitionUIID +')' ,Debugger.GEN,'compareTransitions','CanvasModel'); + return compareConnections(ddm_transition, cm_transition); + } + + private function compareBranches(ddm_branch:Branch, cm_branch:Branch):Object{ + Debugger.log('Comparing ddm_branch:'+ddm_branch.title + '(' +ddm_branch.branchUIID+') WITH cm_branch:' + cm_branch.title + '(' + cm_branch.branchUIID +')' ,Debugger.GEN,'compareBranches','CanvasModel'); + return compareConnections(ddm_branch, cm_branch); + } + + private function compareConnections(ddm_connect, cm_connect):Object{ + var r:Object = new Object(); + if(ddm_connect === cm_connect){ + return r = "SAME"; + } + + //check for a new connection in the dmm + if(cm_connect == null){ + return r = "NEW"; + } + + //check if connection has been removed from canvas + if(ddm_connect == null){ + return r = "DELETE"; + } + } + + /** + * Compares the design in the CanvasModel (what is displayed on the screen) + * against the design in the DesignDataModel and updates the Canvas Model accordingly. + * NOTE: Design elements are added to the DDM here, but removed in the View + * + * @usage + * @return + */ + private function refreshDesign(){ + + Debugger.log('Running',Debugger.GEN,'refreshDesign','CanvasModel'); + + //go through the design and see what has changed, compare DDM to canvasModel + var ddmActivity_keys:Array = _cv.ddm.activities.keys(); + Debugger.log('ddmActivity_keys.length:'+ddmActivity_keys.length,Debugger.GEN,'refreshDesign','CanvasModel'); + + var cmActivity_keys:Array = _activitiesDisplayed.keys(); + Debugger.log('cmActivity_keys.length:'+cmActivity_keys.length,Debugger.GEN,'refreshDesign','CanvasModel'); + + var longest = Math.max(ddmActivity_keys.length, cmActivity_keys.length); + + //chose which array we are going to loop over + var indexArray:Array; + + if(ddmActivity_keys.length == longest){ + indexArray = ddmActivity_keys; + }else{ + indexArray = cmActivity_keys; + } + + //loop through and do comparison + for(var i=0;i