Index: lams_flash/src/central/flash/lams_authoring.fla =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Application.as =================================================================== diff -u -rd7823922f404944822957e6c051bc0f1335a76de -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Application.as (.../Application.as) (revision d7823922f404944822957e6c051bc0f1335a76de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Application.as (.../Application.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -87,7 +87,6 @@ private static var X_KEY:Number = 88; private static var C_KEY:Number = 67; private static var D_KEY:Number = 68; - //private static var T_KEY:Number = 84; private static var V_KEY:Number = 86; private static var Z_KEY:Number = 90; private static var Y_KEY:Number = 89; @@ -160,8 +159,6 @@ _PI = new PropertyInspectorNew(); _ccm = CustomContextMenu.getInstance(); _root_layout = (_root.layout != undefined || _root.layout != null) ? _root.layout : null; - - //Mouse.addListener(someListener); } /** @@ -184,7 +181,6 @@ else _isEditMode = false; - _container_mc = container_mc; _UILoaded = false; @@ -200,16 +196,15 @@ Cursor.addCursor(C_GATE); Cursor.addCursor(C_GROUP); - //Get the instance of config class _config = Config.getInstance(); //Assign the config load event to _config.addEventListener('load',Delegate.create(this,configLoaded)); - //Set up Key handler - //TODO take out after testing and uncomment same key handler in ready(); + //Set up Key handler Key.addListener(this); + _container_mc.tabChildren = true; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Branch.as =================================================================== diff -u --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Branch.as (revision 0) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Branch.as (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -0,0 +1,60 @@ +/*************************************************************************** + * 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.*; +import org.lamsfoundation.lams.common.*; +import org.lamsfoundation.lams.common.util.*; + + +class Branch extends Transition { + + private var UIID:Number; + private var _sequenceActivity:Activity; + + + // TODO: add learningDesignID + + public function Branch(activityUIID:Number, fromUIID:Number, toUIID:Number, sequenceActivity:Activity, learningDesignID:Number){ + super(null, fromUIID, toUIID, learningDesignID); + + UIID = activityUIID; + _sequenceActivity = sequenceActivity; + + } + + public function toData():Object{ + var dto:Object = super.toData(); + dto.branchUIID = branchUIID; + dto.sequenceActivity = sequenceActivity; + return dto; + } + + public function get branchUIID():Number { + return UIID; + } + + public function get sequenceActivity():Activity { + return _sequenceActivity; + } +} + Fisheye: Tag 70923fa577599b29f521d2daa8e348137e480bff refers to a dead (removed) revision in file `lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/BranchActivity.as'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -80,6 +80,7 @@ private var _activities:Hashtable; private var _transitions:Hashtable; private var _groupings:Hashtable; + private var _branches:Hashtable; private var _licenseID:Number; @@ -102,6 +103,7 @@ _activities = new Hashtable("_activities"); _transitions = new Hashtable("_transitions"); _groupings = new Hashtable("_groupings"); + _branches = new Hashtable("_branches"); //set the defualts: _objectType = "LearningDesign"; @@ -158,7 +160,7 @@ //validate the activity ? //validate if we can do it? - //dispatch an event before the design has changed + //dispatch an event before the design has changed dispatchEvent({type:'ddmBeforeUpdate',target:this}); _activities.put(activity.activityUIID, activity); //pull it out to check it @@ -169,7 +171,7 @@ }else{ return new LFError("Adding activity failed","addActivity",this,'activityUIID:'+activity.activityUIID); } - //dispatch an event now the design has changed + //dispatch an event now the design has changed dispatchEvent({type:'ddmUpdate',target:this}); @@ -183,7 +185,7 @@ * @return */ public function removeActivity(activityUIID:Number):Object{ - //dispatch an event to show the design has changed + //dispatch an event to show the design has changed dispatchEvent({type:'ddmBeforeUpdate',target:this}); @@ -198,7 +200,23 @@ } } + /** + * Adds a transition to the DDM + * @usage + * @param transition + * @return + */ + public function addTransition(transition:Transition):Boolean{ + //dispatch an event to show the design has changed + dispatchEvent({type:'ddmBeforeUpdate',target:this}); + Debugger.log('Transition from:'+transition.fromUIID+', to:'+transition.toUIID,4,'addTransition','DesignDataModel'); + _transitions.put(transition.transitionUIID,transition); + dispatchEvent({type:'ddmUpdate',target:this}); + + //TODO some validation would be nice + return true; + } /** * Removes the transition from the DDM @@ -207,7 +225,7 @@ * @return */ public function removeTransition(transitionUIID):Object{ - //dispatch an event to show the design has changed + //dispatch an event to show the design has changed dispatchEvent({type:'ddmBeforeUpdate',target:this}); var r:Object = _transitions.remove(transitionUIID); @@ -236,18 +254,19 @@ } /** - * Adds a transition to the DDM + * Adds a branch to the DDM * @usage - * @param transition + * @param branch * @return */ - public function addTransition(transition:Transition):Boolean{ - //dispatch an event to show the design has changed + public function addBranch(branch:Branch):Boolean{ + //dispatch an event to show the design has changed dispatchEvent({type:'ddmBeforeUpdate',target:this}); - Debugger.log('Transition from:'+transition.fromUIID+', to:'+transition.toUIID,4,'addActivity','DesignDataModel'); - _transitions.put(transition.transitionUIID,transition); + Debugger.log('Branch from:'+branch.fromUIID+', to:'+branch.toUIID,4,'addBranch','DesignDataModel'); + _branches.put(branch.branchUIID,branch); dispatchEvent({type:'ddmUpdate',target:this}); + //TODO some validation would be nice return true; } @@ -268,8 +287,42 @@ dispatchEvent({type:'ddmUpdate',target:this}); } + /** + * Removes the branch from the DDM + * @usage + * @param branchUIID + * @return + */ + public function removeBranch(branchUIID):Object{ + //dispatch an event to show the design has changed + dispatchEvent({type:'ddmBeforeUpdate',target:this}); + + var r:Object = _branches.remove(branchUIID); + if(r==null){ + return new LFError("Removing branch failed:"+branchUIID,"removeBranch",this,null); + }else{ + Debugger.log('Removed:'+r.branchUIID,Debugger.GEN,'removeBranch','DesignDataModel'); + dispatchEvent({type:'ddmUpdate',target:this}); + } + } /** + * Removes the branch from the DDM which are connected to the Activity + * + * @param connectUIID connected Activity UIID (SequenceActivity) + */ + + public function removeBranchByConnection(connectUIID):Void{ + var keyArray:Array = _branches.keys(); + for(var i=0; i.setDesign(design:Object) @@ -948,6 +1001,14 @@ _transitions = a; } + public function get branches():Hashtable{ + return _branches; + } + + public function set branches(a:Hashtable):Void{ + _branches = a; + } + /** * * @usage Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Transition.as =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Transition.as (.../Transition.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Transition.as (.../Transition.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -32,7 +32,7 @@ * @version 0.1 * @comments DesignDataModel stores a complete learning design */ -class org.lamsfoundation.lams.authoring.Transition { +class Transition { // Transition Properties Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchConnector.as =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchConnector.as (.../BranchConnector.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchConnector.as (.../BranchConnector.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -26,12 +26,33 @@ import org.lamsfoundation.lams.common.*; import org.lamsfoundation.lams.authoring.*; import org.lamsfoundation.lams.authoring.cv.*; +import org.lamsfoundation.lams.authoring.br.*; - class org.lamsfoundation.lams.authoring.br.BranchConnector extends CanvasTransition { + private static var DIR_FROM_START:Number = 0; + private static var DIR_TO_END:Number = 1; + + private var _branch:Branch; + private var _direction:Number; + function BranchConnector(){ - super(); + super(); + + override_fromAct = (_direction == DIR_FROM_START) ? _canvasBranchView.startHub : null; + override_toAct = (_direction == DIR_TO_END) ? _canvasBranchView.endHub : null; } - + + public function get branch():Branch{ + return _branch; + } + + public function set branch(b:Branch){ + _branch = b; + _transition = _branch; + } + + public function get direction():Number { + return _direction; + } } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -65,6 +65,7 @@ private var cHubStart_mc:MovieClip; private var cHubEnd_mc:MovieClip; + private var _branchLayer:MovieClip; private var _defaultSequenceActivity:Activity; /** @@ -140,6 +141,12 @@ case 'DRAW_TRANSITION': drawTransition(event.data,cm); break; + case 'DRAW_BRANCH': + drawBranch(event.data,cm); + break; + case 'REMOVE_BRANCH': + removeBranch(event.data,cm); + break; case 'HIDE_TRANSITION': hideTransition(event.data,cm); break; @@ -172,6 +179,7 @@ //set up the layers gridLayer = content.createEmptyMovieClip("_gridLayer_mc", content.getNextHighestDepth()); transitionLayer = content.createEmptyMovieClip("_transitionLayer_mc", content.getNextHighestDepth()); + branchLayer = content.createEmptyMovieClip("_branchLayer_mc", content.getNextHighestDepth()); activityComplexLayer = content.createEmptyMovieClip("_activityComplexLayer_mc", content.getNextHighestDepth()); activityLayer = content.createEmptyMovieClip("_activityLayer_mc", content.getNextHighestDepth()); @@ -275,30 +283,30 @@ Debugger.log('I am in drawActivity and Activity typeID :'+a.activityTypeID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); //take action depending on act type if(a.activityTypeID==Activity.TOOL_ACTIVITY_TYPE || a.isGroupActivity()){ - var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasBranchView:cbv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Tool or gate activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable:'+newActivity_mc,4,'drawActivity','CanvasView'); } else if (a.isGateActivity()){ - var newActivity_mc = activityLayer.createChildAtDepth("CanvasGateActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasGateActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasBranchView:cbv}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Gate activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable:'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.PARALLEL_ACTIVITY_TYPE){ //get the children var children:Array = cm.getCanvas().ddm.getComplexActivityChildren(a.activityUIID); - var newActivity_mc = activityLayer.createChildAtDepth("CanvasParallelActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasView:cbv, _locked:a.isReadOnly()}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasParallelActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasBranchView:cbv, _locked:a.isReadOnly()}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Parallel activity a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.OPTIONAL_ACTIVITY_TYPE){ var children:Array = cm.getCanvas().ddm.getComplexActivityChildren(a.activityUIID); - var newActivity_mc = activityComplexLayer.createChildAtDepth("CanvasOptionalActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasView:cbv,_locked:a.isReadOnly()}); + var newActivity_mc = activityComplexLayer.createChildAtDepth("CanvasOptionalActivity",DepthManager.kTop,{_activity:a,_children:children,_canvasController:cbc,_canvasBranchView:cbv,_locked:a.isReadOnly()}); cm.activitiesDisplayed.put(a.activityUIID,newActivity_mc); Debugger.log('Optional activity Type a.title:'+a.title+','+a.activityUIID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasView'); } else if(a.activityTypeID==Activity.BRANCHING_ACTIVITY_TYPE){ - var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasView:cbv}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kTop,{_activity:a,_canvasController:cbc,_canvasBranchView:cbv}); 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','CanvasView'); @@ -360,12 +368,12 @@ * @param cm the canvas model. * @return */ - private function drawTransition(t:Transition,cm:CanvasModel):Boolean{ + private function drawTransition(t:Transition, cm:CanvasModel):Boolean{ if(!isActivityOnLayer(cm.activitiesDisplayed.get(t.fromUIID), this.activityLayer) && !isActivityOnLayer(cm.activitiesDisplayed.get(t.toUIID), this.activityLayer)) return false; var cbv = CanvasBranchView(this); var cbc = getController(); - var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasView:cbv}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasBranchView:cbv}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasView'); @@ -374,6 +382,26 @@ } /** + * Draws a branch on the canvas. + * @usage + * @param t The branch to draw + * @param cm the canvas model. + * @return + */ + private function drawBranch(b:Branch, cm:CanvasModel):Boolean{ + var cbv = CanvasBranchView(this); + var cbc = getController(); + + var newBranch_mc:MovieClip = branchLayer.createChildAtDepth("BranchConnector",DepthManager.kTop,{_branch:b,_transition:b,_canvasController:cbc,_canvasBranchView:cbv}); + + cm.branchesDisplayed.put(b.branchUIID,newBranch_mc); + Debugger.log('drawn a branch:'+b.branchUIID+','+newBranch_mc,Debugger.GEN,'drawBranch','CanvasView'); + + return true; + } + + + /** * Hides a transition on the canvas. * * @usage @@ -387,7 +415,7 @@ var cbv = CanvasBranchView(this); var cbc = getController(); - var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasView:cbv, _visible:false}); + var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t,_canvasController:cbc,_canvasBranchView:cbv, _visible:false}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn (hidden) a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'hideTransition','CanvasView'); @@ -413,6 +441,24 @@ } /** + * Removes a branch from the canvas + * @usage + * @param b The branch to remove + * @param cm The canvas model + * @return + */ + private function removeBranch(b:Branch,cm:CanvasModel){ + if(!cm.isActiveView(this)) return false; + + var r = cm.branchesDisplayed.remove(b.branchUIID); + r.removeMovieClip(); + var s:Boolean = (r==null) ? false : true; + + return s; + } + + + /** * Sets the size of the canvas on stage, called from update */ private function setSize(cm:CanvasModel):Void{ @@ -488,6 +534,14 @@ _defaultSequenceActivity = a; } + public function get branchLayer():MovieClip { + return _branchLayer; + } + + public function set branchLayer(a:MovieClip):Void{ + _branchLayer = a; + } + /** * Overrides method in abstract view to ensure cortect type of controller is returned * @usage Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as (.../CanvasActivity.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as (.../CanvasActivity.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -26,6 +26,7 @@ import org.lamsfoundation.lams.common.util.ui.*; import org.lamsfoundation.lams.authoring.*; import org.lamsfoundation.lams.authoring.cv.*; +import org.lamsfoundation.lams.authoring.br.*; import org.lamsfoundation.lams.monitoring.mv.*; import org.lamsfoundation.lams.monitoring.mv.tabviews.LearnerTabView; import org.lamsfoundation.lams.common.style.* @@ -39,8 +40,7 @@ /** * CanvasActivity - */ -class org.lamsfoundation.lams.authoring.cv.CanvasActivity extends MovieClip implements ICanvasActivity{ -//class org.lamsfoundation.lams.authoring.cv.CanvasActivity extends MovieClip{ +class org.lamsfoundation.lams.authoring.cv.CanvasActivity extends MovieClip implements ICanvasActivity{ public static var TOOL_ACTIVITY_WIDTH:Number = 123.1; public static var TOOL_ACTIVITY_HEIGHT:Number = 50.5; @@ -52,10 +52,14 @@ //this is set by the init object private var _canvasController:CanvasController; private var _canvasView:CanvasView; + private var _canvasBranchView:CanvasBranchView; + private var _monitorController:MonitorController; private var _monitorView; + private var mm:MonitorModel; // used only when called from Monitor Environment private var _canvasModel:CanvasModel; + private var _tm:ThemeManager; private var _ccm:CustomContextMenu; @@ -104,11 +108,12 @@ private var authorMenu:ContextMenu; function CanvasActivity(){ - //Debugger.log("_activity:"+_activity.title,4,'Constructor','CanvasActivity'); _tm = ThemeManager.getInstance(); _ccm = CustomContextMenu.getInstance(); + //Get reference to application and design data model app = Application.getInstance(); + //let it wait one frame to set up the components. //this has to be set b4 the do later :) if(_activity.isGateActivity() || _branchConnector){ @@ -123,6 +128,7 @@ } _base_mc = this; + //call init if we have passed in the _activity as an initObj in the attach movie, //otherwise wait as the class outside will call it if(_activity != undefined){ @@ -152,14 +158,13 @@ _isSelected = false; refresh(); } - if(!_activity.isGateActivity() && !_activity.isGroupActivity() && !_activity.isBranchingActivity() || _branchConnector){ loadIcon(); } + setStyles(); MovieClipUtils.doLater(Proxy.create(this,draw)); - } private function showAssets(isVisible:Boolean){ @@ -202,12 +207,12 @@ } Debugger.log("tgt_mc:"+tgt_mc,4,'setSelected','CanvasActivity'); //vars - var tl_x = tgt_mc._x - MARGIN; //top left x - var tl_y = tgt_mc._y - MARGIN; //top left y - var tr_x = tgt_mc._x + tgt_mc._width + MARGIN;//top right x + var tl_x = tgt_mc._x - MARGIN; //top left x + var tl_y = tgt_mc._y - MARGIN; //top left y + var tr_x = tgt_mc._x + tgt_mc._width + MARGIN; //top right x var tr_y = tl_y; //top right y var br_x = tr_x; //bottom right x - var br_y = tgt_mc._y + tgt_mc._height + MARGIN;//bottom right y + var br_y = tgt_mc._y + tgt_mc._height + MARGIN; //bottom right y var bl_x = tl_x; //biottom left x var bl_y = br_y; //bottom left y @@ -418,8 +423,6 @@ } private function onPress():Void{ - - // check double-click var now:Number = new Date().getTime(); @@ -528,7 +531,6 @@ } private function getAssociatedStyle():Object{ - trace("Category ID for Activity "+_activity.title +": "+_activity.activityCategoryID) var styleObj:Object = new Object(); if(_root.actColour == "true") { @@ -571,17 +573,16 @@ * @usage * @return */ - - private function setStyles() { var my_color:Color = new Color(this); - var styleObj; - var transNegative = {ra:-100, ga:-100, ba:-100, rb:255, gb:255, bb:255}; var transPositive = {ra:100, ga:100, ba:100, rb:0, gb:0, bb:0}; - styleObj = _tm.getStyleObject('CALabel'); + + var styleObj = _tm.getStyleObject('CALabel'); + title_lbl.setStyle('styleName',styleObj); title_lbl.setStyle("textAlign", "center") + if (bgNegative == "true"){ my_color.setTransform(transNegative); }else if(bgNegative == "false"){ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r7548a5a6349a58e304bfa7b35805978121ccbd87 -r70923fa577599b29f521d2daa8e348137e480bff --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 70923fa577599b29f521d2daa8e348137e480bff) @@ -26,8 +26,9 @@ import org.lamsfoundation.lams.authoring.*; import org.lamsfoundation.lams.common.util.*; import org.lamsfoundation.lams.common.ui.*; -import org.lamsfoundation.lams.common.dict.* -import mx.events.* +import org.lamsfoundation.lams.common.dict.*; +import mx.events.*; + /* * Model for the Canvas */ @@ -68,6 +69,7 @@ //each on contains a reference to the emelment in the ddm (activity or transition) private var _activitiesDisplayed:Hashtable; private var _transitionsDisplayed:Hashtable; + private var _branchesDisplayed:Hashtable; private var _currentBranchingActivity:Object; private var _activeView:Object; @@ -88,6 +90,7 @@ _ddm = new DesignDataModel(); _activitiesDisplayed = new Hashtable("_activitiesDisplayed"); _transitionsDisplayed = new Hashtable("_transitionsDisplayed"); + _branchesDisplayed = new Hashtable("_branchesDisplayed"); _activeTool = "none"; _activeView = null; @@ -590,16 +593,24 @@ var toAct = _transitionActivities[1].activityUIID if(_transitionActivities.length == 2){ - var t:Transition; // check if either end is a connector point for Branching if(activeView.startHub.activity.activityUIID == fromAct || activeView.endHub.activity.activityUIID == toAct) { + + /********************************************* + * TODO: REQUIRE NORMAL BRANCH CLIENT_SIDE VALIDATION + *********************************************/ + Debugger.log('No validation errors, creating branch.......',Debugger.GEN,'addActivityToTransition','CanvasModel'); + //lets make the connection - t = createBranchConnector(_transitionActivities); - _cv.stopTransitionTool(); - return; + var b:Branch = createBranchConnector(_transitionActivities); + + //add it to the DDM + var success:Object = _cv.ddm.addBranch(b); + } else { + var t:Transition; /********************************************* * BELOW: NORMAL TRANSITION CLIENT_SIDE VALIDATION @@ -646,14 +657,15 @@ //lets make the transition t = createTransition(_transitionActivities); + + //add it to the DDM + var success:Object = _cv.ddm.addTransition(t); } - //add it to the DDM - var success:Object = _cv.ddm.addTransition(t); - //flag the model as dirty and trigger a refresh _cv.stopTransitionTool(); + setDirty(); } @@ -699,11 +711,16 @@ * @param transitionActs An array of transition activities. Must only contain 2 * @return */ - private function createBranchConnector(transitionActs:Array):Transition{ - return null; + private function createBranchConnector(transitionActs:Array):Branch{ + var fromAct:Activity = transitionActs[0]; + var toAct:Activity = transitionActs[1]; + + // TODO: activeView.defaultSequenceActivity should return SequenceActivity obj + var b:Branch = new Branch(_cv.ddm.newUIID(), fromAct.activityUIID, toAct.activityUIID, activeView.defaultSequenceActivity, _cv.ddm.learningDesignID); + + return b; } - public function setDesignTitle(){ broadcastViewUpdate("POSITION_TITLEBAR", null); } @@ -712,8 +729,6 @@ /////////////////////// REFRESHING DESIGNS ///////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// - - /** * Compares 2 activities, decides if they are new, the same or to be deleted * @usage @@ -725,7 +740,6 @@ Debugger.log('Comparing ddm_activity:'+ddm_activity.title+'('+ddm_activity.activityUIID+') WITH cm_activity:'+cm_activity.title+'('+cm_activity.activityUIID+')',Debugger.GEN,'compareActivities','CanvasModel'); var r:Object = new Object(); - //check if act has been removed from canvas if(ddm_activity == null || ddm_activity == undefined){ return r = "DELETE"; @@ -758,8 +772,6 @@ if(cm_activity == null || cm_activity == undefined){ return r = "NEW"; } - - } /** @@ -771,18 +783,27 @@ */ 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_transition === cm_transition){ + if(ddm_connect === cm_connect){ return r = "SAME"; } - //check for a new act in the dmm - if(cm_transition == null){ + //check for a new connection in the dmm + if(cm_connect == null){ return r = "NEW"; } - //check if act has been removed from canvas - if(ddm_transition == null){ + //check if connection has been removed from canvas + if(ddm_connect == null){ return r = "DELETE"; } } @@ -805,9 +826,7 @@ 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 @@ -876,7 +895,6 @@ var ddmTransition:Transition = _cv.ddm.transitions.get(transitionKeyToCheck); var cmTransition:Transition = _transitionsDisplayed.get(transitionKeyToCheck).transition; - var r_transition:Object = compareTransitions(ddmTransition, cmTransition); if(r_transition == "NEW"){ @@ -887,6 +905,33 @@ } } + //now check the transitions: + var ddmBranch_keys:Array = _cv.ddm.branches.keys(); + var cmBranch_keys:Array = _branchesDisplayed.keys(); + var trLongest = Math.max(ddmBranch_keys.length, cmBranch_keys.length); + + if(ddmTransition_keys.length == trLongest){ + trIndexArray = ddmBranch_keys; + }else{ + trIndexArray = cmBranch_keys; + } + + //loop through and do comparison + for(var i=0;i