Index: lams_central/src/flash/org/lamsfoundation/lams/authoring/Application.as =================================================================== diff -u -rd19ff9ee34c7a400827cb0c00d7fd447f2788627 -r867609c2e3eac5e65ccc81a4ae894eeeb7a54fba --- lams_central/src/flash/org/lamsfoundation/lams/authoring/Application.as (.../Application.as) (revision d19ff9ee34c7a400827cb0c00d7fd447f2788627) +++ lams_central/src/flash/org/lamsfoundation/lams/authoring/Application.as (.../Application.as) (revision 867609c2e3eac5e65ccc81a4ae894eeeb7a54fba) @@ -85,7 +85,8 @@ private static var Z_KEY:Number = 90; private static var Y_KEY:Number = 89; - + public static var CUT_TYPE:Number = 0; + public static var COPY_TYPE:Number = 1; private var _uiLoadCheckCount = 0; // instance counter for number of times we have checked to see if theme and dict are loaded private var _dataLoadCheckCount = 0; @@ -118,6 +119,8 @@ //clipboard private var _clipboardData:Object; + private var _clipboardPasteCount:Number; + // set up Key Listener //private var keyListener:Object; @@ -572,8 +575,13 @@ * @param obj * @return */ - public function setClipboardData(obj:Object):Void{ - _clipboardData = obj; + public function setClipboardData(obj:Object, type:Number):Void{ + // initialise new clipboard object + _clipboardData = new Object(); + _clipboardData.data = obj; + _clipboardData.type = type; + _clipboardData.count = 0; + trace("clipBoard data id"+_clipboardData); } @@ -589,16 +597,19 @@ public function cut():Void{ - setClipboardData(_canvas.model.selectedItem); + trace("testing cut"); + setClipboardData(_canvas.model.selectedItem, CUT_TYPE); + //_canvas.removeActivity(_canvas.model.selectedItem.activity.activityUIID); } public function copy():Void{ trace("testing copy"); - setClipboardData(_canvas.model.selectedItem); + setClipboardData(_canvas.model.selectedItem, COPY_TYPE); } public function paste():Void{ trace("testing paste"); + _clipboardData.count++; _canvas.setPastedItem(getClipboardData()); } Index: lams_central/src/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as =================================================================== diff -u -rc471eca0f9f4b314366d1cca1189a0d40a03ab7f -r867609c2e3eac5e65ccc81a4ae894eeeb7a54fba --- lams_central/src/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision c471eca0f9f4b314366d1cca1189a0d40a03ab7f) +++ lams_central/src/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision 867609c2e3eac5e65ccc81a4ae894eeeb7a54fba) @@ -513,22 +513,37 @@ * @return */ public function setPastedItem(o:Object):Object{ - trace("called on right click"); - if (o instanceof CanvasActivity){ - //clone the activity - var newToolActivity:ToolActivity = o.activity.clone(); - newToolActivity.title = Dictionary.getValue('prefix_copyof')+newToolActivity.title; - newToolActivity.activityUIID = _ddm.newUIID(); - - _ddm.addActivity(newToolActivity); - canvasModel.setDirty(); - return newToolActivity; - }else{ + if (o.data instanceof CanvasActivity){ + Debugger.log('instance is CA',Debugger.GEN,'setPastedItem','Canvas'); + return pasteItem(o.data.activity, o); + } else if(o.data instanceof ToolActivity){ + Debugger.log('instance is Tool',Debugger.GEN,'setPastedItem','Canvas'); + return pasteItem(o.data, o); + } else{ Debugger.log('Cant paste this item!',Debugger.GEN,'setPastedItem','Canvas'); } } + + private function pasteItem(toolToCopy:ToolActivity, o:Object):Object{ + //clone the activity + var newToolActivity:ToolActivity = toolToCopy.clone(); + newToolActivity.activityUIID = _ddm.newUIID(); + + if(o.type == Application.CUT_TYPE){ + Application.getInstance().setClipboardData(newToolActivity, Application.COPY_TYPE); + removeActivity(o.data.activity.activityUIID); + } else { + if(o.count <= 1) { newToolActivity.title = Dictionary.getValue('prefix_copyof')+newToolActivity.title; } + else { newToolActivity.title = Dictionary.getValue('prefix_copyof_count', [o.count])+newToolActivity.title; } + } + _ddm.addActivity(newToolActivity); + canvasModel.setDirty(); + + return newToolActivity; + } + /** * Called from the toolbar usually - starts or stops the gate tool * @usage @@ -570,6 +585,26 @@ } } + public function stopActiveTool(){ + switch(canvasModel.activeTool){ + case CanvasModel.GATE_TOOL : + stopGateTool(); + break; + case CanvasModel.OPTIONAL_TOOL : + stopOptionalActivity(); + break; + case CanvasModel.GROUP_TOOL : + stopGroupTool(); + break; + case CanvasModel.TRANSITION_TOOL : + stopTransitionTool(); + break; + default : + Cursor.showCursor(Application.C_DEFAULT); + canvasModel.activeTool = null; + + } + } public function startGateTool(){ Debugger.log('Starting gate tool',Debugger.GEN,'startGateTool','Canvas');