Index: lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceController.as =================================================================== diff -u -r2501a361c240d19d51f71b97bdf71e46c4e1417b -rd958eb2a84540694e141c76bac28249748de9d07 --- lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceController.as (.../WorkspaceController.as) (revision 2501a361c240d19d51f71b97bdf71e46c4e1417b) +++ lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceController.as (.../WorkspaceController.as) (revision d958eb2a84540694e141c76bac28249748de9d07) @@ -174,7 +174,11 @@ public function onTreeNodeChange (evt:Object){ Debugger.log('type::'+evt.type,Debugger.GEN,'onTreeNodeChange','org.lamsfoundation.lams.WorkspaceController'); var treeview = evt.target; - _workspaceModel.setSelectedTreeNode(treeview.selectedNode); + _workspaceModel.setSelectedTreeNode(treeview.selectedNode); + if(treeview.selectedNode.attributes.data.resourceType == _workspaceModel.RT_FOLDER) { + if(treeview.selectedNode.attributes.isOpen) { _workspaceModel.broadcastViewUpdate('CLOSE_FOLDER', treeview.selectedNode); } + else { forceNodeOpen(treeview.selectedNode); } + } } /** Index: lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceDialog.as =================================================================== diff -u -r0119b3e78a89cc6aec4923f3d6b47e849ea91135 -rd958eb2a84540694e141c76bac28249748de9d07 --- lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceDialog.as (.../WorkspaceDialog.as) (revision 0119b3e78a89cc6aec4923f3d6b47e849ea91135) +++ lams_common/src/flash/org/lamsfoundation/lams/common/ws/WorkspaceDialog.as (.../WorkspaceDialog.as) (revision d958eb2a84540694e141c76bac28249748de9d07) @@ -265,6 +265,9 @@ case 'OPEN_FOLDER' : openFolder(event.data, wm, false); break; + case 'CLOSE_FOLDER' : + closeFolder(event.data, wm); + break; case 'REFRESH_FOLDER' : refreshFolder(event.data, wm); break; @@ -335,6 +338,7 @@ private function openFolder(nodeToOpen:XMLNode, wm:WorkspaceModel){ Debugger.log('openFolder:'+nodeToOpen ,Debugger.GEN,'openFolder','org.lamsfoundation.lams.ws.WorkspaceDialog'); //open the node + nodeToOpen.attributes.isOpen = true; treeview.setIsOpen(nodeToOpen,true); Debugger.log('openFolder forced:'+wm.isForced() ,Debugger.GEN,'openFolder','org.lamsfoundation.lams.ws.WorkspaceDialog'); @@ -353,7 +357,27 @@ refreshTree(); } - /** + + /** + * Closes the folder node + * + * @usage + * @param nodeToClose + * @param wm + * @return + */ + + private function closeFolder(nodeToClose:XMLNode, wm:WorkspaceModel){ + Debugger.log('closeFolder:'+nodeToClose ,Debugger.GEN,'closeFolder','org.lamsfoundation.lams.ws.WorkspaceDialog'); + + // close the node + nodeToClose.attributes.isOpen = false; + treeview.setIsOpen(nodeToClose, false); + + refreshTree(); + } + + /** * Closes folder, then sends openEvent to controller * @usage * @param nodeToOpen @@ -932,7 +956,7 @@ treeview.addEventListener("nodeOpen", Delegate.create(_workspaceController, _workspaceController.onTreeNodeOpen)); treeview.addEventListener("nodeClose", Delegate.create(_workspaceController, _workspaceController.onTreeNodeClose)); treeview.addEventListener("change", Delegate.create(_workspaceController, _workspaceController.onTreeNodeChange)); - + //location_dnd.addEventListener('double_click', dndList); //location_dnd.addEventListener('drag_start', dndList); //location_dnd.addEventListener('drag_fail', dndList);