Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as =================================================================== RCS file: /usr/local/cvsroot/lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as,v diff -u -r1.4 -r1.5 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as 19 Jul 2007 03:45:48 -0000 1.4 +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/SequenceActivity.as 17 Aug 2007 08:06:17 -0000 1.5 @@ -57,8 +57,8 @@ */ public function populateFromDTO(dto:Object){ super.populateFromDTO(dto); - if(StringUtils.isWDDXNull(dto.firstActivityUIID)) _firstActivityUIID = null; - else _firstActivityUIID = dto.firstActivityUIID; + if(StringUtils.isWDDXNull(dto.defaultActivityUIID)) _firstActivityUIID = null; + else _firstActivityUIID = dto.defaultActivityUIID; } /** @@ -71,7 +71,7 @@ public function toData():Object{ var dto:Object = super.toData(); if(_firstActivityUIID == null) { return null; } - else { dto.firstActivityUIID = _firstActivityUIID; } + else { dto.defaultActivityUIID = _firstActivityUIID; } return dto; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolActivity.as =================================================================== RCS file: /usr/local/cvsroot/lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolActivity.as,v diff -u -r1.1 -r1.2 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolActivity.as 5 Jun 2007 02:58:14 -0000 1.1 +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolActivity.as 17 Aug 2007 08:06:17 -0000 1.2 @@ -39,26 +39,29 @@ private var _contributeURL:String; private var _helpURL:String; - - private var _toolDisplayName:String; private var _toolSignature:String; //generated by the LAMS server, has to do a round trip to populate them private var _toolContentID:Number; private var _toolID:Number; + //flags to tell UI which to disable private var _supportsContribute:Boolean; private var _supportsDefineLater:Boolean; private var _supportsModeration:Boolean; private var _supportsRunOffline:Boolean; + private var _toolOutputDefinitions:Hashtable; + function ToolActivity(activityUIID:Number){ super(activityUIID); _objectType = "ToolActivity"; _activityTypeID = TOOL_ACTIVITY_TYPE; + _toolOutputDefinitions = new Hashtable("_toolOutputDefinitions"); + //assign default values: } @@ -163,11 +166,10 @@ _supportsDefineLater = dto.supportsDefineLater; _supportsModeration = dto.supportsRunOffline activityToolContentID = _toolContentID; - trace("Tool "+_toolDisplayName +" has ToolContent ID: "+_toolContentID) + //maybe return isValid(); } - //to data for serialising: public function toData():Object{ @@ -189,6 +191,7 @@ dto.supportsModeration = (_supportsModeration!=null) ? _supportsModeration: Config.BOOLEAN_NULL_VALUE; dto.supportsRunOffline = (_supportsRunOffline!=null) ? _supportsRunOffline: Config.BOOLEAN_NULL_VALUE; */ + return dto; } @@ -242,6 +245,14 @@ } + public function addDefinition(dto:Object):Void { + _toolOutputDefinitions.put(dto.name, dto); + } + + public function removeDefinition(key:String):Void { + _toolOutputDefinitions.remove(key); + } + //GETTERS + SETTERS /** Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputBranchActivityEntry.as =================================================================== RCS file: /usr/local/cvsroot/lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputBranchActivityEntry.as,v diff -u -r1.1 -r1.2 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputBranchActivityEntry.as 14 Aug 2007 08:02:47 -0000 1.1 +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputBranchActivityEntry.as 17 Aug 2007 08:06:17 -0000 1.2 @@ -29,16 +29,13 @@ * @version 2.1 **/ class ToolOutputBranchActivityEntry extends BranchActivityEntry { + + private var _condition:ToolOutputCondition; - private var _orderId:Number; - private var _name:String; - private var _type:String; - private var _startValue:Object; - private var _endValue:Object; - private var _exactMatchValue:Object; - - function ToolOutputBranchActivityEntry(entryID:Number, entryUIID:Number, sequenceActivity:SequenceActivity, branchingActivity:BranchingActivity){ - super(entryID, entryUIID, sequenceActivity, branchingActivity); + function ToolOutputBranchActivityEntry(entryID:Number, entryUIID:Number, condition:ToolOutputCondition, sequenceActivity:SequenceActivity, branchingActivity:BranchingActivity){ + super(entryID, entryUIID, sequenceActivity, branchingActivity); + + _condition = condition; } public function toData():Object { @@ -48,63 +45,18 @@ if(this.entryUIID) dto.entryUIID = this.entryUIID; if(this.sequenceActivity) dto.sequenceActivityUIID = this.sequenceActivity.activityUIID; if(this.branchingActivity) dto.branchingActivityUIID = this.branchingActivity.activityUIID; + + if(this.condition) dto = _condition.addConditionData(dto); - if(_orderId) dto.orderId = _orderId; - if(_name) dto.name = _name; - if(_type) dto.type = _type; - if(_startValue) dto.startValue = _startValue; - if(_endValue) dto.endValue = _endValue; - if(_exactMatchValue) dto.exactMatchValue = _exactMatchValue; - return dto; } - public function set name(a:String) { - _name = a; - } + public function get condition():ToolOutputCondition { + return _condition; + } + + public function set condition(a:ToolOutputCondition):Void { + _condition = a; + } - public function get name():String { - return _name; - } - - public function set type(a:String) { - _type = a; - } - - public function get type():String { - return _type; - } - - public function set startValue(a:Object) { - _startValue = a; - } - - public function get startValue():Object { - return _startValue; - } - - public function set endValue(a:Object) { - _endValue = a; - } - - public function get endValue():Object { - return _endValue; - } - - public function set exactMatchValue(a:Object) { - _exactMatchValue = a; - } - - public function get exactMatchValue():Object { - return _exactMatchValue; - } - - public function set orderId(a:Number) { - _orderId = a; - } - - public function get orderId():Number { - return _orderId; - } - } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputCondition.as =================================================================== RCS file: /usr/local/cvsroot/lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputCondition.as,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/ToolOutputCondition.as 17 Aug 2007 08:06:17 -0000 1.1 @@ -0,0 +1,130 @@ +/*************************************************************************** + * 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.*; + +/** + * + * @author Mitchell Seaton + * @version 2.1 + **/ +class ToolOutputCondition { + + private var _conditionID:Number; + private var _conditionUIID:Number; + + private var _orderId:Number; + private var _name:String; + private var _type:String; + private var _startValue:Object; + private var _endValue:Object; + private var _exactMatchValue:Object; + + function ToolOutputCondition(conditionID:Number, conditionUIID:Number, name:String, type:String, startValue:Object, endValue:Object, exactMatchValue:Object){ + _conditionID = conditionID; + _conditionUIID = conditionUIID; + _orderId = 1; + _name = name; + _startValue = startValue; + _endValue = endValue; + _exactMatchValue = exactMatchValue; + } + + public function addConditionData(dto:Object):Object { + + if(_orderId) dto.orderId = _orderId; + if(_name) dto.name = _name; + if(_type) dto.type = _type; + if(_startValue) dto.startValue = _startValue; + if(_endValue) dto.endValue = _endValue; + if(_exactMatchValue) dto.exactMatchValue = _exactMatchValue; + + return dto; + } + + public function set conditionID(a:Number) { + _conditionID = a; + } + + public function get conditionID():Number { + return _conditionID; + } + + public function set conditionUIID(a:Number) { + _conditionUIID = a; + } + + public function get conditionUIID():Number { + return _conditionUIID; + } + + public function set name(a:String) { + _name = a; + } + + public function get name():String { + return _name; + } + + public function set type(a:String) { + _type = a; + } + + public function get type():String { + return _type; + } + + public function set startValue(a:Object) { + _startValue = a; + } + + public function get startValue():Object { + return _startValue; + } + + public function set endValue(a:Object) { + _endValue = a; + } + + public function get endValue():Object { + return _endValue; + } + + public function set exactMatchValue(a:Object) { + _exactMatchValue = a; + } + + public function get exactMatchValue():Object { + return _exactMatchValue; + } + + public function set orderId(a:Number) { + _orderId = a; + } + + public function get orderId():Number { + return _orderId; + } + + +} \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchMappingDialog.as =================================================================== RCS file: /usr/local/cvsroot/lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchMappingDialog.as,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/BranchMappingDialog.as 17 Aug 2007 08:06:18 -0000 1.1 @@ -0,0 +1,205 @@ +/*************************************************************************** + * 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.ws.* +import org.lamsfoundation.lams.common.ui.* +import org.lamsfoundation.lams.common.util.* +import org.lamsfoundation.lams.common.dict.* +import org.lamsfoundation.lams.common.style.* + +import org.lamsfoundation.lams.authoring.* +import org.lamsfoundation.lams.authoring.br.* + +import mx.controls.* +import mx.utils.* +import mx.managers.* +import mx.events.* + +/* +* Branch Mapping Dialog window +* @author Mitchell Seaton +*/ +class BranchMappingDialog extends MovieClip implements Dialog { + + //References to components + clips + private var _container:MovieClip; //The container window that holds the dialog + + private var _primary:Array; + private var _secondary:Array; + + private var close_btn:Button; // Close button + + private var add_match_btn:Button; + private var remove_match_btn:Button; + + private var panel:MovieClip; //The underlaying panel base + + private var primary_lst:List; + private var secondary_lst:List; + + private var primary_lst_lbl:Label; // Group and Branches list labels + private var secondary_lst_lbl:Label; + private var match_dgd_lbl:Label; + + private var match_dgd:DataGrid; // Group-Branch Matching listbox + + private var fm:FocusManager; //Reference to focus manager + private var themeManager:ThemeManager; //Theme manager + private var app:Application; + + //Dimensions for resizing + private var xOkOffset:Number; + private var yOkOffset:Number; + private var xCancelOffset:Number; + private var yCancelOffset:Number; + + //These are defined so that the compiler can 'see' the events that are added at runtime by EventDispatcher + private var dispatchEvent:Function; + public var addEventListener:Function; + public var removeEventListener:Function; + + /** + * constructor + */ + function GroupMatchingDialog(){ + //Set up this class to use the Flash event delegation model + EventDispatcher.initialize(this); + + app = Application.getInstance(); + + //Create a clip that will wait a frame before dispatching init to give components time to setup + this.onEnterFrame = init; + } + + /** + * Called a frame after movie attached to allow components to initialise + */ + private function init():Void{ + //Delete the enterframe dispatcher + delete this.onEnterFrame; + + //set the reference to the StyleManager + themeManager = ThemeManager.getInstance(); + + //Set the text for buttons + close_btn.label = "Done"; + + //get focus manager + set focus to OK button, focus manager is available to all components through getFocusManager + fm = _container.getFocusManager(); + fm.enabled = true; + + //work out offsets from bottom RHS of panel + xOkOffset = panel._width - close_btn._x; + yOkOffset = panel._height - close_btn._y; + + //Register as listener with StyleManager and set Styles + themeManager.addEventListener('themeChanged',this); + setStyles(); + } + + /** + * Event fired by StyleManager class to notify listeners that Theme has changed + * it is up to listeners to then query Style Manager for relevant style info + */ + public function themeChanged(event:Object):Void{ + if(event.type=='themeChanged') { + //Theme has changed so update objects to reflect new styles + setStyles(); + }else { + Debugger.log('themeChanged event broadcast with an object.type not equal to "themeChanged"',Debugger.CRITICAL,'themeChanged','org.lamsfoundation.lams.WorkspaceDialog'); + } + } + + /** + * Called on initialisation and themeChanged event handler + */ + private function setStyles(){ + //LFWindow, goes first to prevent being overwritten with inherited styles. + var styleObj = themeManager.getStyleObject('LFWindow'); + _container.setStyle('styleName', styleObj); + + //Get the button style from the style manager and apply to both buttons + styleObj = themeManager.getStyleObject('button'); + close_btn.setStyle('styleName', styleObj); + add_match_btn.setStyle('styleName', styleObj); + remove_match_btn.setStyle('styleName', styleObj); + + + styleObj = themeManager.getStyleObject('CanvasPanel'); + panel.setStyle('styleName', styleObj); + + //Apply label style + styleObj = themeManager.getStyleObject('label'); + primary_lst_lbl.setStyle('styleName', styleObj); + secondary_lst_lbl.setStyle('styleName', styleObj); + match_dgd_lbl.setStyle('styleName', styleObj); + } + + /** + * Called by the OK button + */ + private function close(){ + Debugger.log('OK Clicked',Debugger.GEN,'ok','org.lamsfoundation.lams.GroupMatchingDialog'); + + //close popup + _container.deletePopUp(); + } + + /** + * Event dispatched by parent container when close button clicked + */ + public function click(e:Object):Void{ + e.target.deletePopUp(); + } + + + /** + * Main resize method, called by scrollpane container/parent + */ + public function setSize(w:Number,h:Number):Void{ + //Size the panel + panel.setSize(w,h); + + //Buttons + close_btn.move(w-xOkOffset,h-yOkOffset); + } + + //Gets+Sets + /** + * set the container refernce to the window holding the dialog + */ + function set container(value:MovieClip){ + _container = value; + } + + public function set primary(a:Array){ + _primary = a; + } + + public function set secondary(a:Array){ + _secondary = a; + } + +} \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/ConditionMatchingDialog.as =================================================================== RCS file: /usr/local/cvsroot/lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/ConditionMatchingDialog.as,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/ConditionMatchingDialog.as 17 Aug 2007 08:06:18 -0000 1.1 @@ -0,0 +1,253 @@ +/*************************************************************************** + * 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.ws.* +import org.lamsfoundation.lams.common.ui.* +import org.lamsfoundation.lams.common.util.* +import org.lamsfoundation.lams.common.dict.* +import org.lamsfoundation.lams.common.style.* + +import org.lamsfoundation.lams.authoring.* +import org.lamsfoundation.lams.authoring.br.* + +import mx.controls.* +import mx.controls.gridclasses.DataGridColumn; +import mx.utils.* +import mx.managers.* +import mx.events.* + +/* +* Tool-Output based Condition +* Matching Dialog window +* +* @author Mitchell Seaton +*/ +class ConditionMatchingDialog extends BranchMappingDialog { + + //References to components + clips + private var _branchingActivity:BranchingActivity; + + //These are defined so that the compiler can 'see' the events that are added at runtime by EventDispatcher + private var dispatchEvent:Function; + public var addEventListener:Function; + public var removeEventListener:Function; + + /** + * constructor + */ + function ConditionMatchingDialog(){ + super(); + + //Set up this class to use the Flash event delegation model + EventDispatcher.initialize(this); + + //Create a clip that will wait a frame before dispatching init to give components time to setup + this.onEnterFrame = init; + } + + /** + * Called a frame after movie attached to allow components to initialise + */ + private function init():Void{ + //Delete the enterframe dispatcher + delete this.onEnterFrame; + + //Set the labels + conditions_label.text = Dictionary.getValue('condmatch_dlg_cond_lst_lbl'); + branches_label.text = Dictionary.getValue('groupmatch_dlg_branches_lst_lbl'); + match_dgd_lbl.text = Dictionary.getValue('groupmatch_dlg_match_dgd_lbl'); + + //EVENTS + //Add event listeners for ok, cancel and close buttons + close_btn.addEventListener('click',Delegate.create(this, close)); + add_match_btn.addEventListener('click',Delegate.create(this, addMatch)); + remove_match_btn.addEventListener('click',Delegate.create(this, removeMatch)); + + //Assign Click (close button) and resize handlers + _container.addEventListener('click',this); + _container.addEventListener('size',this); + + //fire event to say we have loaded + _container.contentLoaded(); + } + + public function loadLists() { + Debugger.log("Loading Lists: branch length: " + branches.length, Debugger.CRITICAL, "loadLists", "ConditionMatchingDialog"); + Debugger.log("Loading Lists: branching act: " + _branchingActivity.activityUIID, Debugger.CRITICAL, "loadLists", "ConditionMatchingDialog"); + + conditions_lst.dataProvider = conditions; + conditions_lst.sortItemsBy("conditionUIID", Array.NUMERIC); + conditions_lst.labelField = "description"; + conditions_lst.hScrollPolicy = "on"; + conditions_lst.maxHPosition = 200; + + branches_lst.dataProvider = branches; + branches_lst.labelField = "sequenceName"; + branches_lst.hScrollPolicy = "on"; + branches_lst.maxHPosition = 200; + + var column_sequence:DataGridColumn = new DataGridColumn("sequenceName"); + column_sequence.headerText = "Branch"; + + var column_desc:DataGridColumn = new DataGridColumn("description"); + column_desc.headerText = "Condition"; + + match_dgd.addColumn(column_sequence); + match_dgd.addColumn(column_desc); + + var mappings = app.getCanvas().ddm.branchMappings.values(); + + for(var m in mappings) { + if(m instanceof ToolOutputBranchActivityEntry) { + match_dgd.addItem(mappings[m]); + removeCondition(mappings[m].condition); + } + } + } + + private function removeCondition(c:ToolOutputCondition) { + var indexList:Array = new Array(); + + for(var i=0; i 0) { + + for(var i=0; i 0) + _tool_output_match_btn.visible = v; + + if(_canvasModel.selectedItem.activity.toolActivityUIID != null) + _conditions_setup_btn.visible = v; + + if(e != null) { + toolActs_cmb.enabled = e; + _tool_output_match_btn.enabled = e; + _conditions_setup_btn.enabled = e; + } } private function showGroupBasedBranchingControls(v:Boolean, e:Boolean) { @@ -920,7 +961,6 @@ var ca = _canvasModel.selectedItem; var branches:Object = _canvasModel.getCanvas().ddm.getBranchesForActivityUIID(ca.activity.activityUIID); - Debugger.log("grouping UIID: " + ca.activity.groupingUIID, Debugger.CRITICAL, "showGroupBasedBranchingControls", "PIC*"); if(branches.myBranches.length > 0 && ca.activity.groupingUIID != null) { var grouping:Grouping = _canvasModel.getCanvas().ddm.getGroupingByUIID(ca.activity.groupingUIID); @@ -963,7 +1003,7 @@ private function onGroupMatchClick(evt:Object){ // open group to branch matching window - _app.dialog = PopUpManager.createPopUp(Application.root, LFWindow, true, {title:Dictionary.getValue('groupmatch_dlg_title_lbl'), closeButton:true, viewResize:false, scrollContentPath:'groupMatchDialog'}); + _app.dialog = PopUpManager.createPopUp(Application.root, LFWindow, true, {title:Dictionary.getValue('groupmatch_dlg_title_lbl'), closeButton:true, viewResize:false, scrollContentPath:'GroupMatchingDialog'}); _app.dialog.addEventListener('contentLoaded', Delegate.create(this, groupMatchDialogLoaded)); setModified(); @@ -976,7 +1016,34 @@ _app.dialog.addEventListener('contentLoaded', Delegate.create(this, GroupNamingDialogLoaded)); setModified(); + } + + private function onToolOutputMatchClick(evt:Object){ + + // show tool outputs to branch mappings dialog + var ta:ToolActivity = ToolActivity(_canvasModel.getCanvas().ddm.getActivityByUIID(_canvasModel.selectedItem.activity.toolActivityUIID)); + _canvasModel.getCanvas().getToolOutputDefinitions(ta); + + setModified(); + } + + private function onConditionsSetupClick(evt:Object){ + + // open group to branch matching window + //_app.dialog = PopUpManager.createPopUp(Application.root, LFWindow, true, {title:Dictionary.getValue('to_conditions_dlg_title_lbl'), closeButton:true, viewResize:false, scrollContentPath:'ToolOutputConditionsDialog'}); + //_app.dialog.addEventListener('contentLoaded', Delegate.create(this,ToolOutputConditionsDialogLoaded)); + Debugger.log("conditions button pressed", Debugger.CRITICAL, "onConditionsSetupClick", "PIC*"); + + setModified(); } + + private function ToolOutputConditionsDialogLoaded(evt:Object) { + var ta:ToolActivity = ToolActivity(_canvasModel.getCanvas().ddm.getActivityByUIID(_canvasModel.selectedItem.activity.toolActivityUIID)); + evt.target.scrollContent.definitions = _canvasModel.getCanvas().getToolOutputDefinitions(ta); + + //evt.target.scrollContent.load(); + + } private function groupMatchDialogLoaded(evt:Object) { var branches:Object = _canvasModel.getCanvas().ddm.getBranchesForActivityUIID(_canvasModel.selectedItem.activity.activityUIID);