dc82af67c9ab8eb936e75eeabbc49a09a735e726
braney
  Thu Sep 21 18:16:33 2017 -0700
allow multiple node delete, no contextmenu on "available tracks", open
selected nodes

diff --git src/hg/js/hgCollection.js src/hg/js/hgCollection.js
index 68b1ac3..2aa6553 100644
--- src/hg/js/hgCollection.js
+++ src/hg/js/hgCollection.js
@@ -3,31 +3,32 @@
 // Copyright (C) 2017 The Regents of the University of California
 
 var hgCollection = (function() {
     var names = []; // a list of names that have been used
     var selectedNode = "collectionList"; // keep track of id of selected row
     var selectedTree = "collectionList"; // keep track of id of selected row
     var $tracks;  // the #tracks object
     var trees = [];
 
     function currentCollectionItems(node) {
         // populate the menu for the currentCollection tree
         var items = {
             deleteItem: { // The "delete" menu item
                 label: "Delete",
                 action: function () {
-                    $(selectedTree).jstree( "delete_node", selectedNode);
+                    var nodes = $(selectedTree).jstree( "get_selected");
+                    $(selectedTree).jstree( "delete_node", nodes);
                 }
             }
         };
 
         // can't delete root
         if ($(node).attr('parent') === '#')
             delete items.deleteItem;
 
         return items;
         }
 
     function selectElements (selectableContainer, elementsToSelect) {
         // add unselecting class to all elements in the styleboard canvas except the ones to select
         $(".ui-selected", selectableContainer).not(elementsToSelect).removeClass("ui-selected").addClass("ui-unselecting");
 
@@ -50,30 +51,31 @@
         selectedNode = node;
         selectedTree = tree;
 
         if (type == 'view') 
             $("#viewFuncDiv").show();
         else
             $("#viewFuncDiv").hide();
 
         $("#CustomTrackOptions").show();
         $("#viewFunc").val(viewFunc);
         $("#customName").val(name);
         $("#customDescription").val(description);
         $("#customVis").val(visibility);
         $("#customColorInput").val(color);
         $("#customColorPicker").spectrum("set", color);
+        $(selectedTree).jstree("open_node", selectedNode);
    }
 
     function selectTreeNode(evt, data)             {
         selectNode(evt.target, data.node);
     }
 
     function checkCallback( operation, node, node_parent, node_position, more) {
         // called during a drag and drop action to see if the target is droppable
         if ((operation === "copy_node") ||  (operation === "move_node")) {
             if (node_parent.li_attr.class !== "folder")
                 return false;
         }
 
         return true;
     }
@@ -302,31 +304,31 @@
 
             $(newTree).jstree({
                'plugins' : ['dnd', 'conditionalselect', 'contextmenu'],
                'contextmenu': { "items" : currentCollectionItems},
                'dnd': {
                 "check_callback" : checkCallback,
                 }
             });
             recordNames(newTree);
             trees[this.id] = $(newTree);
            $(newTree).on("select_node.jstree", selectTreeNode);
         });
 
         treeDiv=$('#tracks');
         treeDiv.jstree({
-               'plugins' : ['dnd', 'conditionalselect', 'contextmenu'],
+               'plugins' : ['dnd', 'conditionalselect'],
                'dnd': {
                 "check_callback" : checkCallback,
                'always_copy' : true,
                 is_draggable: isDraggable,
                },
                'core' :  {
                 "check_callback" : checkCallback
             }
         });
 
 
         var firstElement = $("#collectionList li").first();
         selectElements($("#collectionList"), firstElement) ;
     }