Index: lams_flash/src/central/flash/lams_authoring.fla =================================================================== diff -u -r604e9fa6c78738ca4ec1dbf0df7d254cb209dec2 -r7548a5a6349a58e304bfa7b35805978121ccbd87 Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Activity.as =================================================================== diff -u -r30b7641a18c8c83b3722fc22bb936d54f4eaa18b -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Activity.as (.../Activity.as) (revision 30b7641a18c8c83b3722fc22bb936d54f4eaa18b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Activity.as (.../Activity.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -160,6 +160,7 @@ private var _readOnly:Boolean; + private var _viewID:Boolean; //Constructor @@ -175,11 +176,10 @@ */ function Activity(activityUIID:Number){ Debugger.log('activityUIID:'+activityUIID,Debugger.GEN,'constructor','Activity'); - //assign the values: - _activityUIID = activityUIID; - //set default calues - _objectType = "Activity"; //should be "Activity" + + //defaults + _objectType = "Activity"; _applyGrouping = false; _runOffline = false; _defineLater = false; @@ -196,7 +196,6 @@ */ public static function getGateActivityTypes():Array{ var types:Array = []; - //types.addItem({label: Dictionary.getValue('none_act_lbl'), data: 0}); types.addItem({label: Dictionary.getValue('trans_dlg_nogate'), data: NO_GATE_ACTIVITY_TYPE}); types.addItem({label: Dictionary.getValue('synch_act_lbl'), data: SYNCH_GATE_ACTIVITY_TYPE}); types.addItem({label: Dictionary.getValue('sched_act_lbl'), data: SCHEDULE_GATE_ACTIVITY_TYPE}); @@ -290,7 +289,6 @@ */ public function populateFromDTO(dto:Object){ - //activity properties: _activityTypeID = dto.activityTypeID; _activityID = dto.activityID; @@ -321,11 +319,7 @@ _createDateTime = dto.createDateTime; _groupingSupportType = dto.groupingSupportType; _readOnly = dto.readOnly; - - - - } public function toData(){ @@ -339,8 +333,6 @@ if(_learningLibraryID){ dto.learningLibraryID = _learningLibraryID; } if(_learningDesignID){ dto.learningDesignID = _learningDesignID; } if(_libraryActivityID){ dto.libraryActivityID = _libraryActivityID; } - //if(_parentActivityID){ dto.parentActivityID = _parentActivityID; } - //if(_parentUIID){ dto.parentUIID = _parentUIID; } if(_orderID){ dto.orderID = _orderID; } if(_groupingID){ dto.groupingID = _groupingID; } if(_groupingUIID){ dto.groupingUIID = _groupingUIID; } @@ -362,8 +354,6 @@ if(_groupingSupportType){ dto.groupingSupportType = _groupingSupportType; } if(_readOnly){ dto.readOnly = _readOnly; } - - return dto; } @@ -375,7 +365,6 @@ } - //getters and setters: public function set objectType(a:String):Void{ _objectType = a; @@ -393,6 +382,7 @@ public function set activityTypeID (newactivityTypeID:Number):Void { _activityTypeID = newactivityTypeID; } + /** * * @usage @@ -409,16 +399,16 @@ public function get activityToolContentID ():Number { return _activityToolContentID; } - public function set activityID(a:Number):Void{ _activityID = a; } + public function get activityID():Number{ return _activityID; } -/** + /** * * @usage * @param newactivityCategoryID @@ -427,6 +417,7 @@ public function set activityCategoryID (newactivityCategoryID:Number):Void { _activityCategoryID = newactivityCategoryID; } + /** * * @usage @@ -445,6 +436,7 @@ public function set activityUIID (newactivityUIID:Number):Void { _activityUIID = newactivityUIID; } + /** * * @usage @@ -457,6 +449,7 @@ public function set learningLibraryID(a:Number):Void{ _learningLibraryID = a; } + public function get learningLibraryID():Number{ return _learningLibraryID; } @@ -477,6 +470,7 @@ public function set libraryActivityID (newlibraryActivityID:Number):Void { _libraryActivityID = newlibraryActivityID; } + /** * * @usage @@ -486,7 +480,7 @@ return _libraryActivityID; } -/** + /** * * @usage * @param newparentActivityID @@ -495,6 +489,7 @@ public function set parentActivityID (newparentActivityID:Number):Void { _parentActivityID = newparentActivityID; } + /** * * @usage @@ -504,7 +499,7 @@ return _parentActivityID; } -/** + /** * * @usage * @param newparentUIID @@ -513,6 +508,7 @@ public function set parentUIID (newparentUIID:Number):Void { _parentUIID = newparentUIID; } + /** * * @usage @@ -531,6 +527,7 @@ public function set orderID (neworderID:Number):Void { _orderID = neworderID; } + /** * * @usage @@ -624,6 +621,7 @@ public function set groupingID (newgroupingID:Number):Void { _groupingID = newgroupingID; } + /** * * @usage @@ -632,7 +630,6 @@ public function get groupingID ():Number { return _groupingID; } - /** * @@ -649,7 +646,6 @@ * @return */ public function get groupingUIID ():Number { - trace('returning:'+_groupingUIID); return _groupingUIID; } @@ -668,7 +664,6 @@ * @return */ public function get selectActivity ():String { - trace('returning:'+_isActivitySelected); return _isActivitySelected; } @@ -681,6 +676,7 @@ public function set applyGrouping (newapplyGrouping:Boolean):Void { _applyGrouping = newapplyGrouping; } + /** * * @usage @@ -699,6 +695,7 @@ public function set groupingSupportType (newgroupingSupportType:Number):Void { _groupingSupportType = newgroupingSupportType; } + /** * * @usage @@ -717,6 +714,7 @@ public function set readOnly (readOnly:Boolean):Void { _readOnly = readOnly; } + /** * * @usage @@ -730,9 +728,4 @@ return _readOnly; } - - - - - } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/BranchingActivity.as =================================================================== diff -u -r30b7641a18c8c83b3722fc22bb936d54f4eaa18b -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/BranchingActivity.as (.../BranchingActivity.as) (revision 30b7641a18c8c83b3722fc22bb936d54f4eaa18b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/BranchingActivity.as (.../BranchingActivity.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -59,7 +59,5 @@ return dto; } - //get and sets - } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r30b7641a18c8c83b3722fc22bb936d54f4eaa18b -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 30b7641a18c8c83b3722fc22bb936d54f4eaa18b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -349,14 +349,18 @@ } else if(dto.activityTypeID == Activity.GROUPING_ACTIVITY_TYPE){ //TODO: Test this code when we are able to save and then open a design with grouping - var newGroupActiviy:GroupingActivity = new GroupingActivity(dto.activityUIID); - newGroupActiviy.populateFromDTO(dto); - _activities.put(newGroupActiviy.activityUIID,newGroupActiviy); + var newGroupActivity:GroupingActivity = new GroupingActivity(dto.activityUIID); + newGroupActivity.populateFromDTO(dto); + _activities.put(newGroupActivity.activityUIID,newGroupActivity); } else if(dto.activityTypeID == Activity.BRANCHING_ACTIVITY_TYPE){ - var newBranchActiviy:BranchingActivity = new BranchingActivity(dto.activityUIID); - newBranchActiviy.populateFromDTO(dto); - _activities.put(newBranchActiviy.activityUIID,newBranchActiviy); + var newBranchActivity:BranchingActivity = new BranchingActivity(dto.activityUIID); + newBranchActivity.populateFromDTO(dto); + _activities.put(newBranchActivity.activityUIID,newBranchActivity); + } else if(dto.activityTypeID = Activity.SEQUENCE_ACTIVITY_TYPE){ + var newSequenceActivity:SequenceActivity = new SequenceActivity(dto.activityUIID); + newSequenceActivity.populateFromDTO(dto); + _activities.put(newSequenceActivity.activityUIID, newSequenceActivity); } } @@ -781,7 +785,6 @@ return transObj; } - //Getters and setters for the properties public function get objectType():String{ return _objectType; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as =================================================================== diff -u --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as (revision 0) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -0,0 +1,78 @@ +/*************************************************************************** + * 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.*; +/* +* This class represents the sequence activity. +* For reference these are the activity types +*

+* public static var SEQUENCE_ACTIVITY_TYPE:Number = 8;
+* 
+* @author Mitchell Seaton +* @version 2.1 +* @see Activity +*/ +class SequenceActivity extends ComplexActivity{ + + + function SequenceActivity(activityUIID:Number){ + super(activityUIID); + _activityTypeID = SEQUENCE_ACTIVITY_TYPE; + } + + /** + * Creates a complex activity from a dto... which is nice + * @usage + * @param dto + * @return + */ + public function populateFromDTO(dto:Object){ + super.populateFromDTO(dto); + } + + /** + * Creates an object containing all the props of the ComplexActivity. + * If a value is null then it is ommitted... if itsd the null value from const + * then its included + * @usage + * @return the DTO + */ + public function toData():Object{ + var dto:Object = super.toData(); + return dto; + } + + /** + * Creates an exact copy of this SequenceActivity + * @usage + * @return the copy + */ + public function clone():SequenceActivity{ + var dto:Object = toData(); + var sa = new SequenceActivity(); + sa.populateFromDTO(dto); + return sa; + } + +} + Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Transition.as =================================================================== diff -u -rd7823922f404944822957e6c051bc0f1335a76de -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Transition.as (.../Transition.as) (revision d7823922f404944822957e6c051bc0f1335a76de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Transition.as (.../Transition.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -34,7 +34,7 @@ */ class org.lamsfoundation.lams.authoring.Transition { - //Transition properties + // Transition Properties private var _transitionID:Number; private var _transitionUIID:Number; @@ -50,11 +50,9 @@ private var _title:String; private var _description:String; - private var _createDateTime:Date; - //TODO 05-10-05: This will be removed by mai this week - private var _learningDesignID:Number; + private var _createDateTime:Date; + private var _learningDesignID:Number; - function Transition(transitionUIID, fromUIID, toUIID, @@ -187,13 +185,12 @@ public function get createDateTime():Date{ return _createDateTime; } - - + public function set learningDesignID(a):Void{ _learningDesignID = a; } public function get learningDesignID():Number{ return _learningDesignID; - } - + } + } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchConnector.as =================================================================== diff -u --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchConnector.as (revision 0) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchConnector.as (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -0,0 +1,37 @@ +/*************************************************************************** + * 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.common.util.*; +import org.lamsfoundation.lams.common.ui.*; +import org.lamsfoundation.lams.common.*; +import org.lamsfoundation.lams.authoring.*; +import org.lamsfoundation.lams.authoring.cv.*; + + +class org.lamsfoundation.lams.authoring.br.BranchConnector extends CanvasTransition { + + function BranchConnector(){ + super(); + } + +} \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r6315ccfc298871795f8ab124b561646cc09a93f5 -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 6315ccfc298871795f8ab124b561646cc09a93f5) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -47,6 +47,7 @@ private var _cm:CanvasModel; private var _canvasBranchView:CanvasBranchView; + private var _canvasBranchingActivity:CanvasBranchingActivity; private var startTransX:Number; private var startTransY:Number; @@ -58,20 +59,26 @@ private var hSpace:Number = 100; private var vSpace:Number = 100; - private var close_mc:MovieClip; + private var close_mc:MovieClip; + // connector hubs for branch connections into and out of sequence activities + private var cHubStart_mc:MovieClip; + private var cHubEnd_mc:MovieClip; + + private var _defaultSequenceActivity:Activity; + /** * Constructor */ function CanvasBranchView(){ _canvasBranchView = this; _tm = ThemeManager.getInstance(); - + defaultSequenceActivity = null; + //Init for event delegation mx.events.EventDispatcher.initialize(this); this._visible = false; - } /** @@ -85,8 +92,7 @@ H_GAP = 10; V_GAP = 10; - _cm = CanvasModel(m) - + _cm = CanvasModel(m); //register to recive updates form the model _cm.addEventListener('viewUpdate',this); @@ -117,7 +123,12 @@ case 'SIZE' : setSize(cm); break; - case 'DRAW_ACTIVITY': + case 'ADD_SEQUENCE': + Debugger.log("adding seq: " + event.data, Debugger.CRITICAL, "viewUpdate", "CanvasBranchView"); + var b= addSequence(event.data,cm); + Debugger.log("return from seq: " + b, Debugger.CRITICAL, "viewUpdate", "CanvasBranchView"); + break; + case 'DRAW_ACTIVITY_SEQ': drawActivity(event.data,cm); break; case 'HIDE_ACTIVITY': @@ -179,8 +190,10 @@ close_mc.onRelease = Proxy.create(this, localOnRelease); close_mc.onReleaseOutside = Proxy.create(this, localOnReleaseOutside); - setStyles(); + setupConnectorHubs(); + loadSequenceActivities(); + setStyles(); setSize(_cm); this._visible = true; @@ -189,6 +202,33 @@ dispatchEvent({type:'load',target:this}); } + private function setupConnectorHubs() { + + Debugger.log('adding hubs for branch activity:' + _canvasBranchingActivity,Debugger.CRITICAL,'setupConenctorHubs','org.lamsfoundation.lams.CanvasBranchView'); + + cHubStart_mc = activityLayer.createChildAtDepth("CanvasBranchingConnector",DepthManager.kTop,{_activity:_canvasBranchingActivity.activity,_canvasController:getController(),_canvasView:_canvasBranchView, _x: 0 , _y: 0}); + cHubEnd_mc = activityLayer.createChildAtDepth("CanvasBranchingConnector",DepthManager.kTop,{_activity:_canvasBranchingActivity.activity,_canvasController:getController(),_canvasView:_canvasBranchView, _x: 0 , _y: 0}); + + } + + private function loadSequenceActivities() { + var sequenceActs:Array; + Debugger.log('loading sequence activities:',Debugger.CRITICAL,'loadSequenceActivities','org.lamsfoundation.lams.CanvasBranchView'); + + if((sequenceActs = _cm.getCanvas().ddm.getComplexActivityChildren(activity.activityUIID)).length <= 0) { + Debugger.log('creating init seq activity:' + sequenceActs,Debugger.CRITICAL,'loadSequenceActivities','org.lamsfoundation.lams.CanvasBranchView'); + createInitialSequenceActivity(); + } else { + // load existing sequences + Debugger.log('attempting to load seq acts:' + sequenceActs,Debugger.CRITICAL,'loadSequenceActivities','org.lamsfoundation.lams.CanvasBranchView'); + + } + } + + private function createInitialSequenceActivity() { + _cm.createNewSequenceActivity(activity); + } + public function localOnRelease():Void{ close(); } @@ -213,6 +253,11 @@ } + private function addSequence(a:Activity, cm:CanvasModel):Boolean{ + defaultSequenceActivity = a; + return true; + } + /** * Draws new or replaces existing activity to canvas stage. * @usage @@ -304,6 +349,7 @@ var r = cm.activitiesDisplayed.remove(a.activityUIID); r.removeMovieClip(); var s:Boolean = (r==null) ? false : true; + return s; } @@ -323,8 +369,8 @@ cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasView'); - return true; + return true; } /** @@ -362,6 +408,7 @@ var r = cm.transitionsDisplayed.remove(t.transitionUIID); r.removeMovieClip(); var s:Boolean = (r==null) ? false : true; + return s; } @@ -421,6 +468,26 @@ } + public function get startHub():CanvasActivity { + return CanvasActivity(cHubStart_mc); + } + + public function get endHub():CanvasActivity { + return CanvasActivity(cHubEnd_mc); + } + + public function get activity():BranchingActivity { + return _canvasBranchingActivity.activity; + } + + public function get defaultSequenceActivity():Activity { + return _defaultSequenceActivity; + } + + public function set defaultSequenceActivity(a:Activity):Void{ + _defaultSequenceActivity = 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/br/CanvasBranchingConnector.as =================================================================== diff -u --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchingConnector.as (revision 0) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchingConnector.as (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -0,0 +1,61 @@ +/*************************************************************************** + * 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.common.*; +import org.lamsfoundation.lams.common.util.*; +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.* +import mx.controls.* +import com.polymercode.Draw +import mx.managers.* +import mx.containers.* +import mx.events.* +import mx.utils.* + +/** +* CanvasBranchingConnector +*/ +class CanvasBranchingConnector extends CanvasActivity { + + function CanvasBranchingConnector(){ + super(); + branchConnector = true; + } + + private function onPress():Void{ + if (_module == "monitoring"){ + Debugger.log('SingleClicking:+'+this,Debugger.GEN,'onPress','CanvasActivity for monitoring'); + _monitorController.activityClick(this); + }else { + Debugger.log('SingleClicking:+'+this,Debugger.GEN,'onPress','CanvasActivity'); + _canvasController.activityClick(this); + } + } + + +} \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as =================================================================== diff -u -r6315ccfc298871795f8ab124b561646cc09a93f5 -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 6315ccfc298871795f8ab124b561646cc09a93f5) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -141,7 +141,6 @@ //if in monitor, dont do it! initBin(); - } /** @@ -153,6 +152,8 @@ canvasModel.activeView = evt.target; if(evt.target instanceof CanvasBranchView) { evt.target.open(); + + canvasModel.setDirty(); } else { var autosave_config_interval = Config.getInstance().getItem(AUTOSAVE_CONFIG); @@ -256,7 +257,7 @@ var cx:Number = ba._x + ba.getVisibleWidth()/2; var cy:Number = ba._y + ba.getVisibleHeight()/2; - var _branchView_mc:MovieClip = _canvasView_mc.content.createChildAtDepth("canvasBranchView", DepthManager.kTop, {_x: cx, _y: cy}); + var _branchView_mc:MovieClip = _canvasView_mc.content.createChildAtDepth("canvasBranchView", DepthManager.kTop, {_x: cx, _y: cy, _canvasBranchingActivity:ba}); var branchView:CanvasBranchView = CanvasBranchView(_branchView_mc); branchView.init(canvasModel,undefined); @@ -266,6 +267,7 @@ canvasModel.addObserver(branchView); ba.branchView = branchView; + } public function closeBranchView() { @@ -730,9 +732,14 @@ actToAdd.yCoord = canvasModel.activeView.content._ymouse - (toolActHeight/2); } - Debugger.log('actToAdd:'+actToAdd.title+':'+actToAdd.activityUIID,4,'setDroppedTemplateActivity','Canvas'); + Debugger.log('actToAdd:'+actToAdd.title+':'+actToAdd.activityUIID + ":seq" + canvasModel.activeView.defaultSequenceActivity,4,'setDroppedTemplateActivity','Canvas'); + + if(canvasModel.activeView.defaultSequenceActivity != null) { + actToAdd.parentUIID = canvasModel.activeView.defaultSequenceActivity.activityUIID; + } _ddm.addActivity(actToAdd); + //refresh the design canvasModel.setDirty(); canvasModel.selectedItem = (canvasModel.activitiesDisplayed.get(actToAdd.activityUIID)); @@ -743,6 +750,7 @@ canvasModel.removeActivity(actToAdd.activityUIID); canvasModel.removeActivity(taParent); } + canvasModel.setDirty(); } @@ -757,10 +765,6 @@ } -/* public function addActivity(a:Activity){ - - } - */ /** * Removes an activity from Design Data Model using its activityUIID. * Called by the bin @@ -845,9 +849,14 @@ _ddm.addEventListener('ddmBeforeUpdate',Proxy.create(this,onDDMBeforeUpdate)); checkValidDesign(); checkReadOnlyDesign(); - canvasModel.setDirty(); + if(canvasModel.activeView instanceof CanvasBranchView) { + canvasModel.activeView.removeMovieClip(); + closeBranchView(); + } + canvasModel.setDirty(); + createContentFolder(); return true; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as =================================================================== diff -u -r30b7641a18c8c83b3722fc22bb936d54f4eaa18b -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as (.../CanvasActivity.as) (revision 30b7641a18c8c83b3722fc22bb936d54f4eaa18b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasActivity.as (.../CanvasActivity.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -64,33 +64,45 @@ private var _isSelected:Boolean; private var app:Application; + //locals private var learnerOffset_X:Number = 4; private var learnerOffset_Y:Number = 3; private var learnerContainer:MovieClip; + private var _module:String; + private var _branchConnector:Boolean; + private var icon_mc:MovieClip; private var icon_mcl:MovieClipLoader; + private var bkg_pnl:MovieClip; private var act_pnl:MovieClip; private var title_lbl:MovieClip; + private var groupIcon_mc:MovieClip; private var branchIcon_mc:MovieClip; - private var stopSign_mc:MovieClip; + private var stopSign_mc:MovieClip; + private var branchSign_mc:MovieClip; + private var clickTarget_mc:MovieClip; + private var canvasActivity_mc:MovieClip; private var canvasActivityGrouped_mc:MovieClip; + private var _dcStartTime:Number = 0; private var _doubleClicking:Boolean; + private var _visibleWidth:Number; private var _visibleHeight:Number; + private var _base_mc:MovieClip; private var _selected_mc:MovieClip; + private var fade_mc:MovieClip; private var bgNegative:String = "original"; private var authorMenu:ContextMenu; - function CanvasActivity(){ //Debugger.log("_activity:"+_activity.title,4,'Constructor','CanvasActivity'); _tm = ThemeManager.getInstance(); @@ -99,7 +111,7 @@ 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()){ + if(_activity.isGateActivity() || _branchConnector){ _visibleHeight = CanvasActivity.GATE_ACTIVITY_HEIGHT; _visibleWidth = CanvasActivity.GATE_ACTIVITY_WIDTH; }else if(_activity.isGroupActivity()){ @@ -142,7 +154,7 @@ } - if(!_activity.isGateActivity() && !_activity.isGroupActivity() && !_activity.isBranchingActivity()){ + if(!_activity.isGateActivity() && !_activity.isGroupActivity() && !_activity.isBranchingActivity() || _branchConnector){ loadIcon(); } setStyles(); @@ -156,6 +168,7 @@ title_lbl._visible = isVisible; icon_mc._visible = isVisible; stopSign_mc._visible = isVisible; + branchSign_mc._visible = isVisible; canvasActivity_mc._visible = isVisible; clickTarget_mc._visible = isVisible; canvasActivityGrouped_mc._visible = isVisible; @@ -169,7 +182,6 @@ */ public function refresh(setNegative:Boolean):Void{ bgNegative = String(setNegative); - trace("called from PI") setStyles(); draw(); setSelected(_isSelected); @@ -222,7 +234,6 @@ } - private function loadIcon():Void{ icon_mc = this.createEmptyMovieClip("icon_mc", this.getNextHighestDepth()); var ml = new MovieLoader(Config.getInstance().serverUrl+_activity.libraryActivityUIImage,setUpActIcon,this,icon_mc); @@ -315,12 +326,8 @@ var theIcon_mc:MovieClip; title_lbl._visible = true; - //act_pnl.__visible = true; clickTarget_mc._visible = true; fade_mc._visible = false; - - Debugger.log("Edit lock: " + app.canvas.ddm.editOverrideLock, Debugger.CRITICAL, 'draw', 'CanvasActivity'); - Debugger.log("Read only: " + _activity.isReadOnly(), Debugger.CRITICAL, 'draw', 'CanvasActivity'); if(_activity.isReadOnly() && app.canvas.ddm.editOverrideLock == 1){ Debugger.log("Making transparent layer visible. ", Debugger.CRITICAL, 'draw', 'CanvasActivity'); @@ -331,21 +338,25 @@ stopSign_mc._visible = true; stopSign_mc._x = 0; stopSign_mc._y = 0; - - + } else if(_branchConnector) { + branchSign_mc._visible = true; + branchSign_mc._x = 0; + branchSign_mc._y = 0; } else { //chose the icon: if(_activity.isGroupActivity()){ groupIcon_mc._visible = true; icon_mc._visible = false; theIcon_mc = groupIcon_mc; - } else if(_activity.isBranchingActivity()) { + } else if(_activity.isBranchingActivity()){ branchIcon_mc._visible = true; + groupIcon_mc._visible = false; icon_mc._visible = false; theIcon_mc = branchIcon_mc; - } else{ + } else { groupIcon_mc._visible = false; + branchIcon_mc._visible = false; icon_mc._visible = true; theIcon_mc = icon_mc; } @@ -356,29 +367,33 @@ //chose the background mc if(_activity.groupingUIID > 0){ canvasActivityGrouped_mc._visible = true; - canvasActivity_mc._visible=false; + canvasActivity_mc._visible = false; }else{ - canvasActivity_mc._visible=true; + canvasActivity_mc._visible = true; canvasActivityGrouped_mc._visible = false; } - title_lbl.visible=true; + title_lbl.visible = true; stopSign_mc._visible = false; + branchSign_mc._visible = false; //write text title_lbl.text = _activity.title; clickTarget_mc._width = TOOL_ACTIVITY_WIDTH; - clickTarget_mc._height= TOOL_ACTIVITY_HEIGHT; + clickTarget_mc._height = TOOL_ACTIVITY_HEIGHT; } //position - _x = _activity.xCoord //- (clickTarget_mc._width/2); - _y = _activity.yCoord //- (clickTarget_mc._height/2); + if(!_branchConnector) { + _x = _activity.xCoord; + _y = _activity.yCoord; + } Debugger.log('canvasActivity_mc._visible'+canvasActivity_mc._visible,4,'draw','CanvasActivity'); _visible = true; + if (_activity.runOffline){ bgNegative = "true" setStyles(); @@ -408,8 +423,7 @@ // check double-click var now:Number = new Date().getTime(); - if((now - _dcStartTime) <= Config.DOUBLE_CLICK_DELAY){ - trace("Module passed is: "+_module) + if((now - _dcStartTime) <= Config.DOUBLE_CLICK_DELAY && !branchConnector){ if (app.controlKeyPressed != "transition"){ _doubleClicking = true; if (_module == "monitoring"){ @@ -426,7 +440,6 @@ _doubleClicking = false; - //Debugger.log('_canvasController:'+_canvasController,Debugger.GEN,'onPress','CanvasActivity'); if (_module == "monitoring"){ Debugger.log('SingleClicking:+'+this,Debugger.GEN,'onPress','CanvasActivity for monitoring'); _monitorController.activityClick(this); @@ -444,7 +457,6 @@ private function onRelease():Void{ if(!_doubleClicking){ Debugger.log('Releasing:'+this,Debugger.GEN,'onRelease','CanvasActivity'); - trace("Activity ID is: "+this.activity.activityUIID) if (_module == "monitoring"){ _monitorController.activityRelease(this); }else { @@ -506,7 +518,15 @@ _activity = a; } + public function get branchConnector():Boolean { + if(_branchConnector != null) return _branchConnector; + else return false; + } + public function set branchConnector(a:Boolean):Void { + _branchConnector = a; + } + private function getAssociatedStyle():Object{ trace("Category ID for Activity "+_activity.title +": "+_activity.activityCategoryID) var styleObj:Object = new Object(); @@ -574,17 +594,12 @@ }else { var parentAct = mm.getMonitor().ddm.getActivityByUIID(this.activity.parentUIID) } - //if(parentAct.activityTypeID == Activity.OPTIONAL_ACTIVITY_TYPE){ - //trace("called by view") - //styleObj = _tm.getStyleObject('ACTPanel1') - //act_pnl.setStyle('styleName',styleObj); - //}else { - styleObj = getAssociatedStyle() //_tm.getStyleObject('ACTPanel') + styleObj = getAssociatedStyle(); act_pnl.setStyle('styleName',styleObj); - //} + } else { - styleObj = getAssociatedStyle() //_tm.getStyleObject('ACTPanel') + styleObj = getAssociatedStyle(); act_pnl.setStyle('styleName',styleObj); } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasBranchingActivity.as =================================================================== diff -u -r6315ccfc298871795f8ab124b561646cc09a93f5 -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasBranchingActivity.as (.../CanvasBranchingActivity.as) (revision 6315ccfc298871795f8ab124b561646cc09a93f5) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasBranchingActivity.as (.../CanvasBranchingActivity.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -100,6 +100,9 @@ private var _locked:Boolean; private var _isSelected:Boolean; + + private var children_mc: Array; + private var childActivities_mc : MovieClip; function CanvasBranchingActivity(){ Debugger.log("_activity:"+_activity.title+'uiID:'+_activity.activityUIID+' children:'+_children.length,Debugger.GEN,'Constructor','CanvasBranchingActivity'); @@ -136,8 +139,6 @@ _activity = initObj.activity; } - //_ddm.getComplexActivityChildren(_activity.activityUIID); - showAssets(false); if (_activity.selectActivity == "false"){ @@ -409,6 +410,10 @@ _canvasController.activityReleaseOutside(this); } + private function destroy() { + branchView.removeMovieClip(); + } + /** * Get the CSSStyleDeclaration objects for each component and applies them * directly to the instanced Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as =================================================================== diff -u -r6315ccfc298871795f8ab124b561646cc09a93f5 -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision 6315ccfc298871795f8ab124b561646cc09a93f5) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -72,7 +72,7 @@ if(transitionTarget instanceof LFError){ transitionTarget.showErrorAlert(null); }else{ - _canvasModel.addActivityToTransition(transitionTarget); + var td = _canvasModel.addActivityToTransition(transitionTarget); _canvasModel.activeView.initDrawTempTrans(); } @@ -82,7 +82,7 @@ var parentAct = _canvasModel.getCanvas().ddm.getActivityByUIID(ca.activity.parentUIID) if(ca.activity.parentUIID != null && parentAct.activityTypeID == Activity.PARALLEL_ACTIVITY_TYPE){ - _canvasModel.isDragging = false; + _canvasModel.isDragging = false; } else { _canvasModel.isDragging = true; ca.startDrag(false); @@ -167,12 +167,8 @@ } } } - } - } - - } //if we are on the bin - trash it @@ -184,19 +180,21 @@ } //give it the new co-ords and 'drop' it - ca.activity.xCoord = ca._x; - ca.activity.yCoord = ca._y; + if(!ca.branchConnector) { + ca.activity.xCoord = ca._x; + ca.activity.yCoord = ca._y; + } //refresh the transitions //TODO: refresh the transitions as you drag... var myTransitions = _canvasModel.getCanvas().ddm.getTransitionsForActivityUIID(ca.activity.activityUIID); myTransitions = myTransitions.myTransitions; + //run in a loop to support branches, maybe more then 2 transitions. for (var i=0; i 0 || ddm_activity.parentUIID > 0){ - return r = "CHILD"; + + //check if act has been removed from canvas + if(ddm_activity == null || ddm_activity == undefined){ + return r = "DELETE"; } //if they are the same (ref should point to same act) then nothing to do. @@ -701,16 +739,26 @@ return r = "SAME"; } + //check if the activity has a parent, if so then we dont need to check it + Debugger.log('Checking parent activity IDs, parentUIID:'+ddm_activity.parentUIID+'parentID:'+ddm_activity.parentActivityID,Debugger.GEN,'refreshDesign','CanvasModel'); + if(ddm_activity.activityTypeID == Activity.SEQUENCE_ACTIVITY_TYPE){ + return r = "SEQ"; + } + + if(ddm_activity.parentActivityID > 0 || ddm_activity.parentUIID > 0){ + var parentAct; + if((parentAct = _cv.ddm.activities.get(ddm_activity.parentUIID)) != null) + if(parentAct.activityTypeID == Activity.SEQUENCE_ACTIVITY_TYPE) + 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"; } - //check if act has been removed from canvas - if(ddm_activity == null || ddm_activity == undefined){ - return r = "DELETE"; - } - } @@ -737,8 +785,6 @@ if(ddm_transition == null){ return r = "DELETE"; } - - } /** @@ -751,15 +797,14 @@ */ private function refreshDesign(){ - //porobbably need to get a bit more granular 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'); - //Debugger.log('ddmActivity_keys::'+ddmActivity_keys.toString(),Debugger.GEN,'refreshDesign','CanvasModel'); + var cmActivity_keys:Array = _activitiesDisplayed.keys(); Debugger.log('cmActivity_keys.length:'+cmActivity_keys.length,Debugger.GEN,'refreshDesign','CanvasModel'); - //Debugger.log('cmActivity_keys:'+cmActivity_keys.toString(),Debugger.GEN,'refreshDesign','CanvasModel'); @@ -774,37 +819,29 @@ indexArray = cmActivity_keys; } - //loop through and do comparison for(var i=0;i= 0) ? calcEdgePoint(degs - 180, toOTC_x, toOTC_y, toAct_Deg, _endPoint) : calcEdgePoint(degs + 180, toOTC_x, toOTC_y, toAct_Deg, _endPoint); - // calc midpoint if(_fromAct_edgePoint != null & _toAct_edgePoint != null) { arrow_mc._x = (_fromAct_edgePoint.x + _toAct_edgePoint.x)/2; @@ -191,33 +171,9 @@ _midPoint = new Point(arrow_mc._x,arrow_mc._y); - xPos = this._x - trace("x position of start point: "+xPos) - - /* - stopArrow_mc._rotation = degs; - - // calculate the position for the stop sign - stopSign_mc._x = arrow_mc._x; - stopSign_mc._y = arrow_mc._y; - stopArrow_mc._x = arrow_mc._x; - stopArrow_mc._y = arrow_mc._y; - */ + xPos = this._x; } - /* - private function updateSynchStatus():Void{ - - if(completionType == "synchronize_teacher"){ - stopSign._visible = true; - stopSignArrow._visible = true; - }else{ - stopSign._visible = false; - stopSignArrow._visible = false; - } - - } -*/ public function get xPosition():Number{ return xPos; @@ -293,23 +249,16 @@ private function onPress():Void{ // check double-click var now:Number = new Date().getTime(); - //Debugger.log('now:'+now,Debugger.GEN,'onPress','CanvasTransition'); - //Debugger.log('_dcStartTime:'+_dcStartTime,Debugger.GEN,'onPress','CanvasTransition'); Debugger.log('now - _dcStartTime:'+(now - _dcStartTime)+' Config.DOUBLE_CLICK_DELAY:'+Config.DOUBLE_CLICK_DELAY,Debugger.GEN,'onPress','CanvasTransition'); if((now - _dcStartTime) <= Config.DOUBLE_CLICK_DELAY){ - //Debugger.log('DoubleClicking:'+this,Debugger.GEN,'onPress','CanvasTransition'); _doubleClicking = true; _canvasController.transitionDoubleClick(this); }else{ Debugger.log('SingleClicking:+'+this,Debugger.GEN,'onPress','CanvasTransition'); _doubleClicking = false; - - //Debugger.log('_canvasController:'+_canvasController,Debugger.GEN,'onPress','CanvasTransition'); _canvasController.transitionClick(this); - - } _dcStartTime = now; @@ -318,18 +267,13 @@ private function onRelease():Void{ if(!_doubleClicking){ - //Debugger.log('Releasing:'+this,Debugger.GEN,'onRelease','CanvasTransition'); _canvasController.transitionRelease(this); } } private function onReleaseOutside():Void{ - //Debugger.log('ReleasingOutside:'+this,Debugger.GEN,'onReleaseOutside','CanvasTransition'); _canvasController.transitionReleaseOutside(this); } - - - } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasView.as =================================================================== diff -u -r6315ccfc298871795f8ab124b561646cc09a93f5 -r7548a5a6349a58e304bfa7b35805978121ccbd87 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasView.as (.../CanvasView.as) (revision 6315ccfc298871795f8ab124b561646cc09a93f5) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasView.as (.../CanvasView.as) (revision 7548a5a6349a58e304bfa7b35805978121ccbd87) @@ -35,7 +35,6 @@ import mx.managers.*; import mx.utils.*; - /** *Authoring view for the canvas * Relects changes in the CanvasModel @@ -162,7 +161,6 @@ transparentCover = content.createClassObject(Panel, "_transparentCover_mc", content.getNextHighestDepth(), {_visible: false, enabled: false, _alpha: 50}); transparentCover.onPress = null; - titleBar = _canvasView.attachMovie("DesignTitleBar", "titleBar", _canvasView.getNextHighestDepth()) var styleObj = _tm.getStyleObject('label'); @@ -227,7 +225,7 @@ titleBar.nameBGShadow._width = bgWidth; titleBar.nameBG._visible = true; titleBar.rightCurve._x = bgWidth+27; - titleBar.rightCurveShadow._x = titleBar.rightCurve._x+2 + titleBar.rightCurveShadow._x = titleBar.rightCurve._x+2; } @@ -366,6 +364,7 @@ cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasView'); + return true; }