Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r029e69643ff0fb567d2d53ef9e63ba4bd035e50b -rc5ce2369b6232db2c25a966f7873f695ebf6e485 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 029e69643ff0fb567d2d53ef9e63ba4bd035e50b) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision c5ce2369b6232db2c25a966f7873f695ebf6e485) @@ -30,6 +30,8 @@ import org.lamsfoundation.lams.common.dict.*; import org.lamsfoundation.lams.common.mvc.*; import org.lamsfoundation.lams.common.CommonCanvasView; +import org.lamsfoundation.lams.monitoring.mv.MonitorModel; +import org.lamsfoundation.lams.monitoring.mv.MonitorController; import mx.controls.*; import mx.containers.*; @@ -48,6 +50,8 @@ private var _container:MovieClip; //The container window that holds the dialog private var _cm:CanvasModel; + private var _mm:MonitorModel; + private var _canvasBranchView:CanvasBranchView; private var _canvasBranchingActivity:CanvasActivity; @@ -95,10 +99,11 @@ mx.events.EventDispatcher.initialize(this); this._visible = false; + } /** - * Called to initialise Canvas . CAlled by the Canvas container + * Called to initialise Canvas . Called by the Canvas container */ public function init(m:Observable,c:Controller){ @@ -107,17 +112,21 @@ //Set up parameters for the grid H_GAP = 10; V_GAP = 10; - - _cm = CanvasModel(m); - + + _cm = (m instanceof CanvasModel) ? CanvasModel(m) : null; + _mm = (m instanceof MonitorModel) ? MonitorModel(m) : null; + Debugger.log('_cm:'+_cm, Debugger.CRITICAL,'viewUpdate','CanvasBranchView'); + Debugger.log('_mm:'+_mm, Debugger.CRITICAL,'viewUpdate','CanvasBranchView'); //register to recive updates form the model - _cm.addEventListener('viewUpdate',this); - MovieClipUtils.doLater(Proxy.create(this,draw)); + if(_cm != null) _cm.addEventListener('viewUpdate',this); + if(_mm != null) _mm.addEventListener('viewUpdate',this); + + MovieClipUtils.doLater(Proxy.create(this, draw)); } /** - * set the container refernce to the window holding the dialog + * set the container reference to the window holding the dialog */ function set container(value:MovieClip){ _container = value; @@ -129,45 +138,56 @@ * @param event */ public function viewUpdate(event:Object):Void{ - Debugger.log('Recived an Event dispather UPDATE!, updateType:'+event.updateType+', target'+event.target,4,'viewUpdate','CanvasBranchView'); - var cm:CanvasModel = event.target; - + Debugger.log('Received an Event dispatcher UPDATE!, updateType:'+event.updateType+', target'+event.target,4,'viewUpdate','CanvasBranchView'); + var _model = event.target; + Debugger.log("_model instance: " + (_model instanceof MonitorModel), Debugger.CRITICAL, "viewUpdate", "CanvasBranchView"); + + var isCanvasModel:Boolean; + var isMonitorModel:Boolean; + isMonitorModel = model instanceof MonitorModel; + isCanvasModel = model instanceof CanvasModel; + + + Debugger.log('isCanvasModel:'+isCanvasModel, Debugger.CRITICAL,'viewUpdate','CanvasBranchView'); + Debugger.log('isMonitorModel:'+isMonitorModel,Debugger.CRITICAL,'viewUpdate','CanvasBranchView'); + + switch (event.updateType){ case 'POSITION': - setPosition(cm); + setPosition(_model); break; case 'SIZE': - setSize(cm); + setSize(_model); break; case 'ADD_SEQUENCE': - addSequence(event.data,cm); + addSequence(event.data, _model); break; case 'DRAW_ACTIVITY_SEQ': - drawActivity(event.data,cm); + drawActivity(event.data, _model); break; case 'HIDE_ACTIVITY': - hideActivity(event.data,cm); + hideActivity(event.data, _model); break; case 'REMOVE_ACTIVITY': - removeActivity(event.data,cm); + removeActivity(event.data, _model); break; case 'DRAW_TRANSITION': - drawTransition(event.data,cm); + drawTransition(event.data, _model); break; case 'DRAW_BRANCH': - drawBranch(event.data,cm); + drawBranch(event.data, _model); break; case 'REMOVE_BRANCH': - removeBranch(event.data,cm); + removeBranch(event.data, _model); break; case 'HIDE_TRANSITION': - hideTransition(event.data,cm); + hideTransition(event.data, _model); break; case 'REMOVE_TRANSITION': - removeTransition(event.data,cm); + removeTransition(event.data, _model); break; case 'SELECTED_ITEM': - highlightActivity(cm); + highlightActivity(_model); break; case 'SET_ACTIVE': Debugger.log('setting activie :' + event.updateType + " event.data: " + event.data + " condition: " + (event.data == this),Debugger.CRITICAL,'update','org.lamsfoundation.lams.CanvasBranchView'); @@ -206,7 +226,7 @@ bkg_pnl.useHandCursor = false; - close_mc = content.attachMovie("collapse_mc", "close_mc", DepthManager.kTop); + close_mc = content.attachMovie("collapse_mc", "close_mc", DepthManager.kTopmost); close_mc.onRelease = Proxy.create(this, localOnRelease); close_mc.onReleaseOutside = Proxy.create(this, localOnReleaseOutside); @@ -215,7 +235,7 @@ loadSequenceActivities(); setStyles(); - setSize(_cm); + setSize(model); if(_open) { this._visible = true; @@ -238,17 +258,18 @@ } private function loadSequenceActivities() { - var sequenceActs:Array = _cm.getCanvas().ddm.getComplexActivityChildren(activity.activityUIID); + var sequenceActs:Array = (model instanceof CanvasModel) ? _cm.getCanvas().ddm.getComplexActivityChildren(activity.activityUIID) : _mm.getMonitor().ddm.getComplexActivityChildren(activity.activityUIID); Debugger.log("Sequence Activities length: " + sequenceActs.length, Debugger.CRITICAL, "loadSequenceActivities", "CanvasBranchView"); for(var i=0; i 15){ toolTitle = toolTitle.substr(0, 15)+"..." } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/Monitor.as =================================================================== diff -u -r60db93c549c96bad95e890f34add10c4ef9d3d2e -rc5ce2369b6232db2c25a966f7873f695ebf6e485 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/Monitor.as (.../Monitor.as) (revision 60db93c549c96bad95e890f34add10c4ef9d3d2e) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/Monitor.as (.../Monitor.as) (revision c5ce2369b6232db2c25a966f7873f695ebf6e485) @@ -28,6 +28,7 @@ import org.lamsfoundation.lams.authoring.DesignDataModel; import org.lamsfoundation.lams.authoring.Activity; import org.lamsfoundation.lams.authoring.cv.CanvasActivity; +import org.lamsfoundation.lams.authoring.br.CanvasBranchView; import org.lamsfoundation.lams.common.ui.*; import org.lamsfoundation.lams.common.util.*; import org.lamsfoundation.lams.common.dict.*; @@ -435,6 +436,26 @@ } } + public function openBranchView(ba, visible:Boolean){ + + var cx:Number = ba._x + ba.getVisibleWidth()/2; + var cy:Number = ba._y + ba.getVisibleHeight()/2; + var isVisible:Boolean = (visible == null) ? true : visible; + + var _branchView_mc:MovieClip = MovieClip(monitorView.getMonitorTabView()).createChildAtDepth("canvasBranchView", DepthManager.kTop, {_x: cx, _y: cy, _canvasBranchingActivity:ba, _open:isVisible}); + var branchView:CanvasBranchView = CanvasBranchView(_branchView_mc); + branchView.init(monitorModel,undefined); + + //Add listener to view so that we know when it's loaded + branchView.addEventListener('load', Proxy.create(this,viewLoaded)); + + monitorModel.addObserver(branchView); + + ba.branchView = branchView; + + } + + /** * Open the Help page for the selected Tool (Canvas) Activity * Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as =================================================================== diff -u -rfdfbd30f964c4c55025249ddf7d0277b66af3806 -rc5ce2369b6232db2c25a966f7873f695ebf6e485 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision fdfbd30f964c4c55025249ddf7d0277b66af3806) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision c5ce2369b6232db2c25a966f7873f695ebf6e485) @@ -39,6 +39,8 @@ import mx.core.* import mx.events.* import mx.effects.* + +import org.lamsfoundation.lams.authoring.cv.CanvasModel; /** * Controller for the sequence library @@ -281,42 +283,50 @@ } public function activityDoubleClick(ca:Object, forTabView:String, learnerID:Number):Void{ - var _learnerID:Number; - var URLToSend:String; - setBusy() - if (forTabView == "MonitorTabView"){ - URLToSend = _root.serverURL+_root.monitoringURL+'getActivityMonitorURL&activityID='+ca.activity.activityID+'&lessonID='+_root.lessonID; - URLToSend += '&contentFolderID='+MonitorModel(getModel()).getSequence().contentFolderID - }else { - if (learnerID != null){ - _learnerID = learnerID; + Debugger.log("ca.activity.isBranchingActivity(): "+ca.activity.isBranchingActivity(), Debugger.GEN, "activityDoubleClick", "MonitorController"); + if(ca.activity.isBranchingActivity()) { + _monitorModel.openBranchActivityContent(ca, true); + } + else { + + var _learnerID:Number; + var URLToSend:String; + setBusy(); + + if (forTabView == "MonitorTabView"){ + URLToSend = _root.serverURL+_root.monitoringURL+'getActivityMonitorURL&activityID='+ca.activity.activityID+'&lessonID='+_root.lessonID; + URLToSend += '&contentFolderID='+MonitorModel(getModel()).getSequence().contentFolderID }else { - _learnerID = ca.learnerID; + if (learnerID != null){ + _learnerID = learnerID; + }else { + _learnerID = ca.learnerID; + } + if (forTabView == "MonitorTabViewLearner"){ + Debugger.log('activityDoubleClick CanvasActivity:'+ca.activityID,Debugger.GEN,'activityDoubleClick','MonitorController'); + URLToSend = _root.serverURL+_root.monitoringURL+'getLearnerActivityURL&activityID='+ca.activityID+'&userID='+_learnerID+'&lessonID='+_root.lessonID; + }else { + URLToSend = _root.serverURL+_root.monitoringURL+'getLearnerActivityURL&activityID='+ca.activity.activityID+'&userID='+_learnerID+'&lessonID='+_root.lessonID; + } } - if (forTabView == "MonitorTabViewLearner"){ - Debugger.log('activityDoubleClick CanvasActivity:'+ca.activityID,Debugger.GEN,'activityDoubleClick','MonitorController'); - URLToSend = _root.serverURL+_root.monitoringURL+'getLearnerActivityURL&activityID='+ca.activityID+'&userID='+_learnerID+'&lessonID='+_root.lessonID; - }else { - URLToSend = _root.serverURL+_root.monitoringURL+'getLearnerActivityURL&activityID='+ca.activity.activityID+'&userID='+_learnerID+'&lessonID='+_root.lessonID; - } - } - Debugger.log('Opening url (ca.activityID) :'+URLToSend+" Opening url (ca.activityID)"+URLToSend,Debugger.CRITICAL,'openToolActivityContent','MonitorModel'); - if (forTabView != "MonitorTabView" && forTabView != "MonitorTabViewLearner"){ - if (ca.activityStatus == undefined){ - - var alertMSG:String = Dictionary.getValue('al_doubleclick_todoactivity',[ca.learnerName, ca.activity.title]); - getURL("javascript:alert('"+alertMSG+"');"); - + Debugger.log('Opening url (ca.activityID) :'+URLToSend+" Opening url (ca.activityID)"+URLToSend,Debugger.CRITICAL,'openToolActivityContent','MonitorModel'); + if (forTabView != "MonitorTabView" && forTabView != "MonitorTabViewLearner"){ + if (ca.activityStatus == undefined){ + + var alertMSG:String = Dictionary.getValue('al_doubleclick_todoactivity',[ca.learnerName, ca.activity.title]); + getURL("javascript:alert('"+alertMSG+"');"); + + }else { + JsPopup.getInstance().launchPopupWindow(URLToSend, 'MonitorLearnerActivity', 600, 800, true, true, false, false, false); + } }else { JsPopup.getInstance().launchPopupWindow(URLToSend, 'MonitorLearnerActivity', 600, 800, true, true, false, false, false); } - }else { - JsPopup.getInstance().launchPopupWindow(URLToSend, 'MonitorLearnerActivity', 600, 800, true, true, false, false, false); - } - clearBusy() + clearBusy(); + } } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as =================================================================== diff -u -r60db93c549c96bad95e890f34add10c4ef9d3d2e -rc5ce2369b6232db2c25a966f7873f695ebf6e485 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision 60db93c549c96bad95e890f34add10c4ef9d3d2e) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision c5ce2369b6232db2c25a966f7873f695ebf6e485) @@ -23,10 +23,14 @@ import org.lamsfoundation.lams.monitoring.*; import org.lamsfoundation.lams.monitoring.mv.*; -import org.lamsfoundation.lams.authoring.Activity; +import org.lamsfoundation.lams.authoring.Activity; +import org.lamsfoundation.lams.authoring.Branch; +import org.lamsfoundation.lams.authoring.BranchingActivity; import org.lamsfoundation.lams.authoring.Transition import org.lamsfoundation.lams.authoring.GateActivity; -import org.lamsfoundation.lams.authoring.DesignDataModel; +import org.lamsfoundation.lams.authoring.DesignDataModel; +import org.lamsfoundation.lams.authoring.SequenceActivity; +import org.lamsfoundation.lams.authoring.br.BranchConnector; import org.lamsfoundation.lams.common.Sequence; import org.lamsfoundation.lams.common.util.Observable; import org.lamsfoundation.lams.common.util.*; @@ -71,6 +75,9 @@ private var _monitor:Monitor; private var _selectedItem:Object; // the currently selected thing - could be activity, transition etc. private var _prevSelectedItem:Object; + + private var _currentBranchingActivity:Object; + private var _activeView:Object; // add model data private var _activeSeq:Sequence; @@ -121,6 +128,8 @@ isDesignDrawn = true; _staffLoaded = false; _learnersLoaded = false; + + _activeView = null; _activitiesDisplayed = new Hashtable("_activitiesDisplayed"); _transitionsDisplayed = new Hashtable("_transitionsDisplayed"); @@ -359,14 +368,13 @@ * @return */ public function clearDesign(tabID:Number, learner:Object){ - if (learner != null || learner != undefined){ var drawLearner:Object = new Object(); drawLearner = learner; } //porobbably need to get a bit more granular - Debugger.log('Running',Debugger.GEN,'refreshDesign','MonitorModel'); + Debugger.log('Running',Debugger.GEN,'clearDesign','MonitorModel'); var mmActivity_keys:Array = _activitiesDisplayed.keys(); var longest = mmActivity_keys.length; @@ -377,7 +385,7 @@ //loop through and remove activities for(var i=0;i 0 || ddm_activity.parentUIID > 0) && !isDesignDrawn){ broadcastViewUpdate("DRAW_ACTIVITY", ddm_activity, tabID, drawLearner); } else { @@ -677,6 +730,23 @@ getURL(URLToSend,"_blank"); } + public function openBranchActivityContent(ba, visible:Boolean):Void { + currentBranchingActivity = ba; + Debugger.log("openBranchActivityContent invoked", Debugger.CRITICAL, "openBranchActivityContent", "MonitorModel"); + if(visible == null) visible = true; + Debugger.log("visible: " + visible, Debugger.CRITICAL, "openBranchActivityContent", "MonitorModel"); + + if(ba.branchView != null) { + Debugger.log("INIF openBranchActivityContent", Debugger.CRITICAL, "openBranchActivityContent", "MonitorModel"); + activeView = (visible) ? ba.branchView : activeView; + // for monitoring activeView = ba.branchView + ba.branchView.setOpen(visible); + ba.branchView.open(); + } else { + Debugger.log("INELSE openBranchActivityContent", Debugger.CRITICAL, "openBranchActivityContent", "MonitorModel"); + _monitor.openBranchView(currentBranchingActivity, visible); } + } + public function setDirty(){ _isDirty = true; @@ -947,6 +1017,14 @@ public function set isDragging (newisDragging:Boolean):Void{ _isDragging = newisDragging; } - + + public function get currentBranchingActivity():Object { + return _currentBranchingActivity; + } + + public function set currentBranchingActivity(a:Object) { + _currentBranchingActivity = a; + } + } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as =================================================================== diff -u -r9d7f901384476ec697233e55cbd7ab643a0f3bfd -rc5ce2369b6232db2c25a966f7873f695ebf6e485 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as (.../MonitorView.as) (revision 9d7f901384476ec697233e55cbd7ab643a0f3bfd) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as (.../MonitorView.as) (revision c5ce2369b6232db2c25a966f7873f695ebf6e485) @@ -401,6 +401,10 @@ return lessonTabView; } + public function getMonitorTabView():MonitorTabView{ + return monitorTabView; + } + /** * Overrides method in abstract view to ensure correct type of controller is returned * @usage Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/MonitorTabView.as =================================================================== diff -u -r6d8883713aa3ab5ee1cd28432101f70cfbf0d201 -rc5ce2369b6232db2c25a966f7873f695ebf6e485 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/MonitorTabView.as (.../MonitorTabView.as) (revision 6d8883713aa3ab5ee1cd28432101f70cfbf0d201) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/MonitorTabView.as (.../MonitorTabView.as) (revision c5ce2369b6232db2c25a966f7873f695ebf6e485) @@ -215,6 +215,10 @@ mm.drawDesign(infoObj.tabID); } + break; + case 'SET_ACTIVE' : + Debugger.log('setting active :' + infoObj.updateType + " event.data: " + infoObj.data + " condition: " + (infoObj.data == this),Debugger.CRITICAL,'update','org.lamsfoundation.lams.MonitorTabView'); + transparentCover._visible = (infoObj.data == this) ? false : true; break; default : Debugger.log('unknown update type :' + infoObj.updateType,Debugger.CRITICAL,'update','org.lamsfoundation.lams.MonitorTabView'); @@ -231,12 +235,17 @@ gridLayer = this.createEmptyMovieClip("_gridLayer_mc", this.getNextHighestDepth()); - transitionLayer = this.createEmptyMovieClip("_transitionLayer_mc", this.getNextHighestDepth()); + transitionLayer = this.createEmptyMovieClip("_transitionLayer_mc", this.getNextHighestDepth()); + //branchLayer = this.createEmptyMovieClip("_branchLayer_mc", this.getNextHighestDepth()); + activityComplexLayer = this.createEmptyMovieClip("_activityComplexLayer_mc", this.getNextHighestDepth()); activityLayer = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); // creates learner icon on initial draw _learnerContainer_mc = this.createEmptyMovieClip("_learnerContainer_mc", this.getNextHighestDepth()); + + transparentCover = this.attachMovie("Panel", "_transparentCover_mc", this.getNextHighestDepth(), {_visible: false, enabled: false, _alpha: 50}); + transparentCover.onPress = null; var s:Object = mm.getSize(); @@ -340,7 +349,7 @@ var children:Array = mm.getMonitor().ddm.getComplexActivityChildren(a.activityUIID); newActivity_mc = activityComplexLayer.createChildAtDepth("CanvasOptionalActivity",DepthManager.kBottom,{_activity:a,_children:children,_monitorController:mc,_monitorTabView:mtv,fromModuleTab:"monitorMonitorTab",learnerContainer:_learnerContainer_mc}); } else if(a.isBranchingActivity()){ - var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kBottom,{_activity:a,_monitorController:mc, _monitorView:mtv, _module:"monitoring", learnerContainer:_learnerContainer_mc}); + var newActivity_mc = activityLayer.createChildAtDepth("CanvasActivity",DepthManager.kBottom,{_activity:a,_monitorController:mc, _monitorView:mtv, _module:"monitoring", learnerContainer:_learnerContainer_mc, setupBranchView:true}); } else { Debugger.log('The activity:'+a.title+','+a.activityUIID+' is of unknown type, it cannot be drawn',Debugger.CRITICAL,'drawActivity','MonitorTabView'); } @@ -416,6 +425,8 @@ private function drawTransition(t:Transition,mm:MonitorModel):Boolean{ var mtv = MonitorTabView(this); var mc = getController(); + + if(!isActivityOnLayer(mm.activitiesDisplayed.get(t.fromUIID), this.activityLayer) && !isActivityOnLayer(mm.activitiesDisplayed.get(t.toUIID), this.activityLayer)) return false; var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("MonitorTransition",DepthManager.kTop,{_transition:t,_monitorController:mc,_monitorTabView:mtv}); @@ -457,6 +468,7 @@ private function setStyles():Void{ var styleObj = _tm.getStyleObject('CanvasPanel'); bkg_pnl.setStyle('styleName',styleObj); + transparentCover.setStyle('styleName', styleObj); } /** @@ -482,7 +494,7 @@ bkg_pnl.setSize(cvWidth,cvHeight); bkg_pnl.redraw(true); - + //Create the grid. The grid is re-drawn each time the canvas is resized. var grid_mc = Grid.drawGrid(gridLayer,Math.round(cvWidth),Math.round(cvHeight), V_GAP, H_GAP); gridLayer.redraw(true);