Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r8c53f61ed4a3f15b302deda14d1126fd62608d8a -rbf43d38cb2b81bd0cd46b7b78652a4109ea6984d Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r8c53f61ed4a3f15b302deda14d1126fd62608d8a -rbf43d38cb2b81bd0cd46b7b78652a4109ea6984d Binary files differ Index: lams_flash/src/central/flash/lams_authoring.fla =================================================================== diff -u -r8779b233a42b3265a1389a2d49bd00a7b50f9ea8 -rbf43d38cb2b81bd0cd46b7b78652a4109ea6984d Binary files differ Index: lams_flash/src/central/flash/lams_monitoring_v1.fla =================================================================== diff -u -r04c8949c1d97e9d6d4a11382d0e8913d32c98294 -rbf43d38cb2b81bd0cd46b7b78652a4109ea6984d Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r764fac63aac6ba73d6f561c09831cff02052c8d9 -rbf43d38cb2b81bd0cd46b7b78652a4109ea6984d --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 764fac63aac6ba73d6f561c09831cff02052c8d9) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision bf43d38cb2b81bd0cd46b7b78652a4109ea6984d) @@ -427,6 +427,11 @@ if(model instanceof CanvasModel) model.getCanvas().hideBin(); //typo this.activity.clear = false; + + Debugger.log("this._canvasBranchingActivity: "+ this._canvasBranchingActivity, Debugger.CRITICAL, "close", "CanvasBranchView"); + + this._canvasBranchingActivity.refresh(); + model.selectedItem = null; var bkeys:Array = model.branchesDisplayed.keys(); @@ -552,8 +557,8 @@ else if(a.isBranchingActivity()) { BranchingActivity(a).clear = activity.clear; - var newActivity_mc = (_module != "monitoring") ? activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a, _canvasController:cbc,_canvasBranchView:cbv}) - : activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a, _monitorController:cbc,_canvasBranchView:cbv, _module:_module, learnerContainer:_learnerContainer_mc}); + var newActivity_mc = (_module != "monitoring") ? activityLayer.createChildAtDepth("CanvasBranchingActivity",DepthManager.kTop,{_activity:a, _canvasController:cbc,_canvasBranchView:cbv}) + : activityLayer.createChildAtDepth("CanvasBranchingActivity",DepthManager.kTop,{_activity:a, _monitorController:cbc,_canvasBranchView:cbv, _module:_module, learnerContainer:_learnerContainer_mc}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Branching activity Type a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasBranchView'); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchingDiagram.as =================================================================== diff -u --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchingDiagram.as (revision 0) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchingDiagram.as (revision bf43d38cb2b81bd0cd46b7b78652a4109ea6984d) @@ -0,0 +1,242 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * ************************************************************************ + */ + + +import org.lamsfoundation.lams.authoring.DesignDataModel; +import org.lamsfoundation.lams.authoring.Activity; +import org.lamsfoundation.lams.authoring.SequenceActivity; +import org.lamsfoundation.lams.authoring.cv.CanvasActivity; +import org.lamsfoundation.lams.authoring.br.*; + +import org.lamsfoundation.lams.common.util.*; +import org.lamsfoundation.lams.common.style.*; + +/** + * + * @author mseaton + * @version 2.1 + **/ +class CanvasBranchingDiagram extends MovieClip { + + private static var CIRCLE_SIZE:Number = 3; + private static var BRANCH_LIMIT:Number = 5; + + private static var ACTIVITY_LIMIT:Number = 6; + + private var MARGIN_X:Number; + private var MARGIN_Y:Number; + private static var SPACING:Number = 15; + + private var container:MovieClip; + private var line_mc:MovieClip; + + private var _branchingDetails:Array; + private var _branchingActivity:Activity; + private var activitylessDrawn:Boolean; + private var activitylessToBeDrawn:Boolean; + + private var _empty:Boolean; + + private var _canvasActivity:CanvasActivity; + private var _ddm:DesignDataModel; + private var _tm:ThemeManager; + + // style colors + private var lineColor:Number; + private var fillColor:Number; + private var stopColor:Number; + + public function CanvasBranchingDiagram() { + // get branching details + _canvasActivity = CanvasActivity(this._parent); + _tm = ThemeManager.getInstance(); + + activitylessDrawn = false; + activitylessToBeDrawn = false; + + _empty = false; + + MARGIN_X = 5; + MARGIN_Y = 5; + + getDetails(); + setStyles(); + + MovieClipUtils.doLater(Proxy.create(this, draw)); + } + + private function draw():Void { + if(container != null) container.removeMovieClip(); + if(line_mc != null) line_mc.removeMovieClip(); + + line_mc = this.createEmptyMovieClip("line_mc", this.getNextHighestDepth()); + container = this.createEmptyMovieClip("_container_mc", this.getNextHighestDepth()); + + // draw based on branching details + Debugger.log("drawing branching details in : " + container, Debugger.CRITICAL, "draw", "CanvasBranchingDiagram"); + + if(_branchingDetails.length > 0) { + registerEndPoints(); + line_mc.lineStyle(0, lineColor, 100, true, "normal", "square", "miter", 1); + + // draw activityless + for(var i=0; i < _branchingDetails.length; i++) { + if(_branchingDetails[i].noOfActivities == 0) { + activitylessToBeDrawn = true; + } + } + + for(var i=0; (i < _branchingDetails.length && i < BRANCH_LIMIT); i++) { + if(_branchingDetails[i].noOfActivities > 0) { + setPointAction(true, false, false); + + var count:Number = (activitylessDrawn && i==1) ? i-1 : i; + count = (activitylessToBeDrawn && !activitylessDrawn && i>=1) ? count+1 : count; + + for(var j=1; (j <= _branchingDetails[i].noOfActivities && j <= ACTIVITY_LIMIT); j++) { + line_mc.lineTo(MARGIN_X+(j*SPACING), MARGIN_Y+(SPACING*count)); + + if(j == ACTIVITY_LIMIT && _branchingDetails[i].noOfActivities > ACTIVITY_LIMIT) { + drawCircle(container, MARGIN_X+(j*SPACING), MARGIN_Y+(SPACING*count), CIRCLE_SIZE, true); + line_mc.moveTo(MARGIN_X+(j*SPACING) + (CIRCLE_SIZE*4) + 1, MARGIN_Y+(SPACING*count)); + } else if((j == ACTIVITY_LIMIT || j == _branchingDetails[i].noOfActivities) && !_branchingDetails[i].hasEndBranch) { + drawCircle(container, MARGIN_X+(j*SPACING), MARGIN_Y+(SPACING*count), CIRCLE_SIZE, false, true); + } else { + drawCircle(container, MARGIN_X+(j*SPACING), MARGIN_Y+(SPACING*count), CIRCLE_SIZE); + } + } + + if(_branchingDetails[i].hasEndBranch) setPointAction(false, true, true); // end point + + } else if(_branchingDetails[i].noOfActivities == 0) { + setPointAction(true, false, false); + setPointAction(false, true, true); + + activitylessDrawn = true; + } + } + } + + setPosition(); + } + + private function setPointAction(_moveTo:Boolean, _lineTo:Boolean, _isEnd:Boolean):Object { + var p:Object = new Object(); + p.x = (_isEnd) ? MARGIN_X+((ACTIVITY_LIMIT+1)*SPACING) : MARGIN_X; + p.y = (BRANCH_LIMIT%2 != 0) ? MARGIN_Y+(SPACING*(BRANCH_LIMIT%2)) : MARGIN_Y+(SPACING*((BRANCH_LIMIT/2)-1)); + + if(_moveTo) + line_mc.moveTo(p.x, p.y); + + if(_lineTo) + line_mc.lineTo(p.x, p.y); + + return p; + } + + private function getDetails():Void { + _branchingDetails = new Array(); + Debugger.log("activity: " + _branchingActivity.activityUIID, Debugger.CRITICAL, "getDetails", "CanvasBranchingDiagram"); + + var sequences:Array = _ddm.getComplexActivityChildren(_branchingActivity.activityUIID); + Debugger.log("no seqs: " + sequences.length, Debugger.CRITICAL, "getDetails", "CanvasBranchingDiagram"); + if(sequences.length > 0) { + _empty = false; + + for(var i=0; i