1b3ed4f497bcd39c9b3de7581a0a7daf3ef6daaa
braney
  Mon Oct 7 15:48:44 2013 -0700
let people put a treeImage in the composite matrix (for snakes)
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 39d6502..9cb5fac 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -7122,30 +7122,39 @@
 if (!subgroupingExists(parentTdb,"view"))
     puts("(<A HREF=\"../goldenPath/help/multiView.html\" title='Help on subtrack selection' "
          "TARGET=_BLANK>help</A>)\n");
 
 puts("<BR>\n");
 
 if (membersForAll->abcCount > 0 && membersForAll->filters == FALSE)
     {
     displayABCdimensions(db,cart,parentTdb,subtrackRefList,membersForAll);
     }
 
 // Could have been just filterComposite. Must be an X or Y dimension
 if (dimensionX == NULL && dimensionY == NULL)
     return FALSE;
 
+// if there is a treeimage, put it beside the matrix in the green box
+char *treeImage =  trackDbSetting(parentTdb, "treeImage");
+if (treeImage != NULL)
+    {
+    printf("<TABLE class='greenBox matrix' ><TD>");
+    printf("<TABLE cellspacing=0 style='background-color:%s;'>\n",
+       COLOR_BG_ALTDEFAULT);
+    }
+else
     printf("<TABLE class='greenBox matrix' cellspacing=0 style='background-color:%s;'>\n",
        COLOR_BG_ALTDEFAULT);
 
 (void)matrixXheadings(db,parentTdb,membersForAll,TRUE);
 
 // Now the Y by X matrix
 int cntX=0,cntY=0;
 for (ixY = 0; ixY < sizeOfY; ixY++)
     {
     if (dimensionY == NULL || (dimensionY->tags[ixY]))
         {
         cntY++;
         assert(!dimensionY || ixY < dimensionY->count);
         printf("<TR ALIGN=CENTER>");
 
@@ -7226,30 +7235,34 @@
                         printf("<TD class='matCell %s'></TD>\n",
                                (dimensionX ? dimensionX->tags[ixX] : dimensionY->tags[ixY]));
                     }
                 }
             }
         if (dimensionX && cntX>MATRIX_RIGHT_BUTTONS_AFTER)
             matrixYheadings(db,parentTdb, membersForAll,ixY,FALSE);
         puts("</TR>\n");
         }
     }
 if (dimensionY && cntY>MATRIX_BOTTOM_BUTTONS_AFTER)
     matrixXheadings(db,parentTdb,membersForAll,FALSE);
 
 puts("</TD></TR></TABLE>");
 
+// if there is a treeImage, put it beside the matrix
+if (treeImage != NULL)
+    printf("</TD><TD><IMG SRC=\"%s\"></TD></TABLE>", treeImage);
+
 // If any filter additional filter composites, they can be added at the end.
 compositeUiByFilter(db, cart, parentTdb, formName);
 
 return TRUE;
 }
 
 static boolean compositeUiAllButtons(char *db, struct cart *cart, struct trackDb *parentTdb,
                                      char *formName)
 // UI for composite tracks: all/none buttons only (as opposed to matrix or lots of buttons
 {
 if (trackDbCountDescendantLeaves(parentTdb) <= 1)
     return FALSE;
 
 if (dimensionsExist(parentTdb))
     return FALSE;