9a71b6794ec910cbb1864bcba0a910d3995fadc3
tdreszer
  Tue Oct 25 17:38:23 2011 -0700
Long overdue checkboxes added to superTrack config page.
diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index dd460f3..547c293 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -2370,59 +2370,102 @@
 #ifdef UNUSED
 static boolean isInTrackList(struct trackDb *tdbList, struct trackDb *target)
 /* Return TRUE if target is in tdbList. */
 {
 struct trackDb *tdb;
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
     if (tdb == target)
         return TRUE;
 return FALSE;
 }
 #endif /* UNUSED */
 
 void superTrackUi(struct trackDb *superTdb, struct trackDb *tdbList)
 /* List tracks in this collection, with visibility controls and UI links */
 {
-printf("<P><TABLE CELLPADDING=2>");
+#define SUPERS_WITH_CHECKBOXES
+#ifdef SUPERS_WITH_CHECKBOXES
+#define PM_BUTTON_GLOBAL "<IMG height=18 width=18 onclick=\"superT.plusMinus(%s);\" id='btn_%s' src='../images/%s'>"
+#define    BUTTON_PLUS_ALL_GLOBAL()  printf(PM_BUTTON_GLOBAL,"true",  "plus_all",   "add_sm.gif")
+#define    BUTTON_MINUS_ALL_GLOBAL() printf(PM_BUTTON_GLOBAL,"false","minus_all","remove_sm.gif")
+jsIncludeFile("hui.js",NULL);
+#endif///def SUPERS_WITH_CHECKBOXES
+printf("\n<P><TABLE CELLPADDING=2>");
 tdbRefSortPrioritiesFromCart(cart, &superTdb->children);
 struct slRef *childRef;
 for (childRef = superTdb->children; childRef != NULL; childRef = childRef->next)
     {
     struct trackDb *tdb = childRef->val;
+    enum trackVisibility tv = tvHide;
+    #ifdef SUPERS_WITH_CHECKBOXES
+    if (childRef == superTdb->children) // first time through
+        {
+        printf("\n<TR><TD NOWRAP colspan=2>");
+        BUTTON_PLUS_ALL_GLOBAL();
+        BUTTON_MINUS_ALL_GLOBAL();
+        printf("&nbsp;<B>All</B><BR>");
+        printf("</TD></TR>\n");
+        }
+    printf("<TR><TD NOWRAP>");
+    if (!tdbIsDownloadsOnly(tdb))
+        {
+        tv = hTvFromString(cartUsualString(cart, tdb->track,hStringFromTv(tdb->visibility)));
+        // Don't use cheapCgi code... no name and no boolshad... just js
+        printf("<INPUT TYPE=CHECKBOX id='%s' onchange='superT.childChecked(this);'%s>",tdb->track,(tv != tvHide?" CHECKED":""));
+        hTvDropDownClassVisOnlyAndExtra(tdb->track, tv, tdb->canPack,
+                                        (tv == tvHide ? "hiddenText":"normalText"),
+                                        trackDbSetting(tdb, "onlyVisibility"),
+                                        "onchange='superT.selChanged(this);'");
+        printf("</TD>\n<TD>");
+        printf("<A HREF='%s?%s=%u&c=%s&g=%s' onclick='return superT.submitAndLink(this);'>%s</A>&nbsp;",
+                (tdbIsDownloadsOnly(tdb)? hgFileUiName(): hgTrackUiName()),
+                cartSessionVarName(), cartSessionId(cart),
+                chromosome, cgiEncode(tdb->track), tdb->shortLabel);
+        }
+    else
+        {
+        printf("<A HREF='%s?%s=%u&g=%s'>Downloads</A>",
+                hgFileUiName(),cartSessionVarName(), cartSessionId(cart), cgiEncode(tdb->track));
+        printf("</TD>\n<TD>");
+        printf("%s&nbsp;",tdb->shortLabel);
+        }
+    printf("</TD>\n");
+    #else///ifndef SUPERS_WITH_CHECKBOXES
     printf("<TR><TD NOWRAP>");
     if (tdbIsDownloadsOnly(tdb))
         printf("%s&nbsp;",tdb->shortLabel);
     else
         printf("<A HREF='%s?%s=%u&c=%s&g=%s'>%s</A>&nbsp;",
                 (tdbIsDownloadsOnly(tdb)? hgFileUiName(): hgTrackUiName()),
                 cartSessionVarName(), cartSessionId(cart),
                 chromosome, cgiEncode(tdb->track), tdb->shortLabel);
     printf("</TD><TD>");
     if (tdbIsDownloadsOnly(tdb))
         {
         printf("<A HREF='%s?%s=%u&g=%s'>Downloads</A>",
                 hgFileUiName(),cartSessionVarName(), cartSessionId(cart), cgiEncode(tdb->track));
         }
     else
         {
         enum trackVisibility tv =
                         hTvFromString(cartUsualString(cart, tdb->track,
                                                 hStringFromTv(tdb->visibility)));
         hTvDropDownClassVisOnly(tdb->track, tv, tdb->canPack,
                                 tv == tvHide ?  "hiddenText" : "normalText",
                                 trackDbSetting(tdb, "onlyVisibility"));
         }
+    #endif///ndef SUPERS_WITH_CHECKBOXES
     printf("<TD>%s", tdb->longLabel);
     char *dataVersion = trackDbSetting(tdb, "dataVersion");
     if (dataVersion)
         printf("&nbsp&nbsp;<EM style='color:#666666; font-size:smaller;'>%s</EM>", dataVersion);
     printf("</TD></TR>");
     }
 printf("</TABLE>");
 }
 
 void previewLinks(char *db, struct trackDb *tdb)
 /* Informational messages about preview browser (ENCODE tracks only) */
 {
 if (trackDbSetting(tdb, "wgEncode") != NULL)
     {
     if (hIsPreviewHost())