Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r7ced9db5725f36fd33877261bd003223b2f834f1 -r86aae1b21277f5fc950a0303361b63fd7adde39c Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r7ced9db5725f36fd33877261bd003223b2f834f1 -r86aae1b21277f5fc950a0303361b63fd7adde39c Binary files differ Index: lams_flash/src/central/flash/lams_authoring.fla =================================================================== diff -u -r8bd645b8bf040685a0072d17b36dd3cbfedf6952 -r86aae1b21277f5fc950a0303361b63fd7adde39c Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ComplexActivity.as =================================================================== diff -u -rcd33f92df2c46dfe2e817281d501e179a6094637 -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ComplexActivity.as (.../ComplexActivity.as) (revision cd33f92df2c46dfe2e817281d501e179a6094637) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ComplexActivity.as (.../ComplexActivity.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -42,6 +42,7 @@ private var _optionsInstructions:String; private var _firstActivityUIID:Number; + private var _isSequenceBased:Boolean; function ComplexActivity(activityUIID:Number){ super(activityUIID); @@ -161,5 +162,12 @@ _firstActivityUIID = a; } + public function get isSequenceBased():Boolean{ + return _isSequenceBased; + } + + public function set isSequenceBased(a:Boolean):Void{ + _isSequenceBased = a; + } } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as =================================================================== diff -u -r7c8ff663c07662a984677b2ed751754346226590 -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 7c8ff663c07662a984677b2ed751754346226590) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -568,10 +568,19 @@ if(c==ApplicationParent.C_OPTIONAL){ stopOptionalActivity(); }else{ - startOptionalActivity(); + startOptionalActivity(false); } } + public function toggleOptionalSequenceActivity():Void{ + var c:String = Cursor.getCurrentCursor(); + if(c==ApplicationParent.C_OPTIONAL){ + stopOptionalActivity(); + }else{ + startOptionalActivity(true); + } + } + public function toggleTransitionTool():Void{ Debugger.log('Switch on Transition Tool', Debugger.GEN,'toogleTransitionTool','Canvas'); var c:String = Cursor.getCurrentCursor(); @@ -624,10 +633,11 @@ } - public function startOptionalActivity(){ + public function startOptionalActivity(isSequence:Boolean){ Debugger.log('Starting Optioanl Activity',Debugger.GEN,'startOptionalActivity','Canvas'); Cursor.showCursor(ApplicationParent.C_OPTIONAL); - canvasModel.activeTool = CanvasModel.OPTIONAL_TOOL; + + canvasModel.activeTool = (isSequence) ? CanvasModel.OPTIONAL_SEQ_TOOL : CanvasModel.OPTIONAL_TOOL; } public function stopOptionalActivity(){ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as =================================================================== diff -u -r9cb49c5c64919ebee4c5230be002beadb2af932f -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision 9cb49c5c64919ebee4c5230be002beadb2af932f) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasController.as (.../CanvasController.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -582,11 +582,17 @@ if(_canvasModel.activeTool == CanvasModel.OPTIONAL_TOOL){ var p = new Point(_canvasModel.activeView.content._xmouse-(complexActWidth/2), _canvasModel.activeView.content._ymouse); - _canvasModel.createNewOptionalActivity(Activity.OPTIONAL_ACTIVITY_TYPE,p,parent); + _canvasModel.createNewOptionalActivity(Activity.OPTIONAL_ACTIVITY_TYPE,p,parent,false); _canvasModel.getCanvas().stopOptionalActivity(); } + if(_canvasModel.activeTool == CanvasModel.OPTIONAL_SEQ_TOOL){ + var p = new Point(_canvasModel.activeView.content._xmouse-(complexActWidth/2), _canvasModel.activeView.content._ymouse); + _canvasModel.createNewOptionalActivity(Activity.OPTIONAL_ACTIVITY_TYPE,p,parent,true); + _canvasModel.getCanvas().stopOptionalActivity(); + } + if(_canvasModel.activeTool == CanvasModel.GROUP_TOOL){ var p = new Point(_canvasModel.activeView.content._xmouse-(toolActWidth/2), _canvasModel.activeView.content._ymouse-(toolActHeight/2)); _canvasModel.createNewGroupActivity(p,parent); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r7ced9db5725f36fd33877261bd003223b2f834f1 -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 7ced9db5725f36fd33877261bd003223b2f834f1) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -37,6 +37,7 @@ public static var TRANSITION_TOOL:String = "TRANSITION"; //activie tool ID strings definition public static var OPTIONAL_TOOL:String = "OPTIONAL"; + public static var OPTIONAL_SEQ_TOOL:String = "OPTIONAL_SEQ"; public static var GATE_TOOL:String = "GATE"; public static var GROUP_TOOL:String = "GROUP"; public static var BRANCH_TOOL:String = "BRANCH"; @@ -463,7 +464,7 @@ * @param pos * @return */ - public function createNewOptionalActivity(ActivityTypeID, pos:Point, parent){ + public function createNewOptionalActivity(ActivityTypeID, pos:Point, parent, isSequence:Boolean){ var optAct = new ComplexActivity(_cv.ddm.newUIID()); optAct.learningDesignID = _cv.ddm.learningDesignID; @@ -473,6 +474,7 @@ optAct.activityCategoryID = Activity.CATEGORY_SYSTEM; optAct.yCoord = pos.y; optAct.xCoord = pos.x; + optAct.isSequenceBased = (isSequence) ? isSequence : false; Debugger.log('Optional Activitys Y Coord is :'+optAct.yCoord,Debugger.GEN,'createNewOptionalActivity','CanvasModel'); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarController.as =================================================================== diff -u -r30b7641a18c8c83b3722fc22bb936d54f4eaa18b -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarController.as (.../ToolbarController.as) (revision 30b7641a18c8c83b3722fc22bb936d54f4eaa18b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarController.as (.../ToolbarController.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -40,6 +40,7 @@ private var _app:Application; private var _toolbarModel:ToolbarModel; private var isflowActive:Boolean = false; + private var isOptActive:Boolean = false; public function ToolbarController (cm:Observable) { super (cm); @@ -48,8 +49,9 @@ } - public function hideFlow(){ + public function hideOptionPanels(){ isflowActive = false; + isOptActive = false; _toolbarModel.getToolbar().view.showHideAssets(false); } @@ -62,11 +64,10 @@ Debugger.log('click evt.target.label:'+evt.target.label,Debugger.GEN,'click','ToolbarController'); var tgt:String = new String(evt.target); - hideFlow(); + hideOptionPanels(); if(tgt.indexOf("new") != -1){ _app.getCanvas().clearCanvas(false); - }else if(tgt.indexOf("open") != -1){ _app.getCanvas().openDesignBySelection(); }else if(tgt.indexOf("save") != -1){ @@ -81,18 +82,30 @@ _app.paste(); }else if(tgt.indexOf("trans") != -1){ _app.getCanvas().toggleTransitionTool(); - - }else if(tgt.indexOf("optional") != -1){ + }else if(tgt.indexOf("optional_act") != -1){ _app.getCanvas().toggleOptionalActivity(); - + }else if(tgt.indexOf("optional_seq") != -1){ + _app.getCanvas().toggleOptionalSequenceActivity(); + }else if(tgt.indexOf("optional") != -1){ + if (!isOptActive){ + var c:String = Cursor.getCurrentCursor(); + if(c==Application.C_GATE){ + _app.getCanvas().stopGateTool(); + } + + isOptActive = true; + _toolbarModel.getToolbar().view.showHideOptAssets(true); + } }else if(tgt.indexOf("flow") != -1){ if (!isflowActive){ var c:String = Cursor.getCurrentCursor(); + if(c==Application.C_GATE){ _app.getCanvas().stopGateTool(); } + isflowActive = true; - _toolbarModel.getToolbar().view.showHideAssets(true); + _toolbarModel.getToolbar().view.showHideFlowAssets(true); } }else if(tgt.indexOf("gate") != -1){ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarModel.as =================================================================== diff -u -rea5dd39341c9597a297fe0e292479b5e184196c5 -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarModel.as (.../ToolbarModel.as) (revision ea5dd39341c9597a297fe0e292479b5e184196c5) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarModel.as (.../ToolbarModel.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -62,7 +62,6 @@ infoObj.updateType = "SIZE"; notifyObservers(infoObj); } - public function toolbarButtons(){ var buttonArr:Array = new Array(); @@ -79,8 +78,10 @@ buttonArr[7] = ["flow_btn", "icon_flow"]; buttonArr[8] = ["group_btn", "icon_group"]; buttonArr[9] = ["preview_btn", "icon_preview"]; - buttonArr[10] = ["gate_btn", "icon_gate"]; - buttonArr[11] = ["branch_btn", "icon_branch"]; + buttonArr[10] = ["optional_act_btn", "icon_optional"]; + buttonArr[11] = ["optional_seq_btn", "icon_optional"]; + buttonArr[12] = ["gate_btn", "icon_gate"]; + buttonArr[13] = ["branch_btn", "icon_branch"]; } else { buttonArr[0] = ["apply_changes_btn", "icon_saveDesign"]; @@ -92,8 +93,10 @@ buttonArr[6] = ["optional_btn", "icon_optional"]; buttonArr[7] = ["flow_btn", "icon_flow"]; buttonArr[8] = ["group_btn", "icon_group"]; - buttonArr[9] = ["gate_btn", "icon_gate"]; - buttonArr[10] = ["branch_btn", "icon_branch"]; + buttonArr[9] = ["optional_act_btn", "icon_optional"]; + buttonArr[10] = ["optional_seq_btn", "icon_optional"]; + buttonArr[11] = ["gate_btn", "icon_gate"]; + buttonArr[12] = ["branch_btn", "icon_branch"]; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarView.as =================================================================== diff -u -r60db93c549c96bad95e890f34add10c4ef9d3d2e -r86aae1b21277f5fc950a0303361b63fd7adde39c --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarView.as (.../ToolbarView.as) (revision 60db93c549c96bad95e890f34add10c4ef9d3d2e) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/tb/ToolbarView.as (.../ToolbarView.as) (revision 86aae1b21277f5fc950a0303361b63fd7adde39c) @@ -34,30 +34,43 @@ * Authoring view for the toolbar */ class ToolbarView extends AbstractView { + //Toolbar clip private var _toolbar_mc:MovieClip; private var _tm:ThemeManager; private var _tip:ToolTip; - private var btnOffset_X:Number = 4; + + private var btnOffset_X:Number = 4; private var btnOffset_Y:Number = 6; + private var new_btn:Button; private var open_btn:Button; private var save_btn:Button; private var apply_changes_btn:Button; + private var copy_btn:Button; private var paste_btn:Button; + private var trans_btn:Button; + private var optional_btn:Button; + private var optional_act_btn:Button; + private var optional_seq_btn:Button; + private var gate_btn:Button; private var flow_btn:Button; private var branch_btn:Button; + private var group_btn:Button; private var preview_btn:Button; private var cancel_btn:Button; + private var _toolbarMenu:Array; private var bkg_pnl:Panel; private var flow_bkg_pnl:Panel; + private var optional_bkg_pnl:Panel; + private var _dictionary:Dictionary; private static var SPACER_DEPTH:Number = 30; @@ -89,29 +102,39 @@ public function init(m:Observable, c:Controller) { //Invoke superconstructor, which sets up MVC relationships. super (m, c); + //In one frame call createToolbar this gives components one frame to setup etc. MovieClipUtils.doLater(Proxy.create(this,createToolbar)); + this.tabChildren = true; setTabIndex(); } public function showHideAssets(v:Boolean){ + showHideFlowAssets(v); + showHideOptAssets(v); + } + + public function showHideFlowAssets(v:Boolean){ + //showHideOptAssets(false); - //branch_btn.enabled = false; gate_btn.visible = v; branch_btn.visible = v; flow_bkg_pnl.visible = v; - var flowW:Number = flow_btn.width - var gateW:Number = gate_btn.width - var branchW:Number = branch_btn.width - var widthSet1:Number = Math.max(flowW, gateW) - var widthSet2:Number = Math.max(flowW, branchW) - var maxWidth:Number = Math.max(widthSet1, widthSet2) - flow_bkg_pnl.setSize(maxWidth+6, 95) - flow_bkg_pnl._x = branch_btn._x-3; + flow_bkg_pnl.setSize(Math.max(Math.max(flow_btn.width, gate_btn.width), Math.max(flow_btn.width, branch_btn.width)) + 6, 95) + flow_bkg_pnl._x = branch_btn._x - 3; + } + + public function showHideOptAssets(v:Boolean){ + //showHideFlowAssets(false); + optional_act_btn.visible = v; + optional_seq_btn.visible = v; + optional_bkg_pnl.visible = v; + optional_bkg_pnl.setSize(Math.max(Math.max(optional_btn.width, optional_act_btn.width), Math.max(optional_btn.width, optional_seq_btn.width)) + 6, 95); + optional_bkg_pnl._x = optional_act_btn._x - 3; } /* @@ -129,20 +152,22 @@ //Add the button handlers, essentially this is handing on clicked event to controller. var controller = getController(); - new_btn.addEventListener("click",controller); - open_btn.addEventListener("click",controller); - save_btn.addEventListener("click",controller); - copy_btn.addEventListener("click",controller); - paste_btn.addEventListener("click",controller); - trans_btn.addEventListener("click",controller); - optional_btn.addEventListener("click",controller); - flow_btn.addEventListener("click",controller); - gate_btn.addEventListener("click",controller); - group_btn.addEventListener("click",controller); - branch_btn.addEventListener("click",controller); - preview_btn.addEventListener("click",controller); + new_btn.addEventListener("click", controller); + open_btn.addEventListener("click", controller); + save_btn.addEventListener("click", controller); + copy_btn.addEventListener("click", controller); + paste_btn.addEventListener("click", controller); + trans_btn.addEventListener("click", controller); + optional_btn.addEventListener("click", controller); + optional_act_btn.addEventListener("click", controller); + optional_seq_btn.addEventListener("click", controller); + flow_btn.addEventListener("click", controller); + gate_btn.addEventListener("click", controller); + group_btn.addEventListener("click", controller); + branch_btn.addEventListener("click", controller); + preview_btn.addEventListener("click", controller); apply_changes_btn.addEventListener("click", controller); - cancel_btn.addEventListener("click",controller); + cancel_btn.addEventListener("click", controller); // Button handler for rollover and rollout. @@ -176,6 +201,12 @@ branch_btn.onRollOver = Proxy.create(this,this['showToolTip'], branch_btn, "branch_btn_tooltip"); branch_btn.onRollOut = Proxy.create(this,this['hideToolTip']); + optional_act_btn.onRollOver = Proxy.create(this,this['showToolTip'], optional_act_btn, "optional_btn_tooltip"); + optional_act_btn.onRollOut = Proxy.create(this,this['hideToolTip']); + + optional_seq_btn.onRollOver = Proxy.create(this,this['showToolTip'], optional_seq_btn, "optional_seq_btn_tooltip"); + optional_seq_btn.onRollOut = Proxy.create(this,this['hideToolTip']); + group_btn.onRollOver = Proxy.create(this,this['showToolTip'], group_btn, "group_btn_tooltip"); group_btn.onRollOut = Proxy.create(this,this['hideToolTip']); @@ -189,9 +220,11 @@ cancel_btn.onRollOut = Proxy.create(this,this['hideToolTip']); showHideAssets(false); + Debugger.log('dispatch it',Debugger.GEN,'createToolbar','ToolbarView'); - //Now that view is setup dispatch loaded event - dispatchEvent({type:'load',target:this}); + + //Now that view is setup dispatch loaded event + dispatchEvent({type:'load',target:this}); } public function setupLabels(){ @@ -203,6 +236,8 @@ paste_btn.label = Dictionary.getValue('paste_btn'); trans_btn.label = Dictionary.getValue('trans_btn'); optional_btn.label = Dictionary.getValue('optional_btn'); + optional_act_btn.label = Dictionary.getValue('optional_act_btn'); + optional_seq_btn.label = Dictionary.getValue('optional_seq_btn'); gate_btn.label = Dictionary.getValue('gate_btn'); branch_btn.label = Dictionary.getValue('branch_btn'); flow_btn.label = Dictionary.getValue('flow_btn'); @@ -224,12 +259,14 @@ paste_btn.tabIndex = 206 trans_btn.tabIndex = 207 optional_btn.tabIndex = 208 - flow_btn.tabIndex = 209 - gate_btn.tabIndex = 210 - branch_btn.tabIndex = 211 - group_btn.tabIndex = 212 - preview_btn.tabIndex = 213 - cancel_btn.tabIndex = 214 + optional_act_btn.tabIndex = 209 + optional_seq_btn.tabIndex = 210 + flow_btn.tabIndex = 211 + gate_btn.tabIndex = 212 + branch_btn.tabIndex = 213 + group_btn.tabIndex = 214 + preview_btn.tabIndex = 215 + cancel_btn.tabIndex = 216 } public function setupButtons(tm:ToolbarModel, menuList:Array){ @@ -246,12 +283,12 @@ var btn_text = this["btn_text"] btn_text.autoSize = true; btn_text.html = true; - btn_text.htmlText = btnLabel + btn_text.htmlText = btnLabel; - var btnWidth:Number = btn_text.textWidth+37 + var btnWidth:Number = btn_text.textWidth+37; - _toolbarMenu[i] = this.attachMovie("Button", menuList[i][0], this.getNextHighestDepth(), {label:btnLabel, icon:menuList[i][1] }) - _toolbarMenu[i].setSize(btnWidth, 25) + _toolbarMenu[i] = this.attachMovie("Button", menuList[i][0], this.getNextHighestDepth(), {label:btnLabel, icon:menuList[i][1] }); + _toolbarMenu[i].setSize(btnWidth, 25); } else { _toolbarMenu[i] = null; @@ -260,17 +297,22 @@ if(_toolbarMenu[i] != null) { if (i == 0){ - _toolbarMenu[i]._x = btnOffset_X + _toolbarMenu[i]._x = btnOffset_X; } else { _toolbarMenu[i]._x = getToolbarButtonXPos(_toolbarMenu, i-1, 1); //(_toolbarMenu[i-1]._x+_toolbarMenu[i-1].width)+btnOffset_X } _toolbarMenu[i]._y = btnOffset_Y; + if ((i >= menuList.length-4) && (i < menuList.length-2)) { + _toolbarMenu[i]._x = this.optional_btn._x; + _toolbarMenu[i]._y = (_toolbarMenu[i-1]._y+_toolbarMenu[i-1].height)+btnOffset_Y; + } + if (i >= menuList.length-2){ _toolbarMenu[i]._x = this.flow_btn._x; - _toolbarMenu[i]._y = (_toolbarMenu[i-1]._y+_toolbarMenu[i-1].height)+btnOffset_Y + _toolbarMenu[i]._y = (_toolbarMenu[i-3]._y+_toolbarMenu[i-3].height)+btnOffset_Y; } if (i == menuList.length){ @@ -354,8 +396,8 @@ private function setSize(tm:ToolbarModel):Void{ var s:Object = tm.getSize(); + //Size panel - trace('toolbar view setting width to '+s.w); bkg_pnl.setSize(s.w,bkg_pnl._height); } @@ -383,16 +425,21 @@ paste_btn.setStyle('styleName',styleObj); trans_btn.setStyle('styleName',styleObj); optional_btn.setStyle('styleName',styleObj); + optional_act_btn.setStyle('styleName',styleObj); + optional_seq_btn.setStyle('styleName',styleObj); gate_btn.setStyle('styleName',styleObj); flow_btn.setStyle('styleName',styleObj); branch_btn.setStyle('styleName',styleObj); group_btn.setStyle('styleName', styleObj); preview_btn.setStyle('styleName',styleObj); cancel_btn.setStyle('styleName',styleObj); + styleObj = _tm.getStyleObject('BGPanel'); bkg_pnl.setStyle('styleName',styleObj); + styleObj = _tm.getStyleObject('FlowPanel'); flow_bkg_pnl.setStyle('styleName',styleObj); + optional_bkg_pnl.setStyle('styleName',styleObj); }